diff --git a/404.html b/404.html index 676b831f6..cbfee2210 100644 --- a/404.html +++ b/404.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/404/index.html b/404/index.html index dee74ad10..843c1c37a 100644 --- a/404/index.html +++ b/404/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ 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 559866038..10151c7ec 100644 --- a/_gatsby/slices/_gatsby-scripts-1.html +++ b/_gatsby/slices/_gatsby-scripts-1.html @@ -4,4 +4,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/about/index.html b/about/index.html index 7ac89ef04..548ef21e1 100644 --- a/about/index.html +++ b/about/index.html @@ -457,4 +457,4 @@

Prof. Dr. Jörg Lässig

> window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/atom.xml b/atom.xml index 8e77b9944..d05874712 100644 --- a/atom.xml +++ b/atom.xml @@ -2,7 +2,7 @@ https://jug-gr.de/ - <updated>2024-01-11T07:34:42.539Z</updated> + <updated>2024-01-16T22:41:22.955Z</updated> <generator>https://github.com/jpmonette/feed</generator> <link rel="alternate" href="https://jug-gr.de/"/> <link rel="self" href="https://jug-gr.de/atom.xml"/> diff --git a/commons-6a5a6cacbb3d8d41013b.js b/commons-6a5a6cacbb3d8d41013b.js new file mode 100644 index 000000000..c3e2acc55 --- /dev/null +++ b/commons-6a5a6cacbb3d8d41013b.js @@ -0,0 +1,3 @@ +/*! For license information please see commons-6a5a6cacbb3d8d41013b.js.LICENSE.txt */ +(self.webpackChunkjug_goerlitz=self.webpackChunkjug_goerlitz||[]).push([[351],{8697:function(t,e,n){var a={"./35c3-congress-everywhere.png":8700,"./WJAX_2019_266x145.jpg":6724,"./banner_javaland_2023.jpg":4366,"./banner_jax_2023.jpg":9101,"./banner_jug_saxony_day_2022.png":9438,"./banner_wjax_2022.jpg":8337,"./entwickler_tutorials_logo.jpg":8799,"./grillen.jpg":4661,"./icon.png":9435,"./javaland_2019_banner.jpg":4652,"./javaland_2020_banner.jpg":8735,"./javaland_2022_banner.jpg":6365,"./javaland_2024_banner.jpg":2295,"./javaland_2024_banner_big.jpg":4059,"./jax19_banner.jpg":1974,"./jax20_banner.jpg":6846,"./jax21_banner.jpg":2713,"./jax22_banner.jpg":7425,"./jax_banner.png":6956,"./jdd_2022_banner.png":6331,"./jdd_2023_banner.jpg":8618,"./kickerking_logo.jpg":2607,"./lernfabrik.png":6462,"./logo.png":5921,"./mitp_logo.jpeg":2377,"./mitp_logo_gross.png":3087,"./persons/christian_kuemmel.jpg":2186,"./persons/christoph_menzel.png":9429,"./persons/damian_dudziec.png":4160,"./persons/daniel_fesenmeyer.jpg":2779,"./persons/daniel_sulyok.jpg":2258,"./persons/denny.israel.jpg":9880,"./persons/gerrit_grunwald.jpg":650,"./persons/gregor_trefs.png":3887,"./persons/hannes_kretschmer.jpg":8807,"./persons/hendrik_ebbers.png":7883,"./persons/jens_leuschner.jpg":6775,"./persons/joerg_laessig.jpg":9284,"./persons/lars_roewekamp.png":1266,"./persons/maik_wagner.jpg":6459,"./persons/manuel_mauky.jpg":3022,"./persons/marco_gotthans.png":1096,"./persons/mariusz_zienkiewicz.jpg":1226,"./persons/markus_kett.png":258,"./persons/markus_ullrich.jpg":9773,"./persons/markus_weiland.jpg":3545,"./persons/marlene_knoche.jpg":1905,"./persons/max_wielsch.jpg":8662,"./persons/michael_hunger.png":8294,"./persons/michael_simons.jpg":6371,"./persons/nico_foerster.jpg":3030,"./persons/oliver_drotbohm.png":6664,"./persons/patryk_lewandowski.jpg":6345,"./persons/pawel_adaszewski.jpg":7102,"./persons/roland_weisleder.jpg":369,"./persons/sergej_tihonov.jpg":3955,"./persons/simon_roloff.png":2947,"./persons/stefan_bley.jpg":3017,"./persons/stefan_zoerner.jpg":7489,"./persons/stefan_zoerner_2.jpg":5267,"./persons/stephan_strehler.jpg":1946,"./persons/sven_hoffmann.jpg":8576,"./persons/thilo_frotscher.jpg":1626,"./persons/uwe_manteuffel.jpg":4984,"./persons/wolfgang_weigend.jpg":4189,"./posters/plakat_2016_01.png":1941,"./posters/plakat_2016_03.png":2601,"./posters/plakat_2016_05.png":6337,"./posters/plakat_2016_09.png":6223,"./posters/plakat_2016_11.png":3895,"./posters/plakat_2017_01.png":7738,"./posters/plakat_2017_02.png":9474,"./posters/plakat_2017_03.png":6059,"./posters/plakat_2017_04.png":4076,"./posters/plakat_2017_05.png":4087,"./posters/plakat_2017_07.png":2195,"./posters/plakat_2017_10.png":7189,"./posters/plakat_2017_11.png":4092,"./posters/plakat_2018_01.png":1584,"./posters/plakat_2018_02.png":4466,"./posters/plakat_2018_03.png":1440,"./posters/plakat_2018_04.png":3211,"./posters/plakat_2018_05.png":9378,"./posters/plakat_2018_06.png":2757,"./posters/plakat_2018_09.png":4566,"./posters/plakat_2018_11.png":6686,"./posters/plakat_2019_01.png":4633,"./posters/plakat_2019_02.png":3019,"./posters/plakat_2019_03.png":4843,"./posters/plakat_2019_04.png":3792,"./posters/plakat_2019_05.png":9108,"./posters/plakat_2019_06.png":56,"./posters/plakat_2019_11.png":5172,"./posters/plakat_2020-01.png":6619,"./posters/plakat_2020_04.png":6328,"./posters/plakat_2020_07.png":3302,"./posters/plakat_2020_11.png":6436,"./posters/plakat_2021_01.png":6807,"./posters/plakat_2021_06.png":2318,"./posters/plakat_2022_06.png":4884,"./posters/plakat_2022_10.png":4832,"./posters/plakat_2022_11.png":5646,"./posters/plakat_2023_01.png":8325,"./posters/plakat_2023_02.png":1461,"./posters/plakat_2023_03.png":9750,"./posters/plakat_2023_04.png":7035,"./posters/plakat_2023_05.png":9907,"./posters/plakat_2023_06.png":509,"./posters/plakat_2023_09.png":5871,"./posters/plakat_2023_10.png":4881,"./posters/plakat_2023_11.png":2820,"./posters/plakat_2024_01.png":8797,"./sands_logo.png":6702,"./saxsys_logo.jpg":3155,"./wjax21_banner.jpg":2753,"./zeiss-logo-rgb.png":2398};function r(t){var e=i(t);return n(e)}function i(t){if(!n.o(a,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return a[t]}r.keys=function(){return Object.keys(a)},r.resolve=i,t.exports=r,r.id=8697},7904:function(t,e,n){"use strict";var a=function(){},r={},i={},o=null,s={mark:a,measure:a};try{"undefined"!=typeof window&&(r=window),"undefined"!=typeof document&&(i=document),"undefined"!=typeof MutationObserver&&(o=MutationObserver),"undefined"!=typeof performance&&(s=performance)}catch($t){}var c=(r.navigator||{}).userAgent,l=void 0===c?"":c,f=r,u=i,d=o,p=s,m=!!f.document,g=!!u.documentElement&&!!u.head&&"function"==typeof u.addEventListener&&"function"==typeof u.createElement,b=~l.indexOf("MSIE")||~l.indexOf("Trident/"),v="svg-inline--fa",h="data-fa-i2svg",y="data-fa-pseudo-element",x=function(){try{return!0}catch($t){return!1}}(),k=[1,2,3,4,5,6,7,8,9,10],w=k.concat([11,12,13,14,15,16,17,18,19,20]),A=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],E=["xs","sm","lg","fw","ul","li","border","pull-left","pull-right","spin","pulse","rotate-90","rotate-180","rotate-270","flip-horizontal","flip-vertical","stack","stack-1x","stack-2x","inverse","layers","layers-text","layers-counter"].concat(k.map((function(t){return t+"x"}))).concat(w.map((function(t){return"w-"+t}))),O=function(){function t(t,e){for(var n=0;n<e.length;n++){var a=e[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,a.key,a)}}return function(e,n,a){return n&&t(e.prototype,n),a&&t(e,a),e}}(),j=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(t[a]=n[a])}return t},N=function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)},_=f.FontAwesomeConfig||{},C=Object.keys(_),S=j({familyPrefix:"fa",replacementClass:v,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0},_);S.autoReplaceSvg||(S.observeMutations=!1);var M=j({},S);function z(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.asNewDefault,a=void 0!==n&&n,r=Object.keys(M),i=a?function(t){return~r.indexOf(t)&&!~C.indexOf(t)}:function(t){return~r.indexOf(t)};Object.keys(t).forEach((function(e){i(e)&&(M[e]=t[e])}))}f.FontAwesomeConfig=M;var T=f||{};T.___FONT_AWESOME___||(T.___FONT_AWESOME___={}),T.___FONT_AWESOME___.styles||(T.___FONT_AWESOME___.styles={}),T.___FONT_AWESOME___.hooks||(T.___FONT_AWESOME___.hooks={}),T.___FONT_AWESOME___.shims||(T.___FONT_AWESOME___.shims=[]);var P=T.___FONT_AWESOME___,L=[],I=!1;g&&((I=(u.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(u.readyState))||u.addEventListener("DOMContentLoaded",(function t(){u.removeEventListener("DOMContentLoaded",t),I=1,L.map((function(t){return t()}))})));var R=16,F={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function K(t){if(t&&g){var e=u.createElement("style");e.setAttribute("type","text/css"),e.innerHTML=t;for(var n=u.head.childNodes,a=null,r=n.length-1;r>-1;r--){var i=n[r],o=(i.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(o)>-1&&(a=i)}return u.head.insertBefore(e,a),t}}var D=0;function B(){return++D}function Z(t){for(var e=[],n=(t||[]).length>>>0;n--;)e[n]=t[n];return e}function U(t){return t.classList?Z(t.classList):(t.getAttribute("class")||"").split(" ").filter((function(t){return t}))}function W(t,e){var n,a=e.split("-"),r=a[0],i=a.slice(1).join("-");return r!==t||""===i||(n=i,~E.indexOf(n))?null:i}function X(t){return(""+t).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">")}function V(t){return Object.keys(t||{}).reduce((function(e,n){return e+(n+": ")+t[n]+";"}),"")}function Y(t){return t.size!==F.size||t.x!==F.x||t.y!==F.y||t.rotate!==F.rotate||t.flipX||t.flipY}function H(t){var e=t.transform,n=t.containerWidth,a=t.iconWidth;return{outer:{transform:"translate("+n/2+" 256)"},inner:{transform:"translate("+32*e.x+", "+32*e.y+") "+" "+("scale("+e.size/16*(e.flipX?-1:1)+", "+e.size/16*(e.flipY?-1:1)+") ")+" "+("rotate("+e.rotate+" 0 0)")},path:{transform:"translate("+a/2*-1+" -256)"}}}var q={x:0,y:0,width:"100%",height:"100%"};function G(t){var e=t.icons,n=e.main,a=e.mask,r=t.prefix,i=t.iconName,o=t.transform,s=t.symbol,c=t.title,l=t.extra,f=t.watchable,u=void 0!==f&&f,d=a.found?a:n,p=d.width,m=d.height,g="fa-w-"+Math.ceil(p/m*16),b=[M.replacementClass,i?M.familyPrefix+"-"+i:"",g].concat(l.classes).join(" "),v={children:[],attributes:j({},l.attributes,{"data-prefix":r,"data-icon":i,class:b,role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 "+p+" "+m})};u&&(v.attributes[h]=""),c&&v.children.push({tag:"title",attributes:{id:v.attributes["aria-labelledby"]||"title-"+B()},children:[c]});var y=j({},v,{prefix:r,iconName:i,main:n,mask:a,transform:o,symbol:s,styles:l.styles}),x=a.found&&n.found?function(t){var e=t.children,n=t.attributes,a=t.main,r=t.mask,i=t.transform,o=a.width,s=a.icon,c=r.width,l=r.icon,f=H({transform:i,containerWidth:c,iconWidth:o}),u={tag:"rect",attributes:j({},q,{fill:"white"})},d={tag:"g",attributes:j({},f.inner),children:[{tag:"path",attributes:j({},s.attributes,f.path,{fill:"black"})}]},p={tag:"g",attributes:j({},f.outer),children:[d]},m="mask-"+B(),g="clip-"+B(),b={tag:"defs",children:[{tag:"clipPath",attributes:{id:g},children:[l]},{tag:"mask",attributes:j({},q,{id:m,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[u,p]}]};return e.push(b,{tag:"rect",attributes:j({fill:"currentColor","clip-path":"url(#"+g+")",mask:"url(#"+m+")"},q)}),{children:e,attributes:n}}(y):function(t){var e=t.children,n=t.attributes,a=t.main,r=t.transform,i=V(t.styles);if(i.length>0&&(n.style=i),Y(r)){var o=H({transform:r,containerWidth:a.width,iconWidth:a.width});e.push({tag:"g",attributes:j({},o.outer),children:[{tag:"g",attributes:j({},o.inner),children:[{tag:a.icon.tag,children:a.icon.children,attributes:j({},a.icon.attributes,o.path)}]}]})}else e.push(a.icon);return{children:e,attributes:n}}(y),k=x.children,w=x.attributes;return y.children=k,y.attributes=w,s?function(t){var e=t.prefix,n=t.iconName,a=t.children,r=t.attributes,i=t.symbol,o=!0===i?e+"-"+M.familyPrefix+"-"+n:i;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:j({},r,{id:o}),children:a}]}]}(y):function(t){var e=t.children,n=t.main,a=t.mask,r=t.attributes,i=t.styles,o=t.transform;if(Y(o)&&n.found&&!a.found){var s={x:n.width/n.height/2,y:.5};r.style=V(j({},i,{"transform-origin":s.x+o.x/16+"em "+(s.y+o.y/16)+"em"}))}return[{tag:"svg",attributes:r,children:e}]}(y)}function Q(t){var e=t.content,n=t.width,a=t.height,r=t.transform,i=t.title,o=t.extra,s=t.watchable,c=void 0!==s&&s,l=j({},o.attributes,i?{title:i}:{},{class:o.classes.join(" ")});c&&(l[h]="");var f=j({},o.styles);Y(r)&&(f.transform=function(t){var e=t.transform,n=t.width,a=void 0===n?16:n,r=t.height,i=void 0===r?16:r,o=t.startCentered,s=void 0!==o&&o,c="";return c+=s&&b?"translate("+(e.x/R-a/2)+"em, "+(e.y/R-i/2)+"em) ":s?"translate(calc(-50% + "+e.x/R+"em), calc(-50% + "+e.y/R+"em)) ":"translate("+e.x/R+"em, "+e.y/R+"em) ",c+="scale("+e.size/R*(e.flipX?-1:1)+", "+e.size/R*(e.flipY?-1:1)+") ",c+"rotate("+e.rotate+"deg) "}({transform:r,startCentered:!0,width:n,height:a}),f["-webkit-transform"]=f.transform);var u=V(f);u.length>0&&(l.style=u);var d=[];return d.push({tag:"span",attributes:l,children:[e]}),i&&d.push({tag:"span",attributes:{class:"sr-only"},children:[i]}),d}var J=function(){},$=M.measurePerformance&&p&&p.mark&&p.measure?p:{mark:J,measure:J},tt='FA "5.0.13"',et=function(t){$.mark(tt+" "+t+" ends"),$.measure(tt+" "+t,tt+" "+t+" begins",tt+" "+t+" ends")},nt=function(t){return $.mark(tt+" "+t+" begins"),function(){return et(t)}},at=function(t,e,n,a){var r,i,o,s=Object.keys(t),c=s.length,l=void 0!==a?function(t,e){return function(n,a,r,i){return t.call(e,n,a,r,i)}}(e,a):e;for(void 0===n?(r=1,o=t[s[0]]):(r=0,o=n);r<c;r++)o=l(o,t[i=s[r]],i,t);return o},rt=P.styles,it=P.shims,ot={},st={},ct={},lt=function(){var t=function(t){return at(rt,(function(e,n,a){return e[a]=at(n,t,{}),e}),{})};ot=t((function(t,e,n){return t[e[3]]=n,t})),st=t((function(t,e,n){var a=e[2];return t[n]=n,a.forEach((function(e){t[e]=n})),t}));var e="far"in rt;ct=at(it,(function(t,n){var a=n[0],r=n[1],i=n[2];return"far"!==r||e||(r="fas"),t[a]={prefix:r,iconName:i},t}),{})};lt();var ft=P.styles;function ut(t){return t.reduce((function(t,e){var n=W(M.familyPrefix,e);if(ft[e])t.prefix=e;else if(n){var a="fa"===t.prefix?ct[n]||{prefix:null,iconName:null}:{};t.iconName=a.iconName||n,t.prefix=a.prefix||t.prefix}else e!==M.replacementClass&&0!==e.indexOf("fa-w-")&&t.rest.push(e);return t}),{prefix:null,iconName:null,rest:[]})}function dt(t,e,n){if(t&&t[e]&&t[e][n])return{prefix:e,iconName:n,icon:t[e][n]}}function pt(t){var e=t.tag,n=t.attributes,a=void 0===n?{}:n,r=t.children,i=void 0===r?[]:r;return"string"==typeof t?X(t):"<"+e+" "+function(t){return Object.keys(t||{}).reduce((function(e,n){return e+(n+'="')+X(t[n])+'" '}),"").trim()}(a)+">"+i.map(pt).join("")+"</"+e+">"}var mt=function(){};function gt(t){return"string"==typeof(t.getAttribute?t.getAttribute(h):null)}var bt={replace:function(t){var e=t[0],n=t[1].map((function(t){return pt(t)})).join("\n");if(e.parentNode&&e.outerHTML)e.outerHTML=n+(M.keepOriginalSource&&"svg"!==e.tagName.toLowerCase()?"\x3c!-- "+e.outerHTML+" --\x3e":"");else if(e.parentNode){var a=document.createElement("span");e.parentNode.replaceChild(a,e),a.outerHTML=n}},nest:function(t){var e=t[0],n=t[1];if(~U(e).indexOf(M.replacementClass))return bt.replace(t);var a=new RegExp(M.familyPrefix+"-.*");delete n[0].attributes.style;var r=n[0].attributes.class.split(" ").reduce((function(t,e){return e===M.replacementClass||e.match(a)?t.toSvg.push(e):t.toNode.push(e),t}),{toNode:[],toSvg:[]});n[0].attributes.class=r.toSvg.join(" ");var i=n.map((function(t){return pt(t)})).join("\n");e.setAttribute("class",r.toNode.join(" ")),e.setAttribute(h,""),e.innerHTML=i}};function vt(t,e){var n="function"==typeof e?e:mt;0===t.length?n():(f.requestAnimationFrame||function(t){return t()})((function(){var e=!0===M.autoReplaceSvg?bt.replace:bt[M.autoReplaceSvg]||bt.replace,a=nt("mutate");t.map(e),a(),n()}))}var ht=!1;var yt=null;var xt=function(t){var e,n,a=t.getAttribute("data-prefix"),r=t.getAttribute("data-icon"),i=void 0!==t.innerText?t.innerText.trim():"",o=ut(U(t));return a&&r&&(o.prefix=a,o.iconName=r),o.prefix&&i.length>1?o.iconName=(e=o.prefix,n=t.innerText,st[e][n]):o.prefix&&1===i.length&&(o.iconName=function(t,e){return ot[t][e]}(o.prefix,function(t){for(var e="",n=0;n<t.length;n++)e+=("000"+t.charCodeAt(n).toString(16)).slice(-4);return e}(t.innerText))),o},kt=function(t){var e={size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0};return t?t.toLowerCase().split(" ").reduce((function(t,e){var n=e.toLowerCase().split("-"),a=n[0],r=n.slice(1).join("-");if(a&&"h"===r)return t.flipX=!0,t;if(a&&"v"===r)return t.flipY=!0,t;if(r=parseFloat(r),isNaN(r))return t;switch(a){case"grow":t.size=t.size+r;break;case"shrink":t.size=t.size-r;break;case"left":t.x=t.x-r;break;case"right":t.x=t.x+r;break;case"up":t.y=t.y-r;break;case"down":t.y=t.y+r;break;case"rotate":t.rotate=t.rotate+r}return t}),e):e};function wt(t){var e=xt(t),n=e.iconName,a=e.prefix,r=e.rest,i=function(t){var e=t.getAttribute("style"),n=[];return e&&(n=e.split(";").reduce((function(t,e){var n=e.split(":"),a=n[0],r=n.slice(1);return a&&r.length>0&&(t[a]=r.join(":").trim()),t}),{})),n}(t),o=function(t){return kt(t.getAttribute("data-fa-transform"))}(t),s=function(t){var e=t.getAttribute("data-fa-symbol");return null!==e&&(""===e||e)}(t),c=function(t){var e=Z(t.attributes).reduce((function(t,e){return"class"!==t.name&&"style"!==t.name&&(t[e.name]=e.value),t}),{}),n=t.getAttribute("title");return M.autoA11y&&(n?e["aria-labelledby"]=M.replacementClass+"-title-"+B():e["aria-hidden"]="true"),e}(t),l=function(t){var e=t.getAttribute("data-fa-mask");return e?ut(e.split(" ").map((function(t){return t.trim()}))):{prefix:null,iconName:null,rest:[]}}(t);return{iconName:n,title:t.getAttribute("title"),prefix:a,transform:o,symbol:s,mask:l,extra:{classes:r,styles:i,attributes:c}}}function At(t){this.name="MissingIcon",this.message=t||"Icon unavailable",this.stack=(new Error).stack}At.prototype=Object.create(Error.prototype),At.prototype.constructor=At;var Et={fill:"currentColor"},Ot={attributeType:"XML",repeatCount:"indefinite",dur:"2s"},jt={tag:"path",attributes:j({},Et,{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})},Nt=j({},Ot,{attributeName:"opacity"}),_t={tag:"g",children:[jt,{tag:"circle",attributes:j({},Et,{cx:"256",cy:"364",r:"28"}),children:[{tag:"animate",attributes:j({},Ot,{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:j({},Nt,{values:"1;0;1;1;0;1;"})}]},{tag:"path",attributes:j({},Et,{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:[{tag:"animate",attributes:j({},Nt,{values:"1;0;0;0;0;1;"})}]},{tag:"path",attributes:j({},Et,{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:j({},Nt,{values:"0;0;1;1;0;0;"})}]}]},Ct=P.styles,St="fa-layers-text",Mt=/Font Awesome 5 (Solid|Regular|Light|Brands)/,zt={Solid:"fas",Regular:"far",Light:"fal",Brands:"fab"};function Tt(t,e){var n={found:!1,width:512,height:512,icon:_t};if(t&&e&&Ct[e]&&Ct[e][t]){var a=Ct[e][t];n={found:!0,width:a[0],height:a[1],icon:{tag:"path",attributes:{fill:"currentColor",d:a.slice(4)[0]}}}}else if(t&&e&&!M.showMissingIcons)throw new At("Icon is missing for prefix "+e+" with icon name "+t);return n}function Pt(t){var e=wt(t);return~e.extra.classes.indexOf(St)?function(t,e){var n=e.title,a=e.transform,r=e.extra,i=null,o=null;if(b){var s=parseInt(getComputedStyle(t).fontSize,10),c=t.getBoundingClientRect();i=c.width/s,o=c.height/s}return M.autoA11y&&!n&&(r.attributes["aria-hidden"]="true"),[t,Q({content:t.innerHTML,width:i,height:o,transform:a,title:n,extra:r,watchable:!0})]}(t,e):function(t,e){var n=e.iconName,a=e.title,r=e.prefix,i=e.transform,o=e.symbol,s=e.mask,c=e.extra;return[t,G({icons:{main:Tt(n,r),mask:Tt(s.iconName,s.prefix)},prefix:r,iconName:n,transform:i,symbol:o,mask:s,title:a,extra:c,watchable:!0})]}(t,e)}function Lt(t){"function"==typeof t.remove?t.remove():t&&t.parentNode&&t.parentNode.removeChild(t)}function It(t){if(g){var e,n=nt("searchPseudoElements");e=function(){Z(t.querySelectorAll("*")).forEach((function(t){[":before",":after"].forEach((function(e){var n=f.getComputedStyle(t,e),a=n.getPropertyValue("font-family").match(Mt),r=Z(t.children).filter((function(t){return t.getAttribute(y)===e}))[0];if(r&&(r.nextSibling&&r.nextSibling.textContent.indexOf(y)>-1&&Lt(r.nextSibling),Lt(r),r=null),a&&!r){var i=n.getPropertyValue("content"),o=u.createElement("i");o.setAttribute("class",""+zt[a[1]]),o.setAttribute(y,e),o.innerText=3===i.length?i.substr(1,1):i,":before"===e?t.insertBefore(o,t.firstChild):t.appendChild(o)}}))}))},ht=!0,e(),ht=!1,n()}}function Rt(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(g){var n=u.documentElement.classList,a=function(t){return n.add("fontawesome-i2svg-"+t)},r=function(t){return n.remove("fontawesome-i2svg-"+t)},i=Object.keys(Ct),o=[".fa-layers-text:not([data-fa-i2svg])"].concat(i.map((function(t){return"."+t+":not(["+"data-fa-i2svg])"}))).join(", ");if(0!==o.length){var s=Z(t.querySelectorAll(o));if(s.length>0){a("pending"),r("complete");var c=nt("onTree"),l=s.reduce((function(t,e){try{var n=Pt(e);n&&t.push(n)}catch($t){x||$t instanceof At&&console.error($t)}return t}),[]);c(),vt(l,(function(){a("active"),a("complete"),r("pending"),"function"==typeof e&&e()}))}}}}function Ft(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=Pt(t);n&&vt([n],e)}var Kt=function(){var t=v,e=M.familyPrefix,n=M.replacementClass,a='svg:not(:root).svg-inline--fa {\n overflow: visible; }\n\n.svg-inline--fa {\n display: inline-block;\n font-size: inherit;\n height: 1em;\n overflow: visible;\n vertical-align: -.125em; }\n .svg-inline--fa.fa-lg {\n vertical-align: -.225em; }\n .svg-inline--fa.fa-w-1 {\n width: 0.0625em; }\n .svg-inline--fa.fa-w-2 {\n width: 0.125em; }\n .svg-inline--fa.fa-w-3 {\n width: 0.1875em; }\n .svg-inline--fa.fa-w-4 {\n width: 0.25em; }\n .svg-inline--fa.fa-w-5 {\n width: 0.3125em; }\n .svg-inline--fa.fa-w-6 {\n width: 0.375em; }\n .svg-inline--fa.fa-w-7 {\n width: 0.4375em; }\n .svg-inline--fa.fa-w-8 {\n width: 0.5em; }\n .svg-inline--fa.fa-w-9 {\n width: 0.5625em; }\n .svg-inline--fa.fa-w-10 {\n width: 0.625em; }\n .svg-inline--fa.fa-w-11 {\n width: 0.6875em; }\n .svg-inline--fa.fa-w-12 {\n width: 0.75em; }\n .svg-inline--fa.fa-w-13 {\n width: 0.8125em; }\n .svg-inline--fa.fa-w-14 {\n width: 0.875em; }\n .svg-inline--fa.fa-w-15 {\n width: 0.9375em; }\n .svg-inline--fa.fa-w-16 {\n width: 1em; }\n .svg-inline--fa.fa-w-17 {\n width: 1.0625em; }\n .svg-inline--fa.fa-w-18 {\n width: 1.125em; }\n .svg-inline--fa.fa-w-19 {\n width: 1.1875em; }\n .svg-inline--fa.fa-w-20 {\n width: 1.25em; }\n .svg-inline--fa.fa-pull-left {\n margin-right: .3em;\n width: auto; }\n .svg-inline--fa.fa-pull-right {\n margin-left: .3em;\n width: auto; }\n .svg-inline--fa.fa-border {\n height: 1.5em; }\n .svg-inline--fa.fa-li {\n width: 2em; }\n .svg-inline--fa.fa-fw {\n width: 1.25em; }\n\n.fa-layers svg.svg-inline--fa {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0; }\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -.125em;\n width: 1em; }\n .fa-layers svg.svg-inline--fa {\n -webkit-transform-origin: center center;\n transform-origin: center center; }\n\n.fa-layers-text, .fa-layers-counter {\n display: inline-block;\n position: absolute;\n text-align: center; }\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transform-origin: center center;\n transform-origin: center center; }\n\n.fa-layers-counter {\n background-color: #ff253a;\n border-radius: 1em;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n color: #fff;\n height: 1.5em;\n line-height: 1;\n max-width: 5em;\n min-width: 1.5em;\n overflow: hidden;\n padding: .25em;\n right: 0;\n text-overflow: ellipsis;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right; }\n\n.fa-layers-bottom-right {\n bottom: 0;\n right: 0;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom right;\n transform-origin: bottom right; }\n\n.fa-layers-bottom-left {\n bottom: 0;\n left: 0;\n right: auto;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom left;\n transform-origin: bottom left; }\n\n.fa-layers-top-right {\n right: 0;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right; }\n\n.fa-layers-top-left {\n left: 0;\n right: auto;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top left;\n transform-origin: top left; }\n\n.fa-lg {\n font-size: 1.33333em;\n line-height: 0.75em;\n vertical-align: -.0667em; }\n\n.fa-xs {\n font-size: .75em; }\n\n.fa-sm {\n font-size: .875em; }\n\n.fa-1x {\n font-size: 1em; }\n\n.fa-2x {\n font-size: 2em; }\n\n.fa-3x {\n font-size: 3em; }\n\n.fa-4x {\n font-size: 4em; }\n\n.fa-5x {\n font-size: 5em; }\n\n.fa-6x {\n font-size: 6em; }\n\n.fa-7x {\n font-size: 7em; }\n\n.fa-8x {\n font-size: 8em; }\n\n.fa-9x {\n font-size: 9em; }\n\n.fa-10x {\n font-size: 10em; }\n\n.fa-fw {\n text-align: center;\n width: 1.25em; }\n\n.fa-ul {\n list-style-type: none;\n margin-left: 2.5em;\n padding-left: 0; }\n .fa-ul > li {\n position: relative; }\n\n.fa-li {\n left: -2em;\n position: absolute;\n text-align: center;\n width: 2em;\n line-height: inherit; }\n\n.fa-border {\n border: solid 0.08em #eee;\n border-radius: .1em;\n padding: .2em .25em .15em; }\n\n.fa-pull-left {\n float: left; }\n\n.fa-pull-right {\n float: right; }\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n margin-right: .3em; }\n\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n margin-left: .3em; }\n\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear; }\n\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8); }\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg); }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg); } }\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg); }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg); } }\n\n.fa-rotate-90 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg); }\n\n.fa-rotate-180 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg); }\n\n.fa-rotate-270 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg); }\n\n.fa-flip-horizontal {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1); }\n\n.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1); }\n\n.fa-flip-horizontal.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1); }\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical {\n -webkit-filter: none;\n filter: none; }\n\n.fa-stack {\n display: inline-block;\n height: 2em;\n position: relative;\n width: 2em; }\n\n.fa-stack-1x,\n.fa-stack-2x {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0; }\n\n.svg-inline--fa.fa-stack-1x {\n height: 1em;\n width: 1em; }\n\n.svg-inline--fa.fa-stack-2x {\n height: 2em;\n width: 2em; }\n\n.fa-inverse {\n color: #fff; }\n\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px; }\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n clip: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n position: static;\n width: auto; }\n';if("fa"!==e||n!==t){var r=new RegExp("\\.fa\\-","g"),i=new RegExp("\\."+t,"g");a=a.replace(r,"."+e+"-").replace(i,"."+n)}return a};function Dt(t,e){var n=Object.keys(e).reduce((function(t,n){var a=e[n];return!!a.icon?t[a.iconName]=a.icon:t[n]=a,t}),{});"function"==typeof P.hooks.addPack?P.hooks.addPack(t,n):P.styles[t]=j({},P.styles[t]||{},n),"fas"===t&&Dt("fa",e)}var Bt=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.definitions={}}return O(t,[{key:"add",value:function(){for(var t=this,e=arguments.length,n=Array(e),a=0;a<e;a++)n[a]=arguments[a];var r=n.reduce(this._pullDefinitions,{});Object.keys(r).forEach((function(e){t.definitions[e]=j({},t.definitions[e]||{},r[e]),Dt(e,r[e])}))}},{key:"reset",value:function(){this.definitions={}}},{key:"_pullDefinitions",value:function(t,e){var n=e.prefix&&e.iconName&&e.icon?{0:e}:e;return Object.keys(n).map((function(e){var a=n[e],r=a.prefix,i=a.iconName,o=a.icon;t[r]||(t[r]={}),t[r][i]=o})),t}}]),t}();function Zt(t){return{found:!0,width:t[0],height:t[1],icon:{tag:"path",attributes:{fill:"currentColor",d:t.slice(4)[0]}}}}var Ut=!1;function Wt(){M.autoAddCss&&(Ut||K(Kt()),Ut=!0)}function Xt(t,e){return Object.defineProperty(t,"abstract",{get:e}),Object.defineProperty(t,"html",{get:function(){return t.abstract.map((function(t){return pt(t)}))}}),Object.defineProperty(t,"node",{get:function(){if(g){var e=u.createElement("div");return e.innerHTML=t.html,e.children}}}),t}function Vt(t){var e=t.prefix,n=void 0===e?"fa":e,a=t.iconName;if(a)return dt(Ht.definitions,n,a)||dt(P.styles,n,a)}var Yt,Ht=new Bt,qt={i2svg:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(g){Wt();var e=t.node,n=void 0===e?u:e,a=t.callback,r=void 0===a?function(){}:a;M.searchPseudoElements&&It(n),Rt(n,r)}},css:Kt,insertCss:function(){K(Kt())}},Gt=(Yt=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.transform,a=void 0===n?F:n,r=e.symbol,i=void 0!==r&&r,o=e.mask,s=void 0===o?null:o,c=e.title,l=void 0===c?null:c,f=e.classes,u=void 0===f?[]:f,d=e.attributes,p=void 0===d?{}:d,m=e.styles,g=void 0===m?{}:m;if(t){var b=t.prefix,v=t.iconName,h=t.icon;return Xt(j({type:"icon"},t),(function(){return Wt(),M.autoA11y&&(l?p["aria-labelledby"]=M.replacementClass+"-title-"+B():p["aria-hidden"]="true"),G({icons:{main:Zt(h),mask:s?Zt(s.icon):{found:!1,width:null,height:null,icon:{}}},prefix:b,iconName:v,transform:j({},F,a),symbol:i,title:l,extra:{attributes:p,styles:g,classes:u}})}))}},function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=(t||{}).icon?t:Vt(t||{}),a=e.mask;return a&&(a=(a||{}).icon?a:Vt(a||{})),Yt(n,j({},e,{mask:a}))}),Qt={noAuto:function(){var t;z({autoReplaceSvg:t=!1,observeMutations:t}),yt&&yt.disconnect()},dom:qt,library:Ht,parse:{transform:function(t){return kt(t)}},findIconDefinition:Vt,icon:Gt,text:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.transform,a=void 0===n?F:n,r=e.title,i=void 0===r?null:r,o=e.classes,s=void 0===o?[]:o,c=e.attributes,l=void 0===c?{}:c,f=e.styles,u=void 0===f?{}:f;return Xt({type:"text",content:t},(function(){return Wt(),Q({content:t,transform:j({},F,a),title:i,extra:{attributes:l,styles:u,classes:[M.familyPrefix+"-layers-text"].concat(N(s))}})}))},layer:function(t){return Xt({type:"layer"},(function(){Wt();var e=[];return t((function(t){Array.isArray(t)?t.map((function(t){e=e.concat(t.abstract)})):e=e.concat(t.abstract)})),[{tag:"span",attributes:{class:M.familyPrefix+"-layers"},children:e}]}))}},Jt=function(){g&&M.autoReplaceSvg&&Qt.dom.i2svg({node:u})};Object.defineProperty(Qt,"config",{get:function(){return M},set:function(t){z(t)}}),g&&function(t){try{t()}catch($t){if(!x)throw $t}}((function(){var t;m&&(f.FontAwesome||(f.FontAwesome=Qt),t=function(){Object.keys(P.styles).length>0&&Jt(),M.observeMutations&&"function"==typeof MutationObserver&&function(t){if(d){var e=t.treeCallback,n=t.nodeCallback,a=t.pseudoElementsCallback;yt=new d((function(t){ht||Z(t).forEach((function(t){if("childList"===t.type&&t.addedNodes.length>0&&!gt(t.addedNodes[0])&&(M.searchPseudoElements&&a(t.target),e(t.target)),"attributes"===t.type&&t.target.parentNode&&M.searchPseudoElements&&a(t.target.parentNode),"attributes"===t.type&>(t.target)&&~A.indexOf(t.attributeName))if("class"===t.attributeName){var r=ut(U(t.target)),i=r.prefix,o=r.iconName;i&&t.target.setAttribute("data-prefix",i),o&&t.target.setAttribute("data-icon",o)}else n(t.target)}))})),g&&yt.observe(u.getElementsByTagName("body")[0],{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}({treeCallback:Rt,nodeCallback:Ft,pseudoElementsCallback:It})},g&&(I?setTimeout(t,0):L.push(t))),P.hooks=j({},P.hooks,{addPack:function(t,e){P.styles[t]=j({},P.styles[t]||{},e),lt(),Jt()},addShims:function(t){var e;(e=P.shims).push.apply(e,N(t)),lt(),Jt()}})}));e.ZP=Qt},982:function(t,e,n){"use strict";function a(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function r(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?a(Object(n),!0).forEach((function(e){s(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function o(t,e){for(var n=0;n<e.length;n++){var a=e[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,a.key,a)}}function s(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function c(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null==n)return;var a,r,i=[],o=!0,s=!1;try{for(n=n.call(t);!(o=(a=n.next()).done)&&(i.push(a.value),!e||i.length!==e);o=!0);}catch(c){s=!0,r=c}finally{try{o||null==n.return||n.return()}finally{if(s)throw r}}return i}(t,e)||f(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(t){return function(t){if(Array.isArray(t))return u(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||f(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function f(t,e){if(t){if("string"==typeof t)return u(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(t,e):void 0}}function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,a=new Array(e);n<e;n++)a[n]=t[n];return a}n.d(e,{G:function(){return Tn}});var d=function(){},p={},m={},g=null,b={mark:d,measure:d};try{"undefined"!=typeof window&&(p=window),"undefined"!=typeof document&&(m=document),"undefined"!=typeof MutationObserver&&(g=MutationObserver),"undefined"!=typeof performance&&(b=performance)}catch(Ln){}var v,h,y,x,k,w=(p.navigator||{}).userAgent,A=void 0===w?"":w,E=p,O=m,j=g,N=b,_=(E.document,!!O.documentElement&&!!O.head&&"function"==typeof O.addEventListener&&"function"==typeof O.createElement),C=~A.indexOf("MSIE")||~A.indexOf("Trident/"),S="svg-inline--fa",M="data-fa-i2svg",z="data-fa-pseudo-element",T="data-prefix",P="data-icon",L="fontawesome-i2svg",I=["HTML","HEAD","STYLE","SCRIPT"],R=function(){try{return!0}catch(Ln){return!1}}(),F="classic",K="sharp",D=[F,K];function B(t){return new Proxy(t,{get:function(t,e){return e in t?t[e]:t.classic}})}var Z=B((s(v={},F,{fa:"solid",fas:"solid","fa-solid":"solid",far:"regular","fa-regular":"regular",fal:"light","fa-light":"light",fat:"thin","fa-thin":"thin",fad:"duotone","fa-duotone":"duotone",fab:"brands","fa-brands":"brands",fak:"kit","fa-kit":"kit"}),s(v,K,{fa:"solid",fass:"solid","fa-solid":"solid"}),v)),U=B((s(h={},F,{solid:"fas",regular:"far",light:"fal",thin:"fat",duotone:"fad",brands:"fab",kit:"fak"}),s(h,K,{solid:"fass"}),h)),W=B((s(y={},F,{fab:"fa-brands",fad:"fa-duotone",fak:"fa-kit",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"}),s(y,K,{fass:"fa-solid"}),y)),X=B((s(x={},F,{"fa-brands":"fab","fa-duotone":"fad","fa-kit":"fak","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"}),s(x,K,{"fa-solid":"fass"}),x)),V=/fa(s|r|l|t|d|b|k|ss)?[\-\ ]/,Y="fa-layers-text",H=/Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp|Kit)?.*/i,q=B((s(k={},F,{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"}),s(k,K,{900:"fass"}),k)),G=[1,2,3,4,5,6,7,8,9,10],Q=G.concat([11,12,13,14,15,16,17,18,19,20]),J=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],$="duotone-group",tt="swap-opacity",et="primary",nt="secondary",at=new Set;Object.keys(U.classic).map(at.add.bind(at)),Object.keys(U.sharp).map(at.add.bind(at));var rt=[].concat(D,l(at),["2xs","xs","sm","lg","xl","2xl","beat","border","fade","beat-fade","bounce","flip-both","flip-horizontal","flip-vertical","flip","fw","inverse","layers-counter","layers-text","layers","li","pull-left","pull-right","pulse","rotate-180","rotate-270","rotate-90","rotate-by","shake","spin-pulse","spin-reverse","spin","stack-1x","stack-2x","stack","ul",$,tt,et,nt]).concat(G.map((function(t){return"".concat(t,"x")}))).concat(Q.map((function(t){return"w-".concat(t)}))),it=E.FontAwesomeConfig||{};if(O&&"function"==typeof O.querySelector){[["data-family-prefix","familyPrefix"],["data-css-prefix","cssPrefix"],["data-family-default","familyDefault"],["data-style-default","styleDefault"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]].forEach((function(t){var e=c(t,2),n=e[0],a=e[1],r=function(t){return""===t||"false"!==t&&("true"===t||t)}(function(t){var e=O.querySelector("script["+t+"]");if(e)return e.getAttribute(t)}(n));null!=r&&(it[a]=r)}))}var ot={styleDefault:"solid",familyDefault:"classic",cssPrefix:"fa",replacementClass:S,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0};it.familyPrefix&&(it.cssPrefix=it.familyPrefix);var st=r(r({},ot),it);st.autoReplaceSvg||(st.observeMutations=!1);var ct={};Object.keys(ot).forEach((function(t){Object.defineProperty(ct,t,{enumerable:!0,set:function(e){st[t]=e,lt.forEach((function(t){return t(ct)}))},get:function(){return st[t]}})})),Object.defineProperty(ct,"familyPrefix",{enumerable:!0,set:function(t){st.cssPrefix=t,lt.forEach((function(t){return t(ct)}))},get:function(){return st.cssPrefix}}),E.FontAwesomeConfig=ct;var lt=[];var ft=16,ut={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function dt(){for(var t=12,e="";t-- >0;)e+="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[62*Math.random()|0];return e}function pt(t){for(var e=[],n=(t||[]).length>>>0;n--;)e[n]=t[n];return e}function mt(t){return t.classList?pt(t.classList):(t.getAttribute("class")||"").split(" ").filter((function(t){return t}))}function gt(t){return"".concat(t).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">")}function bt(t){return Object.keys(t||{}).reduce((function(e,n){return e+"".concat(n,": ").concat(t[n].trim(),";")}),"")}function vt(t){return t.size!==ut.size||t.x!==ut.x||t.y!==ut.y||t.rotate!==ut.rotate||t.flipX||t.flipY}function ht(){var t="fa",e=S,n=ct.cssPrefix,a=ct.replacementClass,r=':root, :host {\n --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Solid";\n --fa-font-regular: normal 400 1em/1 "Font Awesome 6 Regular";\n --fa-font-light: normal 300 1em/1 "Font Awesome 6 Light";\n --fa-font-thin: normal 100 1em/1 "Font Awesome 6 Thin";\n --fa-font-duotone: normal 900 1em/1 "Font Awesome 6 Duotone";\n --fa-font-sharp-solid: normal 900 1em/1 "Font Awesome 6 Sharp";\n --fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands";\n}\n\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\n overflow: visible;\n box-sizing: content-box;\n}\n\n.svg-inline--fa {\n display: var(--fa-display, inline-block);\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n}\n.svg-inline--fa.fa-2xs {\n vertical-align: 0.1em;\n}\n.svg-inline--fa.fa-xs {\n vertical-align: 0em;\n}\n.svg-inline--fa.fa-sm {\n vertical-align: -0.0714285705em;\n}\n.svg-inline--fa.fa-lg {\n vertical-align: -0.2em;\n}\n.svg-inline--fa.fa-xl {\n vertical-align: -0.25em;\n}\n.svg-inline--fa.fa-2xl {\n vertical-align: -0.3125em;\n}\n.svg-inline--fa.fa-pull-left {\n margin-right: var(--fa-pull-margin, 0.3em);\n width: auto;\n}\n.svg-inline--fa.fa-pull-right {\n margin-left: var(--fa-pull-margin, 0.3em);\n width: auto;\n}\n.svg-inline--fa.fa-li {\n width: var(--fa-li-width, 2em);\n top: 0.25em;\n}\n.svg-inline--fa.fa-fw {\n width: var(--fa-fw-width, 1.25em);\n}\n\n.fa-layers svg.svg-inline--fa {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.fa-layers-counter, .fa-layers-text {\n display: inline-block;\n position: absolute;\n text-align: center;\n}\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -0.125em;\n width: 1em;\n}\n.fa-layers svg.svg-inline--fa {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter {\n background-color: var(--fa-counter-background-color, #ff253a);\n border-radius: var(--fa-counter-border-radius, 1em);\n box-sizing: border-box;\n color: var(--fa-inverse, #fff);\n line-height: var(--fa-counter-line-height, 1);\n max-width: var(--fa-counter-max-width, 5em);\n min-width: var(--fa-counter-min-width, 1.5em);\n overflow: hidden;\n padding: var(--fa-counter-padding, 0.25em 0.5em);\n right: var(--fa-right, 0);\n text-overflow: ellipsis;\n top: var(--fa-top, 0);\n -webkit-transform: scale(var(--fa-counter-scale, 0.25));\n transform: scale(var(--fa-counter-scale, 0.25));\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n bottom: var(--fa-bottom, 0);\n right: var(--fa-right, 0);\n top: auto;\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: bottom right;\n transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n bottom: var(--fa-bottom, 0);\n left: var(--fa-left, 0);\n right: auto;\n top: auto;\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: bottom left;\n transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n top: var(--fa-top, 0);\n right: var(--fa-right, 0);\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-top-left {\n left: var(--fa-left, 0);\n right: auto;\n top: var(--fa-top, 0);\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: top left;\n transform-origin: top left;\n}\n\n.fa-1x {\n font-size: 1em;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-6x {\n font-size: 6em;\n}\n\n.fa-7x {\n font-size: 7em;\n}\n\n.fa-8x {\n font-size: 8em;\n}\n\n.fa-9x {\n font-size: 9em;\n}\n\n.fa-10x {\n font-size: 10em;\n}\n\n.fa-2xs {\n font-size: 0.625em;\n line-height: 0.1em;\n vertical-align: 0.225em;\n}\n\n.fa-xs {\n font-size: 0.75em;\n line-height: 0.0833333337em;\n vertical-align: 0.125em;\n}\n\n.fa-sm {\n font-size: 0.875em;\n line-height: 0.0714285718em;\n vertical-align: 0.0535714295em;\n}\n\n.fa-lg {\n font-size: 1.25em;\n line-height: 0.05em;\n vertical-align: -0.075em;\n}\n\n.fa-xl {\n font-size: 1.5em;\n line-height: 0.0416666682em;\n vertical-align: -0.125em;\n}\n\n.fa-2xl {\n font-size: 2em;\n line-height: 0.03125em;\n vertical-align: -0.1875em;\n}\n\n.fa-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.fa-ul {\n list-style-type: none;\n margin-left: var(--fa-li-margin, 2.5em);\n padding-left: 0;\n}\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n left: calc(var(--fa-li-width, 2em) * -1);\n position: absolute;\n text-align: center;\n width: var(--fa-li-width, 2em);\n line-height: inherit;\n}\n\n.fa-border {\n border-color: var(--fa-border-color, #eee);\n border-radius: var(--fa-border-radius, 0.1em);\n border-style: var(--fa-border-style, solid);\n border-width: var(--fa-border-width, 0.08em);\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\n}\n\n.fa-pull-left {\n float: left;\n margin-right: var(--fa-pull-margin, 0.3em);\n}\n\n.fa-pull-right {\n float: right;\n margin-left: var(--fa-pull-margin, 0.3em);\n}\n\n.fa-beat {\n -webkit-animation-name: fa-beat;\n animation-name: fa-beat;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\n}\n\n.fa-bounce {\n -webkit-animation-name: fa-bounce;\n animation-name: fa-bounce;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\n}\n\n.fa-fade {\n -webkit-animation-name: fa-fade;\n animation-name: fa-fade;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n}\n\n.fa-beat-fade {\n -webkit-animation-name: fa-beat-fade;\n animation-name: fa-beat-fade;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n}\n\n.fa-flip {\n -webkit-animation-name: fa-flip;\n animation-name: fa-flip;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\n}\n\n.fa-shake {\n -webkit-animation-name: fa-shake;\n animation-name: fa-shake;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\n animation-timing-function: var(--fa-animation-timing, linear);\n}\n\n.fa-spin {\n -webkit-animation-name: fa-spin;\n animation-name: fa-spin;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 2s);\n animation-duration: var(--fa-animation-duration, 2s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\n animation-timing-function: var(--fa-animation-timing, linear);\n}\n\n.fa-spin-reverse {\n --fa-animation-direction: reverse;\n}\n\n.fa-pulse,\n.fa-spin-pulse {\n -webkit-animation-name: fa-spin;\n animation-name: fa-spin;\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));\n animation-timing-function: var(--fa-animation-timing, steps(8));\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fa-beat,\n.fa-bounce,\n.fa-fade,\n.fa-beat-fade,\n.fa-flip,\n.fa-pulse,\n.fa-shake,\n.fa-spin,\n.fa-spin-pulse {\n -webkit-animation-delay: -1ms;\n animation-delay: -1ms;\n -webkit-animation-duration: 1ms;\n animation-duration: 1ms;\n -webkit-animation-iteration-count: 1;\n animation-iteration-count: 1;\n transition-delay: 0s;\n transition-duration: 0s;\n }\n}\n@-webkit-keyframes fa-beat {\n 0%, 90% {\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 45% {\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\n transform: scale(var(--fa-beat-scale, 1.25));\n }\n}\n@keyframes fa-beat {\n 0%, 90% {\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 45% {\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\n transform: scale(var(--fa-beat-scale, 1.25));\n }\n}\n@-webkit-keyframes fa-bounce {\n 0% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 10% {\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n }\n 30% {\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n }\n 50% {\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n }\n 57% {\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n }\n 64% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 100% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n}\n@keyframes fa-bounce {\n 0% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 10% {\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n }\n 30% {\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n }\n 50% {\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n }\n 57% {\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n }\n 64% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 100% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n}\n@-webkit-keyframes fa-fade {\n 50% {\n opacity: var(--fa-fade-opacity, 0.4);\n }\n}\n@keyframes fa-fade {\n 50% {\n opacity: var(--fa-fade-opacity, 0.4);\n }\n}\n@-webkit-keyframes fa-beat-fade {\n 0%, 100% {\n opacity: var(--fa-beat-fade-opacity, 0.4);\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 50% {\n opacity: 1;\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\n transform: scale(var(--fa-beat-fade-scale, 1.125));\n }\n}\n@keyframes fa-beat-fade {\n 0%, 100% {\n opacity: var(--fa-beat-fade-opacity, 0.4);\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 50% {\n opacity: 1;\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\n transform: scale(var(--fa-beat-fade-scale, 1.125));\n }\n}\n@-webkit-keyframes fa-flip {\n 50% {\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n }\n}\n@keyframes fa-flip {\n 50% {\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n }\n}\n@-webkit-keyframes fa-shake {\n 0% {\n -webkit-transform: rotate(-15deg);\n transform: rotate(-15deg);\n }\n 4% {\n -webkit-transform: rotate(15deg);\n transform: rotate(15deg);\n }\n 8%, 24% {\n -webkit-transform: rotate(-18deg);\n transform: rotate(-18deg);\n }\n 12%, 28% {\n -webkit-transform: rotate(18deg);\n transform: rotate(18deg);\n }\n 16% {\n -webkit-transform: rotate(-22deg);\n transform: rotate(-22deg);\n }\n 20% {\n -webkit-transform: rotate(22deg);\n transform: rotate(22deg);\n }\n 32% {\n -webkit-transform: rotate(-12deg);\n transform: rotate(-12deg);\n }\n 36% {\n -webkit-transform: rotate(12deg);\n transform: rotate(12deg);\n }\n 40%, 100% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n}\n@keyframes fa-shake {\n 0% {\n -webkit-transform: rotate(-15deg);\n transform: rotate(-15deg);\n }\n 4% {\n -webkit-transform: rotate(15deg);\n transform: rotate(15deg);\n }\n 8%, 24% {\n -webkit-transform: rotate(-18deg);\n transform: rotate(-18deg);\n }\n 12%, 28% {\n -webkit-transform: rotate(18deg);\n transform: rotate(18deg);\n }\n 16% {\n -webkit-transform: rotate(-22deg);\n transform: rotate(-22deg);\n }\n 20% {\n -webkit-transform: rotate(22deg);\n transform: rotate(22deg);\n }\n 32% {\n -webkit-transform: rotate(-12deg);\n transform: rotate(-12deg);\n }\n 36% {\n -webkit-transform: rotate(12deg);\n transform: rotate(12deg);\n }\n 40%, 100% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n}\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.fa-rotate-90 {\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1);\n}\n\n.fa-flip-both,\n.fa-flip-horizontal.fa-flip-vertical {\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1);\n}\n\n.fa-rotate-by {\n -webkit-transform: rotate(var(--fa-rotate-angle, none));\n transform: rotate(var(--fa-rotate-angle, none));\n}\n\n.fa-stack {\n display: inline-block;\n vertical-align: middle;\n height: 2em;\n position: relative;\n width: 2.5em;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n z-index: var(--fa-stack-z-index, auto);\n}\n\n.svg-inline--fa.fa-stack-1x {\n height: 1em;\n width: 1.25em;\n}\n.svg-inline--fa.fa-stack-2x {\n height: 2em;\n width: 2.5em;\n}\n\n.fa-inverse {\n color: var(--fa-inverse, #fff);\n}\n\n.sr-only,\n.fa-sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n.sr-only-focusable:not(:focus),\n.fa-sr-only-focusable:not(:focus) {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n.svg-inline--fa .fa-primary {\n fill: var(--fa-primary-color, currentColor);\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n fill: var(--fa-secondary-color, currentColor);\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n fill: black;\n}\n\n.fad.fa-inverse,\n.fa-duotone.fa-inverse {\n color: var(--fa-inverse, #fff);\n}';if(n!==t||a!==e){var i=new RegExp("\\.".concat(t,"\\-"),"g"),o=new RegExp("\\--".concat(t,"\\-"),"g"),s=new RegExp("\\.".concat(e),"g");r=r.replace(i,".".concat(n,"-")).replace(o,"--".concat(n,"-")).replace(s,".".concat(a))}return r}var yt=!1;function xt(){ct.autoAddCss&&!yt&&(!function(t){if(t&&_){var e=O.createElement("style");e.setAttribute("type","text/css"),e.innerHTML=t;for(var n=O.head.childNodes,a=null,r=n.length-1;r>-1;r--){var i=n[r],o=(i.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(o)>-1&&(a=i)}O.head.insertBefore(e,a)}}(ht()),yt=!0)}var kt={mixout:function(){return{dom:{css:ht,insertCss:xt}}},hooks:function(){return{beforeDOMElementCreation:function(){xt()},beforeI2svg:function(){xt()}}}},wt=E||{};wt.___FONT_AWESOME___||(wt.___FONT_AWESOME___={}),wt.___FONT_AWESOME___.styles||(wt.___FONT_AWESOME___.styles={}),wt.___FONT_AWESOME___.hooks||(wt.___FONT_AWESOME___.hooks={}),wt.___FONT_AWESOME___.shims||(wt.___FONT_AWESOME___.shims=[]);var At=wt.___FONT_AWESOME___,Et=[],Ot=!1;function jt(t){_&&(Ot?setTimeout(t,0):Et.push(t))}function Nt(t){var e=t.tag,n=t.attributes,a=void 0===n?{}:n,r=t.children,i=void 0===r?[]:r;return"string"==typeof t?gt(t):"<".concat(e," ").concat(function(t){return Object.keys(t||{}).reduce((function(e,n){return e+"".concat(n,'="').concat(gt(t[n]),'" ')}),"").trim()}(a),">").concat(i.map(Nt).join(""),"</").concat(e,">")}function _t(t,e,n){if(t&&t[e]&&t[e][n])return{prefix:e,iconName:n,icon:t[e][n]}}_&&((Ot=(O.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(O.readyState))||O.addEventListener("DOMContentLoaded",(function t(){O.removeEventListener("DOMContentLoaded",t),Ot=1,Et.map((function(t){return t()}))})));var Ct=function(t,e,n,a){var r,i,o,s=Object.keys(t),c=s.length,l=void 0!==a?function(t,e){return function(n,a,r,i){return t.call(e,n,a,r,i)}}(e,a):e;for(void 0===n?(r=1,o=t[s[0]]):(r=0,o=n);r<c;r++)o=l(o,t[i=s[r]],i,t);return o};function St(t){var e=function(t){for(var e=[],n=0,a=t.length;n<a;){var r=t.charCodeAt(n++);if(r>=55296&&r<=56319&&n<a){var i=t.charCodeAt(n++);56320==(64512&i)?e.push(((1023&r)<<10)+(1023&i)+65536):(e.push(r),n--)}else e.push(r)}return e}(t);return 1===e.length?e[0].toString(16):null}function Mt(t){return Object.keys(t).reduce((function(e,n){var a=t[n];return!!a.icon?e[a.iconName]=a.icon:e[n]=a,e}),{})}function zt(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=n.skipHooks,i=void 0!==a&&a,o=Mt(e);"function"!=typeof At.hooks.addPack||i?At.styles[t]=r(r({},At.styles[t]||{}),o):At.hooks.addPack(t,Mt(e)),"fas"===t&&zt("fa",e)}var Tt,Pt,Lt,It=At.styles,Rt=At.shims,Ft=(s(Tt={},F,Object.values(W.classic)),s(Tt,K,Object.values(W.sharp)),Tt),Kt=null,Dt={},Bt={},Zt={},Ut={},Wt={},Xt=(s(Pt={},F,Object.keys(Z.classic)),s(Pt,K,Object.keys(Z.sharp)),Pt);function Vt(t,e){var n,a=e.split("-"),r=a[0],i=a.slice(1).join("-");return r!==t||""===i||(n=i,~rt.indexOf(n))?null:i}var Yt,Ht=function(){var t=function(t){return Ct(It,(function(e,n,a){return e[a]=Ct(n,t,{}),e}),{})};Dt=t((function(t,e,n){(e[3]&&(t[e[3]]=n),e[2])&&e[2].filter((function(t){return"number"==typeof t})).forEach((function(e){t[e.toString(16)]=n}));return t})),Bt=t((function(t,e,n){(t[n]=n,e[2])&&e[2].filter((function(t){return"string"==typeof t})).forEach((function(e){t[e]=n}));return t})),Wt=t((function(t,e,n){var a=e[2];return t[n]=n,a.forEach((function(e){t[e]=n})),t}));var e="far"in It||ct.autoFetchSvg,n=Ct(Rt,(function(t,n){var a=n[0],r=n[1],i=n[2];return"far"!==r||e||(r="fas"),"string"==typeof a&&(t.names[a]={prefix:r,iconName:i}),"number"==typeof a&&(t.unicodes[a.toString(16)]={prefix:r,iconName:i}),t}),{names:{},unicodes:{}});Zt=n.names,Ut=n.unicodes,Kt=$t(ct.styleDefault,{family:ct.familyDefault})};function qt(t,e){return(Dt[t]||{})[e]}function Gt(t,e){return(Wt[t]||{})[e]}function Qt(t){return Zt[t]||{prefix:null,iconName:null}}function Jt(){return Kt}Yt=function(t){Kt=$t(t.styleDefault,{family:ct.familyDefault})},lt.push(Yt),Ht();function $t(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.family,a=void 0===n?F:n,r=Z[a][t],i=U[a][t]||U[a][r],o=t in At.styles?t:null;return i||o||null}var te=(s(Lt={},F,Object.keys(W.classic)),s(Lt,K,Object.keys(W.sharp)),Lt);function ee(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=n.skipLookups,r=void 0!==a&&a,i=(s(e={},F,"".concat(ct.cssPrefix,"-").concat(F)),s(e,K,"".concat(ct.cssPrefix,"-").concat(K)),e),o=null,c=F;(t.includes(i.classic)||t.some((function(t){return te.classic.includes(t)})))&&(c=F),(t.includes(i.sharp)||t.some((function(t){return te.sharp.includes(t)})))&&(c=K);var l=t.reduce((function(t,e){var n=Vt(ct.cssPrefix,e);if(It[e]?(e=Ft[c].includes(e)?X[c][e]:e,o=e,t.prefix=e):Xt[c].indexOf(e)>-1?(o=e,t.prefix=$t(e,{family:c})):n?t.iconName=n:e!==ct.replacementClass&&e!==i.classic&&e!==i.sharp&&t.rest.push(e),!r&&t.prefix&&t.iconName){var a="fa"===o?Qt(t.iconName):{},s=Gt(t.prefix,t.iconName);a.prefix&&(o=null),t.iconName=a.iconName||s||t.iconName,t.prefix=a.prefix||t.prefix,"far"!==t.prefix||It.far||!It.fas||ct.autoFetchSvg||(t.prefix="fas")}return t}),{prefix:null,iconName:null,rest:[]});return(t.includes("fa-brands")||t.includes("fab"))&&(l.prefix="fab"),(t.includes("fa-duotone")||t.includes("fad"))&&(l.prefix="fad"),l.prefix||c!==K||!It.fass&&!ct.autoFetchSvg||(l.prefix="fass",l.iconName=Gt(l.prefix,l.iconName)||l.iconName),"fa"!==l.prefix&&"fa"!==o||(l.prefix=Jt()||"fas"),l}var ne=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.definitions={}}var e,n,a;return e=t,n=[{key:"add",value:function(){for(var t=this,e=arguments.length,n=new Array(e),a=0;a<e;a++)n[a]=arguments[a];var i=n.reduce(this._pullDefinitions,{});Object.keys(i).forEach((function(e){t.definitions[e]=r(r({},t.definitions[e]||{}),i[e]),zt(e,i[e]);var n=W.classic[e];n&&zt(n,i[e]),Ht()}))}},{key:"reset",value:function(){this.definitions={}}},{key:"_pullDefinitions",value:function(t,e){var n=e.prefix&&e.iconName&&e.icon?{0:e}:e;return Object.keys(n).map((function(e){var a=n[e],r=a.prefix,i=a.iconName,o=a.icon,s=o[2];t[r]||(t[r]={}),s.length>0&&s.forEach((function(e){"string"==typeof e&&(t[r][e]=o)})),t[r][i]=o})),t}}],n&&o(e.prototype,n),a&&o(e,a),Object.defineProperty(e,"prototype",{writable:!1}),t}(),ae=[],re={},ie={},oe=Object.keys(ie);function se(t,e){for(var n=arguments.length,a=new Array(n>2?n-2:0),r=2;r<n;r++)a[r-2]=arguments[r];var i=re[t]||[];return i.forEach((function(t){e=t.apply(null,[e].concat(a))})),e}function ce(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),a=1;a<e;a++)n[a-1]=arguments[a];var r=re[t]||[];r.forEach((function(t){t.apply(null,n)}))}function le(){var t=arguments[0],e=Array.prototype.slice.call(arguments,1);return ie[t]?ie[t].apply(null,e):void 0}function fe(t){"fa"===t.prefix&&(t.prefix="fas");var e=t.iconName,n=t.prefix||Jt();if(e)return e=Gt(n,e)||e,_t(ue.definitions,n,e)||_t(At.styles,n,e)}var ue=new ne,de={i2svg:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return _?(ce("beforeI2svg",t),le("pseudoElements2svg",t),le("i2svg",t)):Promise.reject("Operation requires a DOM of some kind.")},watch:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.autoReplaceSvgRoot;!1===ct.autoReplaceSvg&&(ct.autoReplaceSvg=!0),ct.observeMutations=!0,jt((function(){me({autoReplaceSvgRoot:e}),ce("watch",t)}))}},pe={noAuto:function(){ct.autoReplaceSvg=!1,ct.observeMutations=!1,ce("noAuto")},config:ct,dom:de,parse:{icon:function(t){if(null===t)return null;if("object"===i(t)&&t.prefix&&t.iconName)return{prefix:t.prefix,iconName:Gt(t.prefix,t.iconName)||t.iconName};if(Array.isArray(t)&&2===t.length){var e=0===t[1].indexOf("fa-")?t[1].slice(3):t[1],n=$t(t[0]);return{prefix:n,iconName:Gt(n,e)||e}}if("string"==typeof t&&(t.indexOf("".concat(ct.cssPrefix,"-"))>-1||t.match(V))){var a=ee(t.split(" "),{skipLookups:!0});return{prefix:a.prefix||Jt(),iconName:Gt(a.prefix,a.iconName)||a.iconName}}if("string"==typeof t){var r=Jt();return{prefix:r,iconName:Gt(r,t)||t}}}},library:ue,findIconDefinition:fe,toHtml:Nt},me=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.autoReplaceSvgRoot,n=void 0===e?O:e;(Object.keys(At.styles).length>0||ct.autoFetchSvg)&&_&&ct.autoReplaceSvg&&pe.dom.i2svg({node:n})};function ge(t,e){return Object.defineProperty(t,"abstract",{get:e}),Object.defineProperty(t,"html",{get:function(){return t.abstract.map((function(t){return Nt(t)}))}}),Object.defineProperty(t,"node",{get:function(){if(_){var e=O.createElement("div");return e.innerHTML=t.html,e.children}}}),t}function be(t){var e=t.icons,n=e.main,a=e.mask,i=t.prefix,o=t.iconName,s=t.transform,c=t.symbol,l=t.title,f=t.maskId,u=t.titleId,d=t.extra,p=t.watchable,m=void 0!==p&&p,g=a.found?a:n,b=g.width,v=g.height,h="fak"===i,y=[ct.replacementClass,o?"".concat(ct.cssPrefix,"-").concat(o):""].filter((function(t){return-1===d.classes.indexOf(t)})).filter((function(t){return""!==t||!!t})).concat(d.classes).join(" "),x={children:[],attributes:r(r({},d.attributes),{},{"data-prefix":i,"data-icon":o,class:y,role:d.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(b," ").concat(v)})},k=h&&!~d.classes.indexOf("fa-fw")?{width:"".concat(b/v*16*.0625,"em")}:{};m&&(x.attributes[M]=""),l&&(x.children.push({tag:"title",attributes:{id:x.attributes["aria-labelledby"]||"title-".concat(u||dt())},children:[l]}),delete x.attributes.title);var w=r(r({},x),{},{prefix:i,iconName:o,main:n,mask:a,maskId:f,transform:s,symbol:c,styles:r(r({},k),d.styles)}),A=a.found&&n.found?le("generateAbstractMask",w)||{children:[],attributes:{}}:le("generateAbstractIcon",w)||{children:[],attributes:{}},E=A.children,O=A.attributes;return w.children=E,w.attributes=O,c?function(t){var e=t.prefix,n=t.iconName,a=t.children,i=t.attributes,o=t.symbol,s=!0===o?"".concat(e,"-").concat(ct.cssPrefix,"-").concat(n):o;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:r(r({},i),{},{id:s}),children:a}]}]}(w):function(t){var e=t.children,n=t.main,a=t.mask,i=t.attributes,o=t.styles,s=t.transform;if(vt(s)&&n.found&&!a.found){var c={x:n.width/n.height/2,y:.5};i.style=bt(r(r({},o),{},{"transform-origin":"".concat(c.x+s.x/16,"em ").concat(c.y+s.y/16,"em")}))}return[{tag:"svg",attributes:i,children:e}]}(w)}function ve(t){var e=t.content,n=t.width,a=t.height,i=t.transform,o=t.title,s=t.extra,c=t.watchable,l=void 0!==c&&c,f=r(r(r({},s.attributes),o?{title:o}:{}),{},{class:s.classes.join(" ")});l&&(f[M]="");var u=r({},s.styles);vt(i)&&(u.transform=function(t){var e=t.transform,n=t.width,a=void 0===n?16:n,r=t.height,i=void 0===r?16:r,o=t.startCentered,s=void 0!==o&&o,c="";return c+=s&&C?"translate(".concat(e.x/ft-a/2,"em, ").concat(e.y/ft-i/2,"em) "):s?"translate(calc(-50% + ".concat(e.x/ft,"em), calc(-50% + ").concat(e.y/ft,"em)) "):"translate(".concat(e.x/ft,"em, ").concat(e.y/ft,"em) "),c+="scale(".concat(e.size/ft*(e.flipX?-1:1),", ").concat(e.size/ft*(e.flipY?-1:1),") "),c+"rotate(".concat(e.rotate,"deg) ")}({transform:i,startCentered:!0,width:n,height:a}),u["-webkit-transform"]=u.transform);var d=bt(u);d.length>0&&(f.style=d);var p=[];return p.push({tag:"span",attributes:f,children:[e]}),o&&p.push({tag:"span",attributes:{class:"sr-only"},children:[o]}),p}function he(t){var e=t.content,n=t.title,a=t.extra,i=r(r(r({},a.attributes),n?{title:n}:{}),{},{class:a.classes.join(" ")}),o=bt(a.styles);o.length>0&&(i.style=o);var s=[];return s.push({tag:"span",attributes:i,children:[e]}),n&&s.push({tag:"span",attributes:{class:"sr-only"},children:[n]}),s}var ye=At.styles;function xe(t){var e=t[0],n=t[1],a=c(t.slice(4),1)[0];return{found:!0,width:e,height:n,icon:Array.isArray(a)?{tag:"g",attributes:{class:"".concat(ct.cssPrefix,"-").concat($)},children:[{tag:"path",attributes:{class:"".concat(ct.cssPrefix,"-").concat(nt),fill:"currentColor",d:a[0]}},{tag:"path",attributes:{class:"".concat(ct.cssPrefix,"-").concat(et),fill:"currentColor",d:a[1]}}]}:{tag:"path",attributes:{fill:"currentColor",d:a}}}}var ke={found:!1,width:512,height:512};function we(t,e){var n=e;return"fa"===e&&null!==ct.styleDefault&&(e=Jt()),new Promise((function(a,i){le("missingIconAbstract");if("fa"===n){var o=Qt(t)||{};t=o.iconName||t,e=o.prefix||e}if(t&&e&&ye[e]&&ye[e][t])return a(xe(ye[e][t]));!function(t,e){R||ct.showMissingIcons||!t||console.error('Icon with name "'.concat(t,'" and prefix "').concat(e,'" is missing.'))}(t,e),a(r(r({},ke),{},{icon:ct.showMissingIcons&&t&&le("missingIconAbstract")||{}}))}))}var Ae=function(){},Ee=ct.measurePerformance&&N&&N.mark&&N.measure?N:{mark:Ae,measure:Ae},Oe='FA "6.2.0"',je=function(t){Ee.mark("".concat(Oe," ").concat(t," ends")),Ee.measure("".concat(Oe," ").concat(t),"".concat(Oe," ").concat(t," begins"),"".concat(Oe," ").concat(t," ends"))},Ne=function(t){return Ee.mark("".concat(Oe," ").concat(t," begins")),function(){return je(t)}},_e=function(){};function Ce(t){return"string"==typeof(t.getAttribute?t.getAttribute(M):null)}function Se(t){return O.createElementNS("http://www.w3.org/2000/svg",t)}function Me(t){return O.createElement(t)}function ze(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.ceFn,a=void 0===n?"svg"===t.tag?Se:Me:n;if("string"==typeof t)return O.createTextNode(t);var r=a(t.tag);Object.keys(t.attributes||[]).forEach((function(e){r.setAttribute(e,t.attributes[e])}));var i=t.children||[];return i.forEach((function(t){r.appendChild(ze(t,{ceFn:a}))})),r}var Te={replace:function(t){var e=t[0];if(e.parentNode)if(t[1].forEach((function(t){e.parentNode.insertBefore(ze(t),e)})),null===e.getAttribute(M)&&ct.keepOriginalSource){var n=O.createComment(function(t){var e=" ".concat(t.outerHTML," ");return"".concat(e,"Font Awesome fontawesome.com ")}(e));e.parentNode.replaceChild(n,e)}else e.remove()},nest:function(t){var e=t[0],n=t[1];if(~mt(e).indexOf(ct.replacementClass))return Te.replace(t);var a=new RegExp("".concat(ct.cssPrefix,"-.*"));if(delete n[0].attributes.id,n[0].attributes.class){var r=n[0].attributes.class.split(" ").reduce((function(t,e){return e===ct.replacementClass||e.match(a)?t.toSvg.push(e):t.toNode.push(e),t}),{toNode:[],toSvg:[]});n[0].attributes.class=r.toSvg.join(" "),0===r.toNode.length?e.removeAttribute("class"):e.setAttribute("class",r.toNode.join(" "))}var i=n.map((function(t){return Nt(t)})).join("\n");e.setAttribute(M,""),e.innerHTML=i}};function Pe(t){t()}function Le(t,e){var n="function"==typeof e?e:_e;if(0===t.length)n();else{var a=Pe;"async"===ct.mutateApproach&&(a=E.requestAnimationFrame||Pe),a((function(){var e=!0===ct.autoReplaceSvg?Te.replace:Te[ct.autoReplaceSvg]||Te.replace,a=Ne("mutate");t.map(e),a(),n()}))}}var Ie=!1;function Re(){Ie=!0}function Fe(){Ie=!1}var Ke=null;function De(t){if(j&&ct.observeMutations){var e=t.treeCallback,n=void 0===e?_e:e,a=t.nodeCallback,r=void 0===a?_e:a,i=t.pseudoElementsCallback,o=void 0===i?_e:i,s=t.observeMutationsRoot,c=void 0===s?O:s;Ke=new j((function(t){if(!Ie){var e=Jt();pt(t).forEach((function(t){if("childList"===t.type&&t.addedNodes.length>0&&!Ce(t.addedNodes[0])&&(ct.searchPseudoElements&&o(t.target),n(t.target)),"attributes"===t.type&&t.target.parentNode&&ct.searchPseudoElements&&o(t.target.parentNode),"attributes"===t.type&&Ce(t.target)&&~J.indexOf(t.attributeName))if("class"===t.attributeName&&function(t){var e=t.getAttribute?t.getAttribute(T):null,n=t.getAttribute?t.getAttribute(P):null;return e&&n}(t.target)){var a=ee(mt(t.target)),i=a.prefix,s=a.iconName;t.target.setAttribute(T,i||e),s&&t.target.setAttribute(P,s)}else(c=t.target)&&c.classList&&c.classList.contains&&c.classList.contains(ct.replacementClass)&&r(t.target);var c}))}})),_&&Ke.observe(c,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}function Be(t){var e=t.getAttribute("style"),n=[];return e&&(n=e.split(";").reduce((function(t,e){var n=e.split(":"),a=n[0],r=n.slice(1);return a&&r.length>0&&(t[a]=r.join(":").trim()),t}),{})),n}function Ze(t){var e,n,a=t.getAttribute("data-prefix"),r=t.getAttribute("data-icon"),i=void 0!==t.innerText?t.innerText.trim():"",o=ee(mt(t));return o.prefix||(o.prefix=Jt()),a&&r&&(o.prefix=a,o.iconName=r),o.iconName&&o.prefix||(o.prefix&&i.length>0&&(o.iconName=(e=o.prefix,n=t.innerText,(Bt[e]||{})[n]||qt(o.prefix,St(t.innerText)))),!o.iconName&&ct.autoFetchSvg&&t.firstChild&&t.firstChild.nodeType===Node.TEXT_NODE&&(o.iconName=t.firstChild.data)),o}function Ue(t){var e=pt(t.attributes).reduce((function(t,e){return"class"!==t.name&&"style"!==t.name&&(t[e.name]=e.value),t}),{}),n=t.getAttribute("title"),a=t.getAttribute("data-fa-title-id");return ct.autoA11y&&(n?e["aria-labelledby"]="".concat(ct.replacementClass,"-title-").concat(a||dt()):(e["aria-hidden"]="true",e.focusable="false")),e}function We(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{styleParser:!0},n=Ze(t),a=n.iconName,i=n.prefix,o=n.rest,s=Ue(t),c=se("parseNodeAttributes",{},t),l=e.styleParser?Be(t):[];return r({iconName:a,title:t.getAttribute("title"),titleId:t.getAttribute("data-fa-title-id"),prefix:i,transform:ut,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:o,styles:l,attributes:s}},c)}var Xe=At.styles;function Ve(t){var e="nest"===ct.autoReplaceSvg?We(t,{styleParser:!1}):We(t);return~e.extra.classes.indexOf(Y)?le("generateLayersText",t,e):le("generateSvgReplacementMutation",t,e)}var Ye=new Set;function He(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!_)return Promise.resolve();var n=O.documentElement.classList,a=function(t){return n.add("".concat(L,"-").concat(t))},r=function(t){return n.remove("".concat(L,"-").concat(t))},i=ct.autoFetchSvg?Ye:D.map((function(t){return"fa-".concat(t)})).concat(Object.keys(Xe));i.includes("fa")||i.push("fa");var o=[".".concat(Y,":not([").concat(M,"])")].concat(i.map((function(t){return".".concat(t,":not([").concat(M,"])")}))).join(", ");if(0===o.length)return Promise.resolve();var s=[];try{s=pt(t.querySelectorAll(o))}catch(Ln){}if(!(s.length>0))return Promise.resolve();a("pending"),r("complete");var c=Ne("onTree"),l=s.reduce((function(t,e){try{var n=Ve(e);n&&t.push(n)}catch(Ln){R||"MissingIcon"===Ln.name&&console.error(Ln)}return t}),[]);return new Promise((function(t,n){Promise.all(l).then((function(n){Le(n,(function(){a("active"),a("complete"),r("pending"),"function"==typeof e&&e(),c(),t()}))})).catch((function(t){c(),n(t)}))}))}function qe(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;Ve(t).then((function(t){t&&Le([t],e)}))}D.map((function(t){Ye.add("fa-".concat(t))})),Object.keys(Z.classic).map(Ye.add.bind(Ye)),Object.keys(Z.sharp).map(Ye.add.bind(Ye)),Ye=l(Ye);var Ge=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.transform,a=void 0===n?ut:n,i=e.symbol,o=void 0!==i&&i,s=e.mask,c=void 0===s?null:s,l=e.maskId,f=void 0===l?null:l,u=e.title,d=void 0===u?null:u,p=e.titleId,m=void 0===p?null:p,g=e.classes,b=void 0===g?[]:g,v=e.attributes,h=void 0===v?{}:v,y=e.styles,x=void 0===y?{}:y;if(t){var k=t.prefix,w=t.iconName,A=t.icon;return ge(r({type:"icon"},t),(function(){return ce("beforeDOMElementCreation",{iconDefinition:t,params:e}),ct.autoA11y&&(d?h["aria-labelledby"]="".concat(ct.replacementClass,"-title-").concat(m||dt()):(h["aria-hidden"]="true",h.focusable="false")),be({icons:{main:xe(A),mask:c?xe(c.icon):{found:!1,width:null,height:null,icon:{}}},prefix:k,iconName:w,transform:r(r({},ut),a),symbol:o,title:d,maskId:f,titleId:m,extra:{attributes:h,styles:x,classes:b}})}))}},Qe={mixout:function(){return{icon:(t=Ge,function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=(e||{}).icon?e:fe(e||{}),i=n.mask;return i&&(i=(i||{}).icon?i:fe(i||{})),t(a,r(r({},n),{},{mask:i}))})};var t},hooks:function(){return{mutationObserverCallbacks:function(t){return t.treeCallback=He,t.nodeCallback=qe,t}}},provides:function(t){t.i2svg=function(t){var e=t.node,n=void 0===e?O:e,a=t.callback;return He(n,void 0===a?function(){}:a)},t.generateSvgReplacementMutation=function(t,e){var n=e.iconName,a=e.title,r=e.titleId,i=e.prefix,o=e.transform,s=e.symbol,l=e.mask,f=e.maskId,u=e.extra;return new Promise((function(e,d){Promise.all([we(n,i),l.iconName?we(l.iconName,l.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then((function(l){var d=c(l,2),p=d[0],m=d[1];e([t,be({icons:{main:p,mask:m},prefix:i,iconName:n,transform:o,symbol:s,maskId:f,title:a,titleId:r,extra:u,watchable:!0})])})).catch(d)}))},t.generateAbstractIcon=function(t){var e,n=t.children,a=t.attributes,r=t.main,i=t.transform,o=bt(t.styles);return o.length>0&&(a.style=o),vt(i)&&(e=le("generateAbstractTransformGrouping",{main:r,transform:i,containerWidth:r.width,iconWidth:r.width})),n.push(e||r.icon),{children:n,attributes:a}}}},Je={mixout:function(){return{layer:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.classes,a=void 0===n?[]:n;return ge({type:"layer"},(function(){ce("beforeDOMElementCreation",{assembler:t,params:e});var n=[];return t((function(t){Array.isArray(t)?t.map((function(t){n=n.concat(t.abstract)})):n=n.concat(t.abstract)})),[{tag:"span",attributes:{class:["".concat(ct.cssPrefix,"-layers")].concat(l(a)).join(" ")},children:n}]}))}}}},$e={mixout:function(){return{counter:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.title,a=void 0===n?null:n,r=e.classes,i=void 0===r?[]:r,o=e.attributes,s=void 0===o?{}:o,c=e.styles,f=void 0===c?{}:c;return ge({type:"counter",content:t},(function(){return ce("beforeDOMElementCreation",{content:t,params:e}),he({content:t.toString(),title:a,extra:{attributes:s,styles:f,classes:["".concat(ct.cssPrefix,"-layers-counter")].concat(l(i))}})}))}}}},tn={mixout:function(){return{text:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.transform,a=void 0===n?ut:n,i=e.title,o=void 0===i?null:i,s=e.classes,c=void 0===s?[]:s,f=e.attributes,u=void 0===f?{}:f,d=e.styles,p=void 0===d?{}:d;return ge({type:"text",content:t},(function(){return ce("beforeDOMElementCreation",{content:t,params:e}),ve({content:t,transform:r(r({},ut),a),title:o,extra:{attributes:u,styles:p,classes:["".concat(ct.cssPrefix,"-layers-text")].concat(l(c))}})}))}}},provides:function(t){t.generateLayersText=function(t,e){var n=e.title,a=e.transform,r=e.extra,i=null,o=null;if(C){var s=parseInt(getComputedStyle(t).fontSize,10),c=t.getBoundingClientRect();i=c.width/s,o=c.height/s}return ct.autoA11y&&!n&&(r.attributes["aria-hidden"]="true"),Promise.resolve([t,ve({content:t.innerHTML,width:i,height:o,transform:a,title:n,extra:r,watchable:!0})])}}},en=new RegExp('"',"ug"),nn=[1105920,1112319];function an(t,e){var n="".concat("data-fa-pseudo-element-pending").concat(e.replace(":","-"));return new Promise((function(a,i){if(null!==t.getAttribute(n))return a();var o,s,c,l=pt(t.children).filter((function(t){return t.getAttribute(z)===e}))[0],f=E.getComputedStyle(t,e),u=f.getPropertyValue("font-family").match(H),d=f.getPropertyValue("font-weight"),p=f.getPropertyValue("content");if(l&&!u)return t.removeChild(l),a();if(u&&"none"!==p&&""!==p){var m=f.getPropertyValue("content"),g=~["Sharp"].indexOf(u[2])?K:F,b=~["Solid","Regular","Light","Thin","Duotone","Brands","Kit"].indexOf(u[2])?U[g][u[2].toLowerCase()]:q[g][d],v=function(t){var e,n,a,r,i,o=t.replace(en,""),s=(n=0,r=(e=o).length,(i=e.charCodeAt(n))>=55296&&i<=56319&&r>n+1&&(a=e.charCodeAt(n+1))>=56320&&a<=57343?1024*(i-55296)+a-56320+65536:i),c=s>=nn[0]&&s<=nn[1],l=2===o.length&&o[0]===o[1];return{value:St(l?o[0]:o),isSecondary:c||l}}(m),h=v.value,y=v.isSecondary,x=u[0].startsWith("FontAwesome"),k=qt(b,h),w=k;if(x){var A=(s=Ut[o=h],c=qt("fas",o),s||(c?{prefix:"fas",iconName:c}:null)||{prefix:null,iconName:null});A.iconName&&A.prefix&&(k=A.iconName,b=A.prefix)}if(!k||y||l&&l.getAttribute(T)===b&&l.getAttribute(P)===w)a();else{t.setAttribute(n,w),l&&t.removeChild(l);var j={iconName:null,title:null,titleId:null,prefix:null,transform:ut,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}},N=j.extra;N.attributes[z]=e,we(k,b).then((function(i){var o=be(r(r({},j),{},{icons:{main:i,mask:{prefix:null,iconName:null,rest:[]}},prefix:b,iconName:w,extra:N,watchable:!0})),s=O.createElement("svg");"::before"===e?t.insertBefore(s,t.firstChild):t.appendChild(s),s.outerHTML=o.map((function(t){return Nt(t)})).join("\n"),t.removeAttribute(n),a()})).catch(i)}}else a()}))}function rn(t){return Promise.all([an(t,"::before"),an(t,"::after")])}function on(t){return!(t.parentNode===document.head||~I.indexOf(t.tagName.toUpperCase())||t.getAttribute(z)||t.parentNode&&"svg"===t.parentNode.tagName)}function sn(t){if(_)return new Promise((function(e,n){var a=pt(t.querySelectorAll("*")).filter(on).map(rn),r=Ne("searchPseudoElements");Re(),Promise.all(a).then((function(){r(),Fe(),e()})).catch((function(){r(),Fe(),n()}))}))}var cn=!1,ln=function(t){return t.toLowerCase().split(" ").reduce((function(t,e){var n=e.toLowerCase().split("-"),a=n[0],r=n.slice(1).join("-");if(a&&"h"===r)return t.flipX=!0,t;if(a&&"v"===r)return t.flipY=!0,t;if(r=parseFloat(r),isNaN(r))return t;switch(a){case"grow":t.size=t.size+r;break;case"shrink":t.size=t.size-r;break;case"left":t.x=t.x-r;break;case"right":t.x=t.x+r;break;case"up":t.y=t.y-r;break;case"down":t.y=t.y+r;break;case"rotate":t.rotate=t.rotate+r}return t}),{size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0})},fn={mixout:function(){return{parse:{transform:function(t){return ln(t)}}}},hooks:function(){return{parseNodeAttributes:function(t,e){var n=e.getAttribute("data-fa-transform");return n&&(t.transform=ln(n)),t}}},provides:function(t){t.generateAbstractTransformGrouping=function(t){var e=t.main,n=t.transform,a=t.containerWidth,i=t.iconWidth,o={transform:"translate(".concat(a/2," 256)")},s="translate(".concat(32*n.x,", ").concat(32*n.y,") "),c="scale(".concat(n.size/16*(n.flipX?-1:1),", ").concat(n.size/16*(n.flipY?-1:1),") "),l="rotate(".concat(n.rotate," 0 0)"),f={outer:o,inner:{transform:"".concat(s," ").concat(c," ").concat(l)},path:{transform:"translate(".concat(i/2*-1," -256)")}};return{tag:"g",attributes:r({},f.outer),children:[{tag:"g",attributes:r({},f.inner),children:[{tag:e.icon.tag,children:e.icon.children,attributes:r(r({},e.icon.attributes),f.path)}]}]}}}},un={x:0,y:0,width:"100%",height:"100%"};function dn(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return t.attributes&&(t.attributes.fill||e)&&(t.attributes.fill="black"),t}var pn={hooks:function(){return{parseNodeAttributes:function(t,e){var n=e.getAttribute("data-fa-mask"),a=n?ee(n.split(" ").map((function(t){return t.trim()}))):{prefix:null,iconName:null,rest:[]};return a.prefix||(a.prefix=Jt()),t.mask=a,t.maskId=e.getAttribute("data-fa-mask-id"),t}}},provides:function(t){t.generateAbstractMask=function(t){var e,n=t.children,a=t.attributes,i=t.main,o=t.mask,s=t.maskId,c=t.transform,l=i.width,f=i.icon,u=o.width,d=o.icon,p=function(t){var e=t.transform,n=t.containerWidth,a=t.iconWidth,r={transform:"translate(".concat(n/2," 256)")},i="translate(".concat(32*e.x,", ").concat(32*e.y,") "),o="scale(".concat(e.size/16*(e.flipX?-1:1),", ").concat(e.size/16*(e.flipY?-1:1),") "),s="rotate(".concat(e.rotate," 0 0)");return{outer:r,inner:{transform:"".concat(i," ").concat(o," ").concat(s)},path:{transform:"translate(".concat(a/2*-1," -256)")}}}({transform:c,containerWidth:u,iconWidth:l}),m={tag:"rect",attributes:r(r({},un),{},{fill:"white"})},g=f.children?{children:f.children.map(dn)}:{},b={tag:"g",attributes:r({},p.inner),children:[dn(r({tag:f.tag,attributes:r(r({},f.attributes),p.path)},g))]},v={tag:"g",attributes:r({},p.outer),children:[b]},h="mask-".concat(s||dt()),y="clip-".concat(s||dt()),x={tag:"mask",attributes:r(r({},un),{},{id:h,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[m,v]},k={tag:"defs",children:[{tag:"clipPath",attributes:{id:y},children:(e=d,"g"===e.tag?e.children:[e])},x]};return n.push(k,{tag:"rect",attributes:r({fill:"currentColor","clip-path":"url(#".concat(y,")"),mask:"url(#".concat(h,")")},un)}),{children:n,attributes:a}}}},mn={provides:function(t){var e=!1;E.matchMedia&&(e=E.matchMedia("(prefers-reduced-motion: reduce)").matches),t.missingIconAbstract=function(){var t=[],n={fill:"currentColor"},a={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};t.push({tag:"path",attributes:r(r({},n),{},{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})});var i=r(r({},a),{},{attributeName:"opacity"}),o={tag:"circle",attributes:r(r({},n),{},{cx:"256",cy:"364",r:"28"}),children:[]};return e||o.children.push({tag:"animate",attributes:r(r({},a),{},{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:r(r({},i),{},{values:"1;0;1;1;0;1;"})}),t.push(o),t.push({tag:"path",attributes:r(r({},n),{},{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:e?[]:[{tag:"animate",attributes:r(r({},i),{},{values:"1;0;0;0;0;1;"})}]}),e||t.push({tag:"path",attributes:r(r({},n),{},{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:r(r({},i),{},{values:"0;0;1;1;0;0;"})}]}),{tag:"g",attributes:{class:"missing"},children:t}}}};!function(t,e){var n=e.mixoutsTo;ae=t,re={},Object.keys(ie).forEach((function(t){-1===oe.indexOf(t)&&delete ie[t]})),ae.forEach((function(t){var e=t.mixout?t.mixout():{};if(Object.keys(e).forEach((function(t){"function"==typeof e[t]&&(n[t]=e[t]),"object"===i(e[t])&&Object.keys(e[t]).forEach((function(a){n[t]||(n[t]={}),n[t][a]=e[t][a]}))})),t.hooks){var a=t.hooks();Object.keys(a).forEach((function(t){re[t]||(re[t]=[]),re[t].push(a[t])}))}t.provides&&t.provides(ie)}))}([kt,Qe,Je,$e,tn,{hooks:function(){return{mutationObserverCallbacks:function(t){return t.pseudoElementsCallback=sn,t}}},provides:function(t){t.pseudoElements2svg=function(t){var e=t.node,n=void 0===e?O:e;ct.searchPseudoElements&&sn(n)}}},{mixout:function(){return{dom:{unwatch:function(){Re(),cn=!0}}}},hooks:function(){return{bootstrap:function(){De(se("mutationObserverCallbacks",{}))},noAuto:function(){Ke&&Ke.disconnect()},watch:function(t){var e=t.observeMutationsRoot;cn?Fe():De(se("mutationObserverCallbacks",{observeMutationsRoot:e}))}}}},fn,pn,mn,{hooks:function(){return{parseNodeAttributes:function(t,e){var n=e.getAttribute("data-fa-symbol"),a=null!==n&&(""===n||n);return t.symbol=a,t}}}}],{mixoutsTo:pe});var gn=pe.parse,bn=pe.icon,vn=n(5697),hn=n.n(vn),yn=n(7294);function xn(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function kn(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?xn(Object(n),!0).forEach((function(e){An(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):xn(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function wn(t){return wn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},wn(t)}function An(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function En(t,e){if(null==t)return{};var n,a,r=function(t,e){if(null==t)return{};var n,a,r={},i=Object.keys(t);for(a=0;a<i.length;a++)n=i[a],e.indexOf(n)>=0||(r[n]=t[n]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(a=0;a<i.length;a++)n=i[a],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}function On(t){return function(t){if(Array.isArray(t))return jn(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return jn(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return jn(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function jn(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,a=new Array(e);n<e;n++)a[n]=t[n];return a}function Nn(t){return e=t,(e-=0)==e?t:(t=t.replace(/[\-_\s]+(.)?/g,(function(t,e){return e?e.toUpperCase():""}))).substr(0,1).toLowerCase()+t.substr(1);var e}var _n=["style"];function Cn(t){return t.split(";").map((function(t){return t.trim()})).filter((function(t){return t})).reduce((function(t,e){var n,a=e.indexOf(":"),r=Nn(e.slice(0,a)),i=e.slice(a+1).trim();return r.startsWith("webkit")?t[(n=r,n.charAt(0).toUpperCase()+n.slice(1))]=i:t[r]=i,t}),{})}var Sn=!1;try{Sn=!0}catch(Ln){}function Mn(t){return t&&"object"===wn(t)&&t.prefix&&t.iconName&&t.icon?t:gn.icon?gn.icon(t):null===t?null:t&&"object"===wn(t)&&t.prefix&&t.iconName?t:Array.isArray(t)&&2===t.length?{prefix:t[0],iconName:t[1]}:"string"==typeof t?{prefix:"fas",iconName:t}:void 0}function zn(t,e){return Array.isArray(e)&&e.length>0||!Array.isArray(e)&&e?An({},t,e):{}}var Tn=yn.forwardRef((function(t,e){var n=t.icon,a=t.mask,r=t.symbol,i=t.className,o=t.title,s=t.titleId,c=t.maskId,l=Mn(n),f=zn("classes",[].concat(On(function(t){var e,n=t.beat,a=t.fade,r=t.beatFade,i=t.bounce,o=t.shake,s=t.flash,c=t.spin,l=t.spinPulse,f=t.spinReverse,u=t.pulse,d=t.fixedWidth,p=t.inverse,m=t.border,g=t.listItem,b=t.flip,v=t.size,h=t.rotation,y=t.pull,x=(An(e={"fa-beat":n,"fa-fade":a,"fa-beat-fade":r,"fa-bounce":i,"fa-shake":o,"fa-flash":s,"fa-spin":c,"fa-spin-reverse":f,"fa-spin-pulse":l,"fa-pulse":u,"fa-fw":d,"fa-inverse":p,"fa-border":m,"fa-li":g,"fa-flip":!0===b,"fa-flip-horizontal":"horizontal"===b||"both"===b,"fa-flip-vertical":"vertical"===b||"both"===b},"fa-".concat(v),null!=v),An(e,"fa-rotate-".concat(h),null!=h&&0!==h),An(e,"fa-pull-".concat(y),null!=y),An(e,"fa-swap-opacity",t.swapOpacity),e);return Object.keys(x).map((function(t){return x[t]?t:null})).filter((function(t){return t}))}(t)),On(i.split(" ")))),u=zn("transform","string"==typeof t.transform?gn.transform(t.transform):t.transform),d=zn("mask",Mn(a)),p=bn(l,kn(kn(kn(kn({},f),u),d),{},{symbol:r,title:o,titleId:s,maskId:c}));if(!p)return function(){var t;!Sn&&console&&"function"==typeof console.error&&(t=console).error.apply(t,arguments)}("Could not find icon",l),null;var m=p.abstract,g={ref:e};return Object.keys(t).forEach((function(e){Tn.defaultProps.hasOwnProperty(e)||(g[e]=t[e])})),Pn(m[0],g)}));Tn.displayName="FontAwesomeIcon",Tn.propTypes={beat:hn().bool,border:hn().bool,beatFade:hn().bool,bounce:hn().bool,className:hn().string,fade:hn().bool,flash:hn().bool,mask:hn().oneOfType([hn().object,hn().array,hn().string]),maskId:hn().string,fixedWidth:hn().bool,inverse:hn().bool,flip:hn().oneOf([!0,!1,"horizontal","vertical","both"]),icon:hn().oneOfType([hn().object,hn().array,hn().string]),listItem:hn().bool,pull:hn().oneOf(["right","left"]),pulse:hn().bool,rotation:hn().oneOf([0,90,180,270]),shake:hn().bool,size:hn().oneOf(["2xs","xs","sm","lg","xl","2xl","1x","2x","3x","4x","5x","6x","7x","8x","9x","10x"]),spin:hn().bool,spinPulse:hn().bool,spinReverse:hn().bool,symbol:hn().oneOfType([hn().bool,hn().string]),title:hn().string,titleId:hn().string,transform:hn().oneOfType([hn().string,hn().object]),swapOpacity:hn().bool},Tn.defaultProps={border:!1,className:"",mask:null,maskId:null,fixedWidth:!1,inverse:!1,flip:!1,icon:null,listItem:!1,pull:null,pulse:!1,rotation:null,size:null,spin:!1,spinPulse:!1,spinReverse:!1,beat:!1,fade:!1,beatFade:!1,bounce:!1,shake:!1,symbol:!1,title:"",titleId:null,transform:null,swapOpacity:!1};var Pn=function t(e,n){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if("string"==typeof n)return n;var r=(n.children||[]).map((function(n){return t(e,n)})),i=Object.keys(n.attributes||{}).reduce((function(t,e){var a=n.attributes[e];switch(e){case"class":t.attrs.className=a,delete n.attributes.class;break;case"style":t.attrs.style=Cn(a);break;default:0===e.indexOf("aria-")||0===e.indexOf("data-")?t.attrs[e.toLowerCase()]=a:t.attrs[Nn(e)]=a}return t}),{attrs:{}}),o=a.style,s=void 0===o?{}:o,c=En(a,_n);return i.attrs.style=kn(kn({},i.attrs.style),s),e.apply(void 0,[n.tag,kn(kn({},i.attrs),c)].concat(On(r)))}.bind(null,yn.createElement)},4184:function(t,e){var n;!function(){"use strict";var a={}.hasOwnProperty;function r(){for(var t=[],e=0;e<arguments.length;e++){var n=arguments[e];if(n){var i=typeof n;if("string"===i||"number"===i)t.push(n);else if(Array.isArray(n)){if(n.length){var o=r.apply(null,n);o&&t.push(o)}}else if("object"===i)if(n.toString===Object.prototype.toString)for(var s in n)a.call(n,s)&&n[s]&&t.push(s);else t.push(n.toString())}}return t.join(" ")}t.exports?(r.default=r,t.exports=r):void 0===(n=function(){return r}.apply(e,[]))||(t.exports=n)}()},8141:function(t,e,n){"use strict";var a=n(4836);e.__esModule=!0,e.default=function(t,e){t.classList?t.classList.add(e):(0,r.default)(t,e)||("string"==typeof t.className?t.className=t.className+" "+e:t.setAttribute("class",(t.className&&t.className.baseVal||"")+" "+e))};var r=a(n(404));t.exports=e.default},404:function(t,e){"use strict";e.__esModule=!0,e.default=function(t,e){return t.classList?!!e&&t.classList.contains(e):-1!==(" "+(t.className.baseVal||t.className)+" ").indexOf(" "+e+" ")},t.exports=e.default},602:function(t){"use strict";function e(t,e){return t.replace(new RegExp("(^|\\s)"+e+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}t.exports=function(t,n){t.classList?t.classList.remove(n):"string"==typeof t.className?t.className=e(t.className,n):t.setAttribute("class",e(t.className&&t.className.baseVal||"",n))}},9712:function(t,e){e.polyfill=t=>t},1210:function(t,e,n){"use strict";n.d(e,{Z:function(){return lt}});var a=n(7294),r=n(8595),i=n(267),o=n(1252),s=n(4578),c=n(7118),l=n(7462),f=n(3366),u=n(5697),d=n.n(u),p=n(4184),m=n.n(p),g=n(3663),b=["className","cssModule","active","tag"],v={tag:g.iC,active:d().bool,className:d().string,cssModule:d().object},h=function(t){var e=t.className,n=t.cssModule,r=t.active,i=t.tag,o=(0,f.Z)(t,b),s=(0,g.mx)(m()(e,"nav-item",!!r&&"active"),n);return a.createElement(i,(0,l.Z)({},o,{className:s}))};h.propTypes=v,h.defaultProps={tag:"li"};var y=h,x=n(7326),k=["className","cssModule","active","tag","innerRef"],w={tag:g.iC,innerRef:d().oneOfType([d().object,d().func,d().string]),disabled:d().bool,active:d().bool,className:d().string,cssModule:d().object,onClick:d().func,href:d().any},A=function(t){function e(e){var n;return(n=t.call(this,e)||this).onClick=n.onClick.bind((0,x.Z)(n)),n}(0,s.Z)(e,t);var n=e.prototype;return n.onClick=function(t){this.props.disabled?t.preventDefault():("#"===this.props.href&&t.preventDefault(),this.props.onClick&&this.props.onClick(t))},n.render=function(){var t=this.props,e=t.className,n=t.cssModule,r=t.active,i=t.tag,o=t.innerRef,s=(0,f.Z)(t,k),c=(0,g.mx)(m()(e,"nav-link",{disabled:s.disabled,active:r}),n);return a.createElement(i,(0,l.Z)({},s,{ref:o,onClick:this.onClick,className:c}))},e}(a.Component);A.propTypes=w,A.defaultProps={tag:"a"};var E=A,O=["expand","className","cssModule","light","dark","fixed","sticky","color","tag"],j={light:d().bool,dark:d().bool,full:d().bool,fixed:d().string,sticky:d().string,color:d().string,role:d().string,tag:g.iC,className:d().string,cssModule:d().object,expand:d().oneOfType([d().bool,d().string])},N=function(t){var e,n=t.expand,r=t.className,i=t.cssModule,o=t.light,s=t.dark,c=t.fixed,u=t.sticky,d=t.color,p=t.tag,b=(0,f.Z)(t,O),v=(0,g.mx)(m()(r,"navbar",function(t){return!1!==t&&(!0===t||"xs"===t?"navbar-expand":"navbar-expand-"+t)}(n),((e={"navbar-light":o,"navbar-dark":s})["bg-"+d]=d,e["fixed-"+c]=c,e["sticky-"+u]=u,e)),i);return a.createElement(p,(0,l.Z)({},b,{className:v}))};N.propTypes=j,N.defaultProps={tag:"nav",expand:!1};var _=N,C=["className","cssModule","tag"],S={tag:g.iC,className:d().string,cssModule:d().object},M=function(t){var e=t.className,n=t.cssModule,r=t.tag,i=(0,f.Z)(t,C),o=(0,g.mx)(m()(e,"navbar-brand"),n);return a.createElement(r,(0,l.Z)({},i,{className:o}))};M.propTypes=S,M.defaultProps={tag:"a"};var z=M,T=["className","cssModule","children","tag"],P={tag:g.iC,type:d().string,className:d().string,cssModule:d().object,children:d().node},L=function(t){var e=t.className,n=t.cssModule,r=t.children,i=t.tag,o=(0,f.Z)(t,T),s=(0,g.mx)(m()(e,"navbar-toggler"),n);return a.createElement(i,(0,l.Z)({"aria-label":"Toggle navigation"},o,{className:s}),r||a.createElement("span",{className:(0,g.mx)("navbar-toggler-icon",n)}))};L.propTypes=P,L.defaultProps={tag:"button",type:"button"};var I=L;function R(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var F,K=n(4317),D=["tag","isOpen","className","navbar","cssModule","children","innerRef"];function B(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function Z(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?B(Object(n),!0).forEach((function(e){R(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):B(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}var U=Z(Z({},K.Transition.propTypes),{},{isOpen:d().bool,children:d().oneOfType([d().arrayOf(d().node),d().node]),tag:g.iC,className:d().node,navbar:d().bool,cssModule:d().object,innerRef:d().oneOfType([d().func,d().string,d().object])}),W=Z(Z({},K.Transition.defaultProps),{},{isOpen:!1,appear:!1,enter:!0,exit:!0,tag:"div",timeout:g.wF.Collapse}),X=((F={})[g.E5.ENTERING]="collapsing",F[g.E5.ENTERED]="collapse show",F[g.E5.EXITING]="collapsing",F[g.E5.EXITED]="collapse",F);function V(t){return t.scrollHeight}var Y=function(t){function e(e){var n;return(n=t.call(this,e)||this).state={height:null},["onEntering","onEntered","onExit","onExiting","onExited"].forEach((function(t){n[t]=n[t].bind((0,x.Z)(n))})),n}(0,s.Z)(e,t);var n=e.prototype;return n.onEntering=function(t,e){this.setState({height:V(t)}),this.props.onEntering(t,e)},n.onEntered=function(t,e){this.setState({height:null}),this.props.onEntered(t,e)},n.onExit=function(t){this.setState({height:V(t)}),this.props.onExit(t)},n.onExiting=function(t){t.offsetHeight;this.setState({height:0}),this.props.onExiting(t)},n.onExited=function(t){this.setState({height:null}),this.props.onExited(t)},n.render=function(){var t=this,e=this.props,n=e.tag,r=e.isOpen,i=e.className,o=e.navbar,s=e.cssModule,c=e.children,u=(e.innerRef,(0,f.Z)(e,D)),d=this.state.height,p=(0,g.ei)(u,g.rb),b=(0,g.CE)(u,g.rb);return a.createElement(K.Transition,(0,l.Z)({},p,{in:r,onEntering:this.onEntering,onEntered:this.onEntered,onExit:this.onExit,onExiting:this.onExiting,onExited:this.onExited}),(function(e){var r=function(t){return X[t]||"collapse"}(e),f=(0,g.mx)(m()(i,r,o&&"navbar-collapse"),s),u=null===d?null:{height:d};return a.createElement(n,(0,l.Z)({},b,{style:Z(Z({},b.style),u),className:f,ref:t.props.innerRef}),c)}))},e}(a.Component);Y.propTypes=U,Y.defaultProps=W;var H=Y,q=["className","cssModule","tabs","pills","vertical","horizontal","justified","fill","navbar","card","tag"],G={tabs:d().bool,pills:d().bool,vertical:d().oneOfType([d().bool,d().string]),horizontal:d().string,justified:d().bool,fill:d().bool,navbar:d().bool,card:d().bool,tag:g.iC,className:d().string,cssModule:d().object},Q=function(t){var e=t.className,n=t.cssModule,r=t.tabs,i=t.pills,o=t.vertical,s=t.horizontal,c=t.justified,u=t.fill,d=t.navbar,p=t.card,b=t.tag,v=(0,f.Z)(t,q),h=(0,g.mx)(m()(e,d?"navbar-nav":"nav",!!s&&"justify-content-"+s,function(t){return!1!==t&&(!0===t||"xs"===t?"flex-column":"flex-"+t+"-column")}(o),{"nav-tabs":r,"card-header-tabs":p&&r,"nav-pills":i,"card-header-pills":p&&i,"nav-justified":c,"nav-fill":u}),n);return a.createElement(b,(0,l.Z)({},v,{className:h}))};Q.propTypes=G,Q.defaultProps={tag:"ul",vertical:!1};var J=Q;const $=t=>{let{to:e,children:n}=t;return a.createElement(y,null,a.createElement(E,{className:"link-item",tag:t=>a.createElement(c.rU,Object.assign({},t,{to:e,activeClassName:"active"}),n)}))};var tt=function(t){function e(e){var n;return(n=t.call(this,e)||this).toggle=()=>{n.setState((t=>({collapsed:!t.collapsed})))},n.state={collapsed:!1},n}return(0,s.Z)(e,t),e.prototype.render=function(){return a.createElement(_,{color:"light",light:!0,expand:"sm"},a.createElement(r.Z,null,a.createElement(z,{to:"/",tag:t=>a.createElement(c.rU,t)},"Java User Group Görlitz"),a.createElement(I,{onClick:this.toggle}),a.createElement(H,{isOpen:this.state.collapsed,navbar:!0},a.createElement(J,{className:"ml-auto",navbar:!0},a.createElement($,{to:"/"},"Aktuell"),a.createElement($,{to:"/talks"},"Vorträge"),a.createElement($,{to:"/posters"},"Plakate"),a.createElement($,{to:"/unterstuetzer"},"Unterstützer"),a.createElement($,{to:"/about"},"About"),a.createElement($,{to:"/mitmachen"},"Mitmachen")))))},e}(a.Component),et=n(4854);var nt=()=>a.createElement("footer",{className:"container footer"},a.createElement("p",null,a.createElement(et.Link,{to:"/impressum"},"Impressum")," | ",a.createElement(et.Link,{to:"/datenschutz"},"Datenschutz"))),at=n(982),rt=JSON.parse('{"K":[{"id":"javaland_2024","imageName":"javaland_2024_banner.jpg","linkTarget":"https://www.javaland.eu/","altText":"Banner für JavaLand 2024"}]}'),it=n(3024),ot=n(9417);var st=()=>a.createElement("div",{className:"sidebar"},a.createElement("div",null,a.createElement(i.Z,null,a.createElement(o.Z,{sm:"6",xs:"12",md:"12"},a.createElement("img",{alt:"Logo der JUG Görlitz",src:n(5921).default})),a.createElement(o.Z,{sm:"6",xs:"12",md:"12"},a.createElement("strong",null,"Organisiert vom ",a.createElement("br",null),a.createElement("a",{href:"https://digitale-oberlausitz.eu"},"Digitale Oberlausitz e.V.")),a.createElement("p",null,"Wir sind Mitglied im",a.createElement("br",null),a.createElement("a",{href:"http://www.ijug.eu/"},"iJUG Verband")),a.createElement("p",null,"Links:"),a.createElement("ul",{className:"list-unstyled"},a.createElement("li",null,a.createElement("a",{href:"https://ijug.social/@Juggr"},a.createElement(at.G,{icon:it.kyk})," Mastodon")),a.createElement("li",null,a.createElement("a",{href:"https://twitter.com/jug_gr"},a.createElement(at.G,{icon:it.mdU})," Twitter")),a.createElement("li",null,a.createElement("a",{href:"https://www.facebook.com/juggr"},a.createElement(at.G,{icon:it.neY})," Facebook")),a.createElement("li",null,a.createElement("a",{href:"https://groups.google.com/d/forum/juggr"},a.createElement(at.G,{icon:ot.FU$})," Mailing-List")),a.createElement("li",null,a.createElement("a",{href:"https://github.com/juggr"},a.createElement(at.G,{icon:it.zhw})," Github")),a.createElement("li",null,a.createElement("a",{href:"/jug-goerlitz.ics"},a.createElement(at.G,{icon:ot.IV4})," Kalender (ICAL)")),a.createElement("li",null,a.createElement(at.G,{icon:ot.Fwd})," Feeds:",a.createElement("ul",null,a.createElement("li",null,a.createElement("a",{href:"/atom.xml"},"Atom")),a.createElement("li",null,a.createElement("a",{href:"/rss.xml"},"RSS")),a.createElement("li",null,a.createElement("a",{href:"/feed.json"},"JSON")))))))),a.createElement("br",null),rt.K.map((t=>a.createElement("div",{key:t.id,className:"banner"},a.createElement("a",{href:t.linkTarget},a.createElement("img",{alt:t.altText,src:n(8697)(`./${t.imageName}`).default})))))),ct=n(7904);ct.ZP.config={...ct.ZP.config,autoAddCss:!1};var lt=t=>{let{children:e}=t;return a.createElement(a.Fragment,null,a.createElement(tt,null),a.createElement(r.Z,{style:{marginTop:"1em"}},a.createElement(i.Z,null,a.createElement(o.Z,{md:"9"},e),a.createElement(o.Z,{md:"3"},a.createElement(st,null)))),a.createElement(nt,null))}},129:function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;!function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var a=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(t,n):{};a.get||a.set?Object.defineProperty(e,n,a):e[n]=t[n]}e.default=t}(n(5697));var a=s(n(8141)),r=s(n(602)),i=s(n(7294)),o=s(n(644));n(4726);function s(t){return t&&t.__esModule?t:{default:t}}function c(){return c=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(t[a]=n[a])}return t},c.apply(this,arguments)}var l=function(t,e){return t&&e&&e.split(" ").forEach((function(e){return(0,a.default)(t,e)}))},f=function(t,e){return t&&e&&e.split(" ").forEach((function(e){return(0,r.default)(t,e)}))},u=function(t){var e,n;function a(){for(var e,n=arguments.length,a=new Array(n),r=0;r<n;r++)a[r]=arguments[r];return(e=t.call.apply(t,[this].concat(a))||this).onEnter=function(t,n){var a=e.getClassNames(n?"appear":"enter").className;e.removeClasses(t,"exit"),l(t,a),e.props.onEnter&&e.props.onEnter(t,n)},e.onEntering=function(t,n){var a=e.getClassNames(n?"appear":"enter").activeClassName;e.reflowAndAddClass(t,a),e.props.onEntering&&e.props.onEntering(t,n)},e.onEntered=function(t,n){var a=e.getClassNames("appear").doneClassName,r=e.getClassNames("enter").doneClassName,i=n?a+" "+r:r;e.removeClasses(t,n?"appear":"enter"),l(t,i),e.props.onEntered&&e.props.onEntered(t,n)},e.onExit=function(t){var n=e.getClassNames("exit").className;e.removeClasses(t,"appear"),e.removeClasses(t,"enter"),l(t,n),e.props.onExit&&e.props.onExit(t)},e.onExiting=function(t){var n=e.getClassNames("exit").activeClassName;e.reflowAndAddClass(t,n),e.props.onExiting&&e.props.onExiting(t)},e.onExited=function(t){var n=e.getClassNames("exit").doneClassName;e.removeClasses(t,"exit"),l(t,n),e.props.onExited&&e.props.onExited(t)},e.getClassNames=function(t){var n=e.props.classNames,a="string"==typeof n,r=a?(a&&n?n+"-":"")+t:n[t];return{className:r,activeClassName:a?r+"-active":n[t+"Active"],doneClassName:a?r+"-done":n[t+"Done"]}},e}n=t,(e=a).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n;var r=a.prototype;return r.removeClasses=function(t,e){var n=this.getClassNames(e),a=n.className,r=n.activeClassName,i=n.doneClassName;a&&f(t,a),r&&f(t,r),i&&f(t,i)},r.reflowAndAddClass=function(t,e){e&&(t&&t.scrollTop,l(t,e))},r.render=function(){var t=c({},this.props);return delete t.classNames,i.default.createElement(o.default,c({},t,{onEnter:this.onEnter,onEntered:this.onEntered,onEntering:this.onEntering,onExit:this.onExit,onExiting:this.onExiting,onExited:this.onExited}))},a}(i.default.Component);u.defaultProps={classNames:""},u.propTypes={};var d=u;e.default=d,t.exports=e.default},6093:function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;o(n(5697));var a=o(n(7294)),r=n(3935),i=o(n(2381));function o(t){return t&&t.__esModule?t:{default:t}}var s=function(t){var e,n;function o(){for(var e,n=arguments.length,a=new Array(n),r=0;r<n;r++)a[r]=arguments[r];return(e=t.call.apply(t,[this].concat(a))||this).handleEnter=function(){for(var t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return e.handleLifecycle("onEnter",0,n)},e.handleEntering=function(){for(var t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return e.handleLifecycle("onEntering",0,n)},e.handleEntered=function(){for(var t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return e.handleLifecycle("onEntered",0,n)},e.handleExit=function(){for(var t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return e.handleLifecycle("onExit",1,n)},e.handleExiting=function(){for(var t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return e.handleLifecycle("onExiting",1,n)},e.handleExited=function(){for(var t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return e.handleLifecycle("onExited",1,n)},e}n=t,(e=o).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n;var s=o.prototype;return s.handleLifecycle=function(t,e,n){var i,o=this.props.children,s=a.default.Children.toArray(o)[e];s.props[t]&&(i=s.props)[t].apply(i,n),this.props[t]&&this.props[t]((0,r.findDOMNode)(this))},s.render=function(){var t=this.props,e=t.children,n=t.in,r=function(t,e){if(null==t)return{};var n,a,r={},i=Object.keys(t);for(a=0;a<i.length;a++)n=i[a],e.indexOf(n)>=0||(r[n]=t[n]);return r}(t,["children","in"]),o=a.default.Children.toArray(e),s=o[0],c=o[1];return delete r.onEnter,delete r.onEntering,delete r.onEntered,delete r.onExit,delete r.onExiting,delete r.onExited,a.default.createElement(i.default,r,n?a.default.cloneElement(s,{key:"first",onEnter:this.handleEnter,onEntering:this.handleEntering,onEntered:this.handleEntered}):a.default.cloneElement(c,{key:"second",onEnter:this.handleExit,onEntering:this.handleExiting,onEntered:this.handleExited}))},o}(a.default.Component);s.propTypes={};var c=s;e.default=c,t.exports=e.default},644:function(t,e,n){"use strict";e.__esModule=!0,e.default=e.EXITING=e.ENTERED=e.ENTERING=e.EXITED=e.UNMOUNTED=void 0;!function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var a=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(t,n):{};a.get||a.set?Object.defineProperty(e,n,a):e[n]=t[n]}e.default=t}(n(5697));var a=s(n(7294)),r=s(n(3935)),i=n(9712),o=(n(4726),s(n(7882)));function s(t){return t&&t.__esModule?t:{default:t}}var c="unmounted";e.UNMOUNTED=c;var l="exited";e.EXITED=l;var f="entering";e.ENTERING=f;var u="entered";e.ENTERED=u;var d="exiting";e.EXITING=d;var p=function(t){var e,n;function i(e,n){var a;a=t.call(this,e,n)||this;var r,i=n&&!n.isMounting?e.enter:e.appear;return a.appearStatus=null,e.in?i?(r=l,a.appearStatus=f):r=u:r=e.unmountOnExit||e.mountOnEnter?c:l,a.state={status:r},a.nextCallback=null,a}n=t,(e=i).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n,i.getDerivedStateFromProps=function(t,e){return t.in&&e.status===c?{status:l}:null};var s=i.prototype;return s.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},s.componentDidUpdate=function(t){var e=null;if(t!==this.props){var n=this.state.status;this.props.in?n!==f&&n!==u&&(e=f):n!==f&&n!==u||(e=d)}this.updateStatus(!1,e)},s.componentWillUnmount=function(){this.cancelNextCallback()},s.getTimeouts=function(){var t,e,n,a=this.props.timeout;return t=e=n=a,null!=a&&"number"!=typeof a&&(t=a.exit,e=a.enter,n=void 0!==a.appear?a.appear:e),{exit:t,enter:e,appear:n}},s.updateStatus=function(t,e){if(void 0===t&&(t=!1),null!==e){this.cancelNextCallback();var n=r.default.findDOMNode(this);e===f?this.performEnter(n,t):this.performExit(n)}else this.props.unmountOnExit&&this.state.status===l&&this.setState({status:c})},s.performEnter=function(t,e){var n=this,a=this.props.enter,r=this.context?this.context.isMounting:e,i=this.getTimeouts(),o=r?i.appear:i.enter;e||a?(this.props.onEnter(t,r),this.safeSetState({status:f},(function(){n.props.onEntering(t,r),n.onTransitionEnd(t,o,(function(){n.safeSetState({status:u},(function(){n.props.onEntered(t,r)}))}))}))):this.safeSetState({status:u},(function(){n.props.onEntered(t)}))},s.performExit=function(t){var e=this,n=this.props.exit,a=this.getTimeouts();n?(this.props.onExit(t),this.safeSetState({status:d},(function(){e.props.onExiting(t),e.onTransitionEnd(t,a.exit,(function(){e.safeSetState({status:l},(function(){e.props.onExited(t)}))}))}))):this.safeSetState({status:l},(function(){e.props.onExited(t)}))},s.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},s.safeSetState=function(t,e){e=this.setNextCallback(e),this.setState(t,e)},s.setNextCallback=function(t){var e=this,n=!0;return this.nextCallback=function(a){n&&(n=!1,e.nextCallback=null,t(a))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},s.onTransitionEnd=function(t,e,n){this.setNextCallback(n);var a=null==e&&!this.props.addEndListener;t&&!a?(this.props.addEndListener&&this.props.addEndListener(t,this.nextCallback),null!=e&&setTimeout(this.nextCallback,e)):setTimeout(this.nextCallback,0)},s.render=function(){var t=this.state.status;if(t===c)return null;var e=this.props,n=e.children,r=function(t,e){if(null==t)return{};var n,a,r={},i=Object.keys(t);for(a=0;a<i.length;a++)n=i[a],e.indexOf(n)>=0||(r[n]=t[n]);return r}(e,["children"]);if(delete r.in,delete r.mountOnEnter,delete r.unmountOnExit,delete r.appear,delete r.enter,delete r.exit,delete r.timeout,delete r.addEndListener,delete r.onEnter,delete r.onEntering,delete r.onEntered,delete r.onExit,delete r.onExiting,delete r.onExited,"function"==typeof n)return a.default.createElement(o.default.Provider,{value:null},n(t,r));var i=a.default.Children.only(n);return a.default.createElement(o.default.Provider,{value:null},a.default.cloneElement(i,r))},i}(a.default.Component);function m(){}p.contextType=o.default,p.propTypes={},p.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:m,onEntering:m,onEntered:m,onExit:m,onExiting:m,onExited:m},p.UNMOUNTED=0,p.EXITED=1,p.ENTERING=2,p.ENTERED=3,p.EXITING=4;var g=(0,i.polyfill)(p);e.default=g},2381:function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;s(n(5697));var a=s(n(7294)),r=n(9712),i=s(n(7882)),o=n(537);function s(t){return t&&t.__esModule?t:{default:t}}function c(){return c=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(t[a]=n[a])}return t},c.apply(this,arguments)}function l(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}var f=Object.values||function(t){return Object.keys(t).map((function(e){return t[e]}))},u=function(t){var e,n;function r(e,n){var a,r=(a=t.call(this,e,n)||this).handleExited.bind(l(l(a)));return a.state={contextValue:{isMounting:!0},handleExited:r,firstRender:!0},a}n=t,(e=r).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n;var s=r.prototype;return s.componentDidMount=function(){this.mounted=!0,this.setState({contextValue:{isMounting:!1}})},s.componentWillUnmount=function(){this.mounted=!1},r.getDerivedStateFromProps=function(t,e){var n=e.children,a=e.handleExited;return{children:e.firstRender?(0,o.getInitialChildMapping)(t,a):(0,o.getNextChildMapping)(t,n,a),firstRender:!1}},s.handleExited=function(t,e){var n=(0,o.getChildMapping)(this.props.children);t.key in n||(t.props.onExited&&t.props.onExited(e),this.mounted&&this.setState((function(e){var n=c({},e.children);return delete n[t.key],{children:n}})))},s.render=function(){var t=this.props,e=t.component,n=t.childFactory,r=function(t,e){if(null==t)return{};var n,a,r={},i=Object.keys(t);for(a=0;a<i.length;a++)n=i[a],e.indexOf(n)>=0||(r[n]=t[n]);return r}(t,["component","childFactory"]),o=this.state.contextValue,s=f(this.state.children).map(n);return delete r.appear,delete r.enter,delete r.exit,null===e?a.default.createElement(i.default.Provider,{value:o},s):a.default.createElement(i.default.Provider,{value:o},a.default.createElement(e,r,s))},r}(a.default.Component);u.propTypes={},u.defaultProps={component:"div",childFactory:function(t){return t}};var d=(0,r.polyfill)(u);e.default=d,t.exports=e.default},7882:function(t,e,n){"use strict";var a;e.__esModule=!0,e.default=void 0;var r=((a=n(7294))&&a.__esModule?a:{default:a}).default.createContext(null);e.default=r,t.exports=e.default},4317:function(t,e,n){"use strict";var a=s(n(129)),r=s(n(6093)),i=s(n(2381)),o=s(n(644));function s(t){return t&&t.__esModule?t:{default:t}}t.exports={Transition:o.default,TransitionGroup:i.default,ReplaceTransition:r.default,CSSTransition:a.default}},537:function(t,e,n){"use strict";e.__esModule=!0,e.getChildMapping=r,e.mergeChildMappings=i,e.getInitialChildMapping=function(t,e){return r(t.children,(function(n){return(0,a.cloneElement)(n,{onExited:e.bind(null,n),in:!0,appear:o(n,"appear",t),enter:o(n,"enter",t),exit:o(n,"exit",t)})}))},e.getNextChildMapping=function(t,e,n){var s=r(t.children),c=i(e,s);return Object.keys(c).forEach((function(r){var i=c[r];if((0,a.isValidElement)(i)){var l=r in e,f=r in s,u=e[r],d=(0,a.isValidElement)(u)&&!u.props.in;!f||l&&!d?f||!l||d?f&&l&&(0,a.isValidElement)(u)&&(c[r]=(0,a.cloneElement)(i,{onExited:n.bind(null,i),in:u.props.in,exit:o(i,"exit",t),enter:o(i,"enter",t)})):c[r]=(0,a.cloneElement)(i,{in:!1}):c[r]=(0,a.cloneElement)(i,{onExited:n.bind(null,i),in:!0,exit:o(i,"exit",t),enter:o(i,"enter",t)})}})),c};var a=n(7294);function r(t,e){var n=Object.create(null);return t&&a.Children.map(t,(function(t){return t})).forEach((function(t){n[t.key]=function(t){return e&&(0,a.isValidElement)(t)?e(t):t}(t)})),n}function i(t,e){function n(n){return n in e?e[n]:t[n]}t=t||{},e=e||{};var a,r=Object.create(null),i=[];for(var o in t)o in e?i.length&&(r[o]=i,i=[]):i.push(o);var s={};for(var c in e){if(r[c])for(a=0;a<r[c].length;a++){var l=r[c][a];s[r[c][a]]=n(l)}s[c]=n(c)}for(a=0;a<i.length;a++)s[i[a]]=n(i[a]);return s}function o(t,e,n){return null!=n[e]?n[e]:t.props[e]}},4726:function(t,e,n){"use strict";e.__esModule=!0,e.classNamesShape=e.timeoutsShape=void 0;var a;(a=n(5697))&&a.__esModule;e.timeoutsShape=null;e.classNamesShape=null},1252:function(t,e,n){"use strict";var a=n(7462),r=n(3366),i=n(7294),o=n(5697),s=n.n(o),c=n(4184),l=n.n(c),f=n(3663),u=["className","cssModule","widths","tag"],d=s().oneOfType([s().number,s().string]),p=s().oneOfType([s().bool,s().number,s().string,s().shape({size:s().oneOfType([s().bool,s().number,s().string]),order:d,offset:d})]),m={tag:f.iC,xs:p,sm:p,md:p,lg:p,xl:p,className:s().string,cssModule:s().object,widths:s().array},g={tag:"div",widths:["xs","sm","md","lg","xl"]},b=function(t,e,n){return!0===n||""===n?t?"col":"col-"+e:"auto"===n?t?"col-auto":"col-"+e+"-auto":t?"col-"+n:"col-"+e+"-"+n},v=function(t){var e=t.className,n=t.cssModule,o=t.widths,s=t.tag,c=(0,r.Z)(t,u),d=[];o.forEach((function(e,a){var r=t[e];if(delete c[e],r||""===r){var i=!a;if((0,f.Kn)(r)){var o,s=i?"-":"-"+e+"-",u=b(i,e,r.size);d.push((0,f.mx)(l()(((o={})[u]=r.size||""===r.size,o["order"+s+r.order]=r.order||0===r.order,o["offset"+s+r.offset]=r.offset||0===r.offset,o)),n))}else{var p=b(i,e,r);d.push(p)}}})),d.length||d.push("col");var p=(0,f.mx)(l()(e,d),n);return i.createElement(s,(0,a.Z)({},c,{className:p}))};v.propTypes=m,v.defaultProps=g,e.Z=v},8595:function(t,e,n){"use strict";var a=n(7462),r=n(3366),i=n(7294),o=n(5697),s=n.n(o),c=n(4184),l=n.n(c),f=n(3663),u=["className","cssModule","fluid","tag"],d={tag:f.iC,fluid:s().oneOfType([s().bool,s().string]),className:s().string,cssModule:s().object},p=function(t){var e=t.className,n=t.cssModule,o=t.fluid,s=t.tag,c=(0,r.Z)(t,u),d="container";!0===o?d="container-fluid":o&&(d="container-"+o);var p=(0,f.mx)(l()(e,d),n);return i.createElement(s,(0,a.Z)({},c,{className:p}))};p.propTypes=d,p.defaultProps={tag:"div"},e.Z=p},267:function(t,e,n){"use strict";var a=n(7462),r=n(3366),i=n(7294),o=n(5697),s=n.n(o),c=n(4184),l=n.n(c),f=n(3663),u=["className","cssModule","noGutters","tag","form","widths"],d=s().oneOfType([s().number,s().string]),p={tag:f.iC,noGutters:s().bool,className:s().string,cssModule:s().object,form:s().bool,xs:d,sm:d,md:d,lg:d,xl:d},m={tag:"div",widths:["xs","sm","md","lg","xl"]},g=function(t){var e=t.className,n=t.cssModule,o=t.noGutters,s=t.tag,c=t.form,d=t.widths,p=(0,r.Z)(t,u),m=[];d.forEach((function(e,n){var a=t[e];if(delete p[e],a){var r=!n;m.push(r?"row-cols-"+a:"row-cols-"+e+"-"+a)}}));var g=(0,f.mx)(l()(e,o?"no-gutters":null,c?"form-row":"row",m),n);return i.createElement(s,(0,a.Z)({},p,{className:g}))};g.propTypes=p,g.defaultProps=m,e.Z=g},3663:function(t,e,n){"use strict";n.d(e,{CE:function(){return s},E5:function(){return p},Kn:function(){return m},ei:function(){return c},iC:function(){return f},mx:function(){return o},rb:function(){return d},wF:function(){return u}});var a,r=n(5697),i=n.n(r);function o(t,e){return void 0===t&&(t=""),void 0===e&&(e=a),e?t.split(" ").map((function(t){return e[t]||t})).join(" "):t}function s(t,e){var n={};return Object.keys(t).forEach((function(a){-1===e.indexOf(a)&&(n[a]=t[a])})),n}function c(t,e){for(var n,a=Array.isArray(e)?e:[e],r=a.length,i={};r>0;)i[n=a[r-=1]]=t[n];return i}var l="object"==typeof window&&window.Element||function(){};i().oneOfType([i().string,i().func,function(t,e,n){if(!(t[e]instanceof l))return new Error("Invalid prop `"+e+"` supplied to `"+n+"`. Expected prop to be an instance of Element. Validation failed.")},i().shape({current:i().any})]);var f=i().oneOfType([i().func,i().string,i().shape({$$typeof:i().symbol,render:i().func}),i().arrayOf(i().oneOfType([i().func,i().string,i().shape({$$typeof:i().symbol,render:i().func})]))]),u={Fade:150,Collapse:350,Modal:300,Carousel:600},d=["in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","onEnter","onEntering","onEntered","onExit","onExiting","onExited"],p={ENTERING:"entering",ENTERED:"entered",EXITING:"exiting",EXITED:"exited"};"undefined"==typeof window||!window.document||window.document.createElement;function m(t){var e=typeof t;return null!=t&&("object"===e||"function"===e)}},8700:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/35c3-congress-everywhere-c6d1ad94c430954d27dc3c4f9347a364.png"},6724:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/WJAX_2019_266x145-55e9387b7bc7109fb516e61b64516677.jpg"},4366:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/banner_javaland_2023-bbf849f85a3eda8be541845b1f92ef96.jpg"},9101:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/banner_jax_2023-bc5c6880e35452bd858c7ef22bd3e1cc.jpg"},9438:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/banner_jug_saxony_day_2022-34f9a0dd801252b721484ceda6443ff4.png"},8337:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/banner_wjax_2022-22f85ce5d6858bea82b6b48da9316ec5.jpg"},8799:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/entwickler_tutorials_logo-d1aef911fdec3b2ac40683f00947db5a.jpg"},4661:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/grillen-0c716ec2dd81bef5ed8583454d2defbf.jpg"},9435:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/icon-83fc2d3536f1fb90c67ad3e83e89d25f.png"},4652:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/javaland_2019_banner-089cf335f7276dc79077402b7302112f.jpg"},8735:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/javaland_2020_banner-c3150179ad8ff882658bab7c381512bf.jpg"},6365:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/javaland_2022_banner-2b21bf73ef9d13468083f1c54cd4ee44.jpg"},2295:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/javaland_2024_banner-5b59695001cca42ff6a67f0eae6c1923.jpg"},4059:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/javaland_2024_banner_big-e42472f5949df5b70f614cdd2fcfa716.jpg"},1974:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/jax19_banner-7156748b7a4266599c288d2d16cc1edf.jpg"},6846:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/jax20_banner-eeedb179c6845ef6e8745456dcc55f6d.jpg"},2713:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/jax21_banner-663509eac051c7c0b71a7ec4fb437dee.jpg"},7425:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/jax22_banner-5841054a4c1366fdb4078210ccadd02e.jpg"},6956:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/jax_banner-eaf76932797b8cdfbc49630ac9ae5ec3.png"},6331:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/jdd_2022_banner-cc247ae146c29aa7fc10b7b5167aba5f.png"},8618:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/jdd_2023_banner-3c34056264fdd0f4b44386abfb3f6422.jpg"},2607:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/kickerking_logo-56e0c6abf8c0d609c15ca2da730a33ee.jpg"},6462:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/lernfabrik-efe6c92d2c437c2f636b8556a6997d04.png"},5921:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/logo-1d738a22f39c568c148bd4f6433b2ff4.png"},2377:function(t,e,n){"use strict";n.r(e),e.default="data:image/jpeg;base64,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"},3087:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/mitp_logo_gross-6e7375d19fabf502c174d0ad5c5e8bea.png"},2186:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/christian_kuemmel-0347c7fb7d78824aa63e233f88dffd44.jpg"},9429:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/christoph_menzel-b4b6a917ca643c903f625caafb618b50.png"},4160:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/damian_dudziec-30f60ff25d6e0a6722a507b94aafe3d2.png"},2779:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/daniel_fesenmeyer-6f6477e2c7049f9abfbfd082fff388fb.jpg"},2258:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/daniel_sulyok-eeee198794fffc1d559c61993cf9d5fd.jpg"},9880:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/denny.israel-c4d6c7197b3f4945e6589cd7a084bf38.jpg"},650:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/gerrit_grunwald-d23d6f6ff244d911d3b7f020ee11a394.jpg"},3887:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/gregor_trefs-825faee3a18b040f9509c18b4568f760.png"},8807:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/hannes_kretschmer-c9cb2402d5c4f5daa47eda2433057a93.jpg"},7883:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/hendrik_ebbers-2ed57b5c4e2c1d1fd234f9c41f5c420e.png"},6775:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/jens_leuschner-48076ed40eef2f9361651fb1f947ecf2.jpg"},9284:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/joerg_laessig-eb39f697b764842bbeca75e4ccbfeffc.jpg"},1266:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/lars_roewekamp-b3ea86bde9c25bb281593ce876b4dc99.png"},6459:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/maik_wagner-89df35798ec379960b97c1c0931fd742.jpg"},3022:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/manuel_mauky-a216cd990743c6e5169525d5ad73d4e0.jpg"},1096:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/marco_gotthans-c39f9f81f98ae3b9195d297e3cb4cd99.png"},1226:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/mariusz_zienkiewicz-b5c53411e3d6cb7fa6979441ee4ee402.jpg"},258:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/markus_kett-bdd63f175e217c2cbd7092ad5c98f837.png"},9773:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/markus_ullrich-e802330df6a22f6444fed84b5e04b1c2.jpg"},3545:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/markus_weiland-6b6225ccdec6091cce482b79a2978750.jpg"},1905:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/marlene_knoche-eebdcba4bf110a0be3150bfcca614a99.jpg"},8662:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/max_wielsch-9e0e7d64ad8f1d33cdf8c3cf983a4a74.jpg"},8294:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/michael_hunger-99b6a2ea0ee3b58a67d50570e5b82639.png"},6371:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/michael_simons-d64a89b53c50eb414d0812c291f6034e.jpg"},3030:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/nico_foerster-67056fb35ac3744a13faece5302e6b79.jpg"},6664:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/oliver_drotbohm-388d8f59a5e927511121e4138277e4b6.png"},6345:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/patryk_lewandowski-4546bdb44e6a627571416b678b3ba8a8.jpg"},7102:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/pawel_adaszewski-3d03250d6e6c2c7f91c1888aae864c93.jpg"},369:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/roland_weisleder-df413237239aecefd7d0743224f4d121.jpg"},3955:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/sergej_tihonov-e06adf34f9ec9680fa9bc80594bfe8b0.jpg"},2947:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/simon_roloff-a3c56d1d0c1b361c98d7ae20fd453aa3.png"},3017:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/stefan_bley-fdea1a834e82acc998437adc03cb264b.jpg"},7489:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/stefan_zoerner-de8ec4c8f9fcaeb93430ac5e3bcb9c11.jpg"},5267:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/stefan_zoerner_2-b7e42e02c946884aa386a5f2d8f48d13.jpg"},1946:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/stephan_strehler-4a163d44cae1a55852c570c2378fb7ae.jpg"},8576:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/sven_hoffmann-e26687caf9bd0601eae888558eb65150.jpg"},1626:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/thilo_frotscher-3c8f640270ed0f5cc7568af5b1d1c2c0.jpg"},4984:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/uwe_manteuffel-8114dc136d03e15e9601c2262df2f0c1.jpg"},4189:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/wolfgang_weigend-d8102173c06904bfddaf28fcfce91e19.jpg"},1941:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2016_01-d966621696c2b1c19dbe9b66378b1fea.png"},2601:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2016_03-7a057c1c415a722e539905543aa25254.png"},6337:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2016_05-033bee59571b15df5df146a1b6fb64a4.png"},6223:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2016_09-dea570ddfd68d92913587725dca3de3e.png"},3895:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2016_11-03b6d7da4bd7c67f0b2af9f9ef722486.png"},7738:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2017_01-9139600192a183f0e227415c38a3a0c1.png"},9474:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2017_02-79fae7d293949c9f22d118c8cfc2a79b.png"},6059:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2017_03-b5b1d0b94001a2fe20f7204603857151.png"},4076:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2017_04-ede659ffb71c073c02473ee425c031f4.png"},4087:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2017_05-9db3e7ead6eb46db91a6d1a3ab90eef6.png"},2195:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2017_07-73f719582646f6a79c80b1c23c68e785.png"},7189:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2017_10-671ebe33d4c06ae3ed85b430792d8fc4.png"},4092:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2017_11-6f8a316b573a05fe0d75803c55e9f682.png"},1584:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2018_01-a3b57b49681719103100c434c462a40f.png"},4466:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2018_02-159b14fa302afb2b6d58c0b2e7da74d5.png"},1440:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2018_03-1cc45da49f0c4722ce031504e9f464d9.png"},3211:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2018_04-4f511f39b86be771fad22e5844350f7e.png"},9378:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2018_05-23d6d639a541e033911bcd0ce28c07a6.png"},2757:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2018_06-b986bed18b94821c4effba69f8418d40.png"},4566:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2018_09-e686dd9a4dd09e9273ee9330abbc5a1b.png"},6686:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2018_11-5285241fc6482f5c399ce71128d436a4.png"},4633:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2019_01-9d0fe3cddd74fe102b73fe2ed600814e.png"},3019:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2019_02-db09d0b46fe10650ce99a55cf45dd761.png"},4843:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2019_03-8aa66165d15f5467aa29d75d6c714b19.png"},3792:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2019_04-928b54e2c9fdc98e3a8c2f07af460a28.png"},9108:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2019_05-b3ffd0d83022f50c00137c387b1e5198.png"},56:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2019_06-8df07980c71663696909e4508b42a113.png"},5172:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2019_11-3c93d7cda2405a7a1c36c2154da1aed4.png"},6619:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2020-01-62c3fbe04afc6d77091b7197e74940d1.png"},6328:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2020_04-e8cfc3c64fc8cdcc823625f91d832f1c.png"},3302:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2020_07-dbc06d58631a1697651ae157d44b7d09.png"},6436:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2020_11-cdcfef5b2674d29f1a08c9b7cf0ebad0.png"},6807:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2021_01-08228b1141fc72ec0d867d08ce89e14f.png"},2318:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2021_06-c0638a51678741cace9ec84a9dc907c9.png"},4884:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2022_06-510beda12016fc41e12ee29961cb5fe6.png"},4832:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2022_10-44c9c932fdf813596036a584b4798eb2.png"},5646:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2022_11-6c0f7d8395ba77bb26ab83224867e54a.png"},8325:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2023_01-faaef47c50c0892c4dff9bef2b2d1425.png"},1461:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2023_02-8e9d416e7f80cec11420d8ba550623ea.png"},9750:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2023_03-cc5b88f0a7dcf4a1bdf40ca0bbb74d56.png"},7035:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2023_04-4bcd6edf02f22ddb9377f65606c7ad51.png"},9907:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2023_05-5a5385953c33a10a67e4285d5777a21a.png"},509:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2023_06-b66f0d9df73973330992646d28f9fa74.png"},5871:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2023_09-166049e8b21b32600dbab5da6d7a1a70.png"},4881:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2023_10-e7c85fc8de82208879733a49c119aa9b.png"},2820:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2023_11-70c9a4a049551c4e7d406192b58232cf.png"},8797:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2024_01-d8038a51178d407567b13e90a08e13db.png"},6702:function(t,e,n){"use strict";n.r(e),e.default="data:image/png;base64,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"},3155:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/saxsys_logo-9586022129a4e22597f0771c68d11d42.jpg"},2753:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/wjax21_banner-7ccb9feb88e112d9494f555db2c363d0.jpg"},2398:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/zeiss-logo-rgb-7d623d17dbef71d31522f884205cdece.png"},7462:function(t,e,n){"use strict";function a(){return a=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(t[a]=n[a])}return t},a.apply(this,arguments)}n.d(e,{Z:function(){return a}})},3366:function(t,e,n){"use strict";function a(t,e){if(null==t)return{};var n,a,r={},i=Object.keys(t);for(a=0;a<i.length;a++)n=i[a],e.indexOf(n)>=0||(r[n]=t[n]);return r}n.d(e,{Z:function(){return a}})}}]); +//# sourceMappingURL=commons-6a5a6cacbb3d8d41013b.js.map \ No newline at end of file diff --git a/commons-f537f61ffd60a999026d.js.LICENSE.txt b/commons-6a5a6cacbb3d8d41013b.js.LICENSE.txt similarity index 100% rename from commons-f537f61ffd60a999026d.js.LICENSE.txt rename to commons-6a5a6cacbb3d8d41013b.js.LICENSE.txt diff --git a/commons-6a5a6cacbb3d8d41013b.js.map b/commons-6a5a6cacbb3d8d41013b.js.map new file mode 100644 index 000000000..993ce9c1e --- /dev/null +++ b/commons-6a5a6cacbb3d8d41013b.js.map @@ -0,0 +1 @@ +{"version":3,"file":"commons-6a5a6cacbb3d8d41013b.js","mappings":"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B,6FCAzC,UAAe,IAA0B,6GCAzC,UAAe,IAA0B,6GCAzC,UAAe,IAA0B,6GCAzC,UAAe,IAA0B,6GCAzC,UAAe,IAA0B,iHCAzC,UAAe,IAA0B,qGCAzC,UAAe,IAA0B,qGCAzC,UAAe,IAA0B,qGCAzC,UAAe,IAA0B,qGCAzC,UAAe,IAA0B,mGCAzC,UAAe,IAA0B,wGCAzC,UAAe,IAA0B,wGCAzC,UAAe,IAA0B,wGCAzC,UAAe,IAA0B,mGCAzC,UAAe,IAA0B,6FCAzC,kzKCAA,UAAe,IAA0B,wGCAzC,UAAe,IAA0B,0GCAzC,UAAe,IAA0B,yGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,0GCAzC,UAAe,IAA0B,sGCAzC,UAAe,IAA0B,oGCAzC,UAAe,IAA0B,wGCAzC,UAAe,IAA0B,qGCAzC,UAAe,IAA0B,0GCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,sGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,oGCAzC,UAAe,IAA0B,qGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,2GCAzC,UAAe,IAA0B,oGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,oGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,sGCAzC,UAAe,IAA0B,wGCAzC,UAAe,IAA0B,2GCAzC,UAAe,IAA0B,wGCAzC,UAAe,IAA0B,yGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,qGCAzC,UAAe,IAA0B,oGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,yGCAzC,UAAe,IAA0B,yGCAzC,UAAe,IAA0B,sGCAzC,UAAe,IAA0B,wGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,yGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,qGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,sGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,y0TCAA,UAAe,IAA0B,oGCAzC,UAAe,IAA0B,sGCAzC,UAAe,IAA0B,gGCA1B,SAASxW,IAYtB,OAXAA,EAAWzD,OAAO0D,OAAS1D,OAAO0D,OAAOic,OAAS,SAAUhd,GAC1D,IAAK,IAAIE,EAAI,EAAGA,EAAIc,UAAUb,OAAQD,IAAK,CACzC,IAAIe,EAASD,UAAUd,GACvB,IAAK,IAAIO,KAAOQ,EACV5D,OAAOwD,UAAUK,eAAeC,KAAKF,EAAQR,KAC/CT,EAAOS,GAAOQ,EAAOR,GAG3B,CACA,OAAOT,CACT,EACOc,EAAS0Y,MAAMxI,KAAMhQ,UAC9B,oECbe,SAASipB,EAA8BhpB,EAAQ8oB,GAC5D,GAAc,MAAV9oB,EAAgB,MAAO,CAAC,EAC5B,IAEIR,EAAKP,EAFLF,EAAS,CAAC,EACVgqB,EAAa3sB,OAAOD,KAAK6D,GAE7B,IAAKf,EAAI,EAAGA,EAAI8pB,EAAW7pB,OAAQD,IACjCO,EAAMupB,EAAW9pB,GACb6pB,EAAS5qB,QAAQsB,IAAQ,IAC7BT,EAAOS,GAAOQ,EAAOR,IAEvB,OAAOT,CACT","sources":["webpack://jug-goerlitz/./content/images/ sync ^\\.\\/.*$","webpack://jug-goerlitz/./node_modules/@fortawesome/fontawesome/index.es.js","webpack://jug-goerlitz/./node_modules/@fortawesome/fontawesome-svg-core/index.mjs","webpack://jug-goerlitz/./node_modules/@fortawesome/react-fontawesome/index.es.js","webpack://jug-goerlitz/./node_modules/classnames/index.js","webpack://jug-goerlitz/./node_modules/dom-helpers/class/addClass.js","webpack://jug-goerlitz/./node_modules/dom-helpers/class/hasClass.js","webpack://jug-goerlitz/./node_modules/dom-helpers/class/removeClass.js","webpack://jug-goerlitz/./.cache/react-lifecycles-compat.js","webpack://jug-goerlitz/./node_modules/reactstrap/es/NavItem.js","webpack://jug-goerlitz/./node_modules/reactstrap/es/NavLink.js","webpack://jug-goerlitz/./node_modules/reactstrap/es/Navbar.js","webpack://jug-goerlitz/./node_modules/reactstrap/es/NavbarBrand.js","webpack://jug-goerlitz/./node_modules/reactstrap/es/NavbarToggler.js","webpack://jug-goerlitz/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://jug-goerlitz/./node_modules/reactstrap/es/Collapse.js","webpack://jug-goerlitz/./node_modules/reactstrap/es/Nav.js","webpack://jug-goerlitz/./src/components/page-header.tsx","webpack://jug-goerlitz/./src/components/page-footer.tsx","webpack://jug-goerlitz/./src/components/sidebar.tsx","webpack://jug-goerlitz/./src/components/layout.tsx","webpack://jug-goerlitz/./node_modules/react-transition-group/CSSTransition.js","webpack://jug-goerlitz/./node_modules/react-transition-group/ReplaceTransition.js","webpack://jug-goerlitz/./node_modules/react-transition-group/Transition.js","webpack://jug-goerlitz/./node_modules/react-transition-group/TransitionGroup.js","webpack://jug-goerlitz/./node_modules/react-transition-group/TransitionGroupContext.js","webpack://jug-goerlitz/./node_modules/react-transition-group/index.js","webpack://jug-goerlitz/./node_modules/react-transition-group/utils/ChildMapping.js","webpack://jug-goerlitz/./node_modules/react-transition-group/utils/PropTypes.js","webpack://jug-goerlitz/./node_modules/reactstrap/es/Col.js","webpack://jug-goerlitz/./node_modules/reactstrap/es/Container.js","webpack://jug-goerlitz/./node_modules/reactstrap/es/Row.js","webpack://jug-goerlitz/./node_modules/reactstrap/es/utils.js","webpack://jug-goerlitz/./content/images/35c3-congress-everywhere.png","webpack://jug-goerlitz/./content/images/WJAX_2019_266x145.jpg","webpack://jug-goerlitz/./content/images/banner_javaland_2023.jpg","webpack://jug-goerlitz/./content/images/banner_jax_2023.jpg","webpack://jug-goerlitz/./content/images/banner_jug_saxony_day_2022.png","webpack://jug-goerlitz/./content/images/banner_wjax_2022.jpg","webpack://jug-goerlitz/./content/images/entwickler_tutorials_logo.jpg","webpack://jug-goerlitz/./content/images/grillen.jpg","webpack://jug-goerlitz/./content/images/icon.png","webpack://jug-goerlitz/./content/images/javaland_2019_banner.jpg","webpack://jug-goerlitz/./content/images/javaland_2020_banner.jpg","webpack://jug-goerlitz/./content/images/javaland_2022_banner.jpg","webpack://jug-goerlitz/./content/images/javaland_2024_banner.jpg","webpack://jug-goerlitz/./content/images/javaland_2024_banner_big.jpg","webpack://jug-goerlitz/./content/images/jax19_banner.jpg","webpack://jug-goerlitz/./content/images/jax20_banner.jpg","webpack://jug-goerlitz/./content/images/jax21_banner.jpg","webpack://jug-goerlitz/./content/images/jax22_banner.jpg","webpack://jug-goerlitz/./content/images/jax_banner.png","webpack://jug-goerlitz/./content/images/jdd_2022_banner.png","webpack://jug-goerlitz/./content/images/jdd_2023_banner.jpg","webpack://jug-goerlitz/./content/images/kickerking_logo.jpg","webpack://jug-goerlitz/./content/images/lernfabrik.png","webpack://jug-goerlitz/./content/images/logo.png","webpack://jug-goerlitz/./content/images/mitp_logo.jpeg","webpack://jug-goerlitz/./content/images/mitp_logo_gross.png","webpack://jug-goerlitz/./content/images/persons/christian_kuemmel.jpg","webpack://jug-goerlitz/./content/images/persons/christoph_menzel.png","webpack://jug-goerlitz/./content/images/persons/damian_dudziec.png","webpack://jug-goerlitz/./content/images/persons/daniel_fesenmeyer.jpg","webpack://jug-goerlitz/./content/images/persons/daniel_sulyok.jpg","webpack://jug-goerlitz/./content/images/persons/denny.israel.jpg","webpack://jug-goerlitz/./content/images/persons/gerrit_grunwald.jpg","webpack://jug-goerlitz/./content/images/persons/gregor_trefs.png","webpack://jug-goerlitz/./content/images/persons/hannes_kretschmer.jpg","webpack://jug-goerlitz/./content/images/persons/hendrik_ebbers.png","webpack://jug-goerlitz/./content/images/persons/jens_leuschner.jpg","webpack://jug-goerlitz/./content/images/persons/joerg_laessig.jpg","webpack://jug-goerlitz/./content/images/persons/lars_roewekamp.png","webpack://jug-goerlitz/./content/images/persons/maik_wagner.jpg","webpack://jug-goerlitz/./content/images/persons/manuel_mauky.jpg","webpack://jug-goerlitz/./content/images/persons/marco_gotthans.png","webpack://jug-goerlitz/./content/images/persons/mariusz_zienkiewicz.jpg","webpack://jug-goerlitz/./content/images/persons/markus_kett.png","webpack://jug-goerlitz/./content/images/persons/markus_ullrich.jpg","webpack://jug-goerlitz/./content/images/persons/markus_weiland.jpg","webpack://jug-goerlitz/./content/images/persons/marlene_knoche.jpg","webpack://jug-goerlitz/./content/images/persons/max_wielsch.jpg","webpack://jug-goerlitz/./content/images/persons/michael_hunger.png","webpack://jug-goerlitz/./content/images/persons/michael_simons.jpg","webpack://jug-goerlitz/./content/images/persons/nico_foerster.jpg","webpack://jug-goerlitz/./content/images/persons/oliver_drotbohm.png","webpack://jug-goerlitz/./content/images/persons/patryk_lewandowski.jpg","webpack://jug-goerlitz/./content/images/persons/pawel_adaszewski.jpg","webpack://jug-goerlitz/./content/images/persons/roland_weisleder.jpg","webpack://jug-goerlitz/./content/images/persons/sergej_tihonov.jpg","webpack://jug-goerlitz/./content/images/persons/simon_roloff.png","webpack://jug-goerlitz/./content/images/persons/stefan_bley.jpg","webpack://jug-goerlitz/./content/images/persons/stefan_zoerner.jpg","webpack://jug-goerlitz/./content/images/persons/stefan_zoerner_2.jpg","webpack://jug-goerlitz/./content/images/persons/stephan_strehler.jpg","webpack://jug-goerlitz/./content/images/persons/sven_hoffmann.jpg","webpack://jug-goerlitz/./content/images/persons/thilo_frotscher.jpg","webpack://jug-goerlitz/./content/images/persons/uwe_manteuffel.jpg","webpack://jug-goerlitz/./content/images/persons/wolfgang_weigend.jpg","webpack://jug-goerlitz/./content/images/posters/plakat_2016_01.png","webpack://jug-goerlitz/./content/images/posters/plakat_2016_03.png","webpack://jug-goerlitz/./content/images/posters/plakat_2016_05.png","webpack://jug-goerlitz/./content/images/posters/plakat_2016_09.png","webpack://jug-goerlitz/./content/images/posters/plakat_2016_11.png","webpack://jug-goerlitz/./content/images/posters/plakat_2017_01.png","webpack://jug-goerlitz/./content/images/posters/plakat_2017_02.png","webpack://jug-goerlitz/./content/images/posters/plakat_2017_03.png","webpack://jug-goerlitz/./content/images/posters/plakat_2017_04.png","webpack://jug-goerlitz/./content/images/posters/plakat_2017_05.png","webpack://jug-goerlitz/./content/images/posters/plakat_2017_07.png","webpack://jug-goerlitz/./content/images/posters/plakat_2017_10.png","webpack://jug-goerlitz/./content/images/posters/plakat_2017_11.png","webpack://jug-goerlitz/./content/images/posters/plakat_2018_01.png","webpack://jug-goerlitz/./content/images/posters/plakat_2018_02.png","webpack://jug-goerlitz/./content/images/posters/plakat_2018_03.png","webpack://jug-goerlitz/./content/images/posters/plakat_2018_04.png","webpack://jug-goerlitz/./content/images/posters/plakat_2018_05.png","webpack://jug-goerlitz/./content/images/posters/plakat_2018_06.png","webpack://jug-goerlitz/./content/images/posters/plakat_2018_09.png","webpack://jug-goerlitz/./content/images/posters/plakat_2018_11.png","webpack://jug-goerlitz/./content/images/posters/plakat_2019_01.png","webpack://jug-goerlitz/./content/images/posters/plakat_2019_02.png","webpack://jug-goerlitz/./content/images/posters/plakat_2019_03.png","webpack://jug-goerlitz/./content/images/posters/plakat_2019_04.png","webpack://jug-goerlitz/./content/images/posters/plakat_2019_05.png","webpack://jug-goerlitz/./content/images/posters/plakat_2019_06.png","webpack://jug-goerlitz/./content/images/posters/plakat_2019_11.png","webpack://jug-goerlitz/./content/images/posters/plakat_2020-01.png","webpack://jug-goerlitz/./content/images/posters/plakat_2020_04.png","webpack://jug-goerlitz/./content/images/posters/plakat_2020_07.png","webpack://jug-goerlitz/./content/images/posters/plakat_2020_11.png","webpack://jug-goerlitz/./content/images/posters/plakat_2021_01.png","webpack://jug-goerlitz/./content/images/posters/plakat_2021_06.png","webpack://jug-goerlitz/./content/images/posters/plakat_2022_06.png","webpack://jug-goerlitz/./content/images/posters/plakat_2022_10.png","webpack://jug-goerlitz/./content/images/posters/plakat_2022_11.png","webpack://jug-goerlitz/./content/images/posters/plakat_2023_01.png","webpack://jug-goerlitz/./content/images/posters/plakat_2023_02.png","webpack://jug-goerlitz/./content/images/posters/plakat_2023_03.png","webpack://jug-goerlitz/./content/images/posters/plakat_2023_04.png","webpack://jug-goerlitz/./content/images/posters/plakat_2023_05.png","webpack://jug-goerlitz/./content/images/posters/plakat_2023_06.png","webpack://jug-goerlitz/./content/images/posters/plakat_2023_09.png","webpack://jug-goerlitz/./content/images/posters/plakat_2023_10.png","webpack://jug-goerlitz/./content/images/posters/plakat_2023_11.png","webpack://jug-goerlitz/./content/images/posters/plakat_2024_01.png","webpack://jug-goerlitz/./content/images/sands_logo.png","webpack://jug-goerlitz/./content/images/saxsys_logo.jpg","webpack://jug-goerlitz/./content/images/wjax21_banner.jpg","webpack://jug-goerlitz/./content/images/zeiss-logo-rgb.png","webpack://jug-goerlitz/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://jug-goerlitz/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"],"sourcesContent":["var map = {\n\t\"./35c3-congress-everywhere.png\": 8700,\n\t\"./WJAX_2019_266x145.jpg\": 6724,\n\t\"./banner_javaland_2023.jpg\": 4366,\n\t\"./banner_jax_2023.jpg\": 9101,\n\t\"./banner_jug_saxony_day_2022.png\": 9438,\n\t\"./banner_wjax_2022.jpg\": 8337,\n\t\"./entwickler_tutorials_logo.jpg\": 8799,\n\t\"./grillen.jpg\": 4661,\n\t\"./icon.png\": 9435,\n\t\"./javaland_2019_banner.jpg\": 4652,\n\t\"./javaland_2020_banner.jpg\": 8735,\n\t\"./javaland_2022_banner.jpg\": 6365,\n\t\"./javaland_2024_banner.jpg\": 2295,\n\t\"./javaland_2024_banner_big.jpg\": 4059,\n\t\"./jax19_banner.jpg\": 1974,\n\t\"./jax20_banner.jpg\": 6846,\n\t\"./jax21_banner.jpg\": 2713,\n\t\"./jax22_banner.jpg\": 7425,\n\t\"./jax_banner.png\": 6956,\n\t\"./jdd_2022_banner.png\": 6331,\n\t\"./jdd_2023_banner.jpg\": 8618,\n\t\"./kickerking_logo.jpg\": 2607,\n\t\"./lernfabrik.png\": 6462,\n\t\"./logo.png\": 5921,\n\t\"./mitp_logo.jpeg\": 2377,\n\t\"./mitp_logo_gross.png\": 3087,\n\t\"./persons/christian_kuemmel.jpg\": 2186,\n\t\"./persons/christoph_menzel.png\": 9429,\n\t\"./persons/damian_dudziec.png\": 4160,\n\t\"./persons/daniel_fesenmeyer.jpg\": 2779,\n\t\"./persons/daniel_sulyok.jpg\": 2258,\n\t\"./persons/denny.israel.jpg\": 9880,\n\t\"./persons/gerrit_grunwald.jpg\": 650,\n\t\"./persons/gregor_trefs.png\": 3887,\n\t\"./persons/hannes_kretschmer.jpg\": 8807,\n\t\"./persons/hendrik_ebbers.png\": 7883,\n\t\"./persons/jens_leuschner.jpg\": 6775,\n\t\"./persons/joerg_laessig.jpg\": 9284,\n\t\"./persons/lars_roewekamp.png\": 1266,\n\t\"./persons/maik_wagner.jpg\": 6459,\n\t\"./persons/manuel_mauky.jpg\": 3022,\n\t\"./persons/marco_gotthans.png\": 1096,\n\t\"./persons/mariusz_zienkiewicz.jpg\": 1226,\n\t\"./persons/markus_kett.png\": 258,\n\t\"./persons/markus_ullrich.jpg\": 9773,\n\t\"./persons/markus_weiland.jpg\": 3545,\n\t\"./persons/marlene_knoche.jpg\": 1905,\n\t\"./persons/max_wielsch.jpg\": 8662,\n\t\"./persons/michael_hunger.png\": 8294,\n\t\"./persons/michael_simons.jpg\": 6371,\n\t\"./persons/nico_foerster.jpg\": 3030,\n\t\"./persons/oliver_drotbohm.png\": 6664,\n\t\"./persons/patryk_lewandowski.jpg\": 6345,\n\t\"./persons/pawel_adaszewski.jpg\": 7102,\n\t\"./persons/roland_weisleder.jpg\": 369,\n\t\"./persons/sergej_tihonov.jpg\": 3955,\n\t\"./persons/simon_roloff.png\": 2947,\n\t\"./persons/stefan_bley.jpg\": 3017,\n\t\"./persons/stefan_zoerner.jpg\": 7489,\n\t\"./persons/stefan_zoerner_2.jpg\": 5267,\n\t\"./persons/stephan_strehler.jpg\": 1946,\n\t\"./persons/sven_hoffmann.jpg\": 8576,\n\t\"./persons/thilo_frotscher.jpg\": 1626,\n\t\"./persons/uwe_manteuffel.jpg\": 4984,\n\t\"./persons/wolfgang_weigend.jpg\": 4189,\n\t\"./posters/plakat_2016_01.png\": 1941,\n\t\"./posters/plakat_2016_03.png\": 2601,\n\t\"./posters/plakat_2016_05.png\": 6337,\n\t\"./posters/plakat_2016_09.png\": 6223,\n\t\"./posters/plakat_2016_11.png\": 3895,\n\t\"./posters/plakat_2017_01.png\": 7738,\n\t\"./posters/plakat_2017_02.png\": 9474,\n\t\"./posters/plakat_2017_03.png\": 6059,\n\t\"./posters/plakat_2017_04.png\": 4076,\n\t\"./posters/plakat_2017_05.png\": 4087,\n\t\"./posters/plakat_2017_07.png\": 2195,\n\t\"./posters/plakat_2017_10.png\": 7189,\n\t\"./posters/plakat_2017_11.png\": 4092,\n\t\"./posters/plakat_2018_01.png\": 1584,\n\t\"./posters/plakat_2018_02.png\": 4466,\n\t\"./posters/plakat_2018_03.png\": 1440,\n\t\"./posters/plakat_2018_04.png\": 3211,\n\t\"./posters/plakat_2018_05.png\": 9378,\n\t\"./posters/plakat_2018_06.png\": 2757,\n\t\"./posters/plakat_2018_09.png\": 4566,\n\t\"./posters/plakat_2018_11.png\": 6686,\n\t\"./posters/plakat_2019_01.png\": 4633,\n\t\"./posters/plakat_2019_02.png\": 3019,\n\t\"./posters/plakat_2019_03.png\": 4843,\n\t\"./posters/plakat_2019_04.png\": 3792,\n\t\"./posters/plakat_2019_05.png\": 9108,\n\t\"./posters/plakat_2019_06.png\": 56,\n\t\"./posters/plakat_2019_11.png\": 5172,\n\t\"./posters/plakat_2020-01.png\": 6619,\n\t\"./posters/plakat_2020_04.png\": 6328,\n\t\"./posters/plakat_2020_07.png\": 3302,\n\t\"./posters/plakat_2020_11.png\": 6436,\n\t\"./posters/plakat_2021_01.png\": 6807,\n\t\"./posters/plakat_2021_06.png\": 2318,\n\t\"./posters/plakat_2022_06.png\": 4884,\n\t\"./posters/plakat_2022_10.png\": 4832,\n\t\"./posters/plakat_2022_11.png\": 5646,\n\t\"./posters/plakat_2023_01.png\": 8325,\n\t\"./posters/plakat_2023_02.png\": 1461,\n\t\"./posters/plakat_2023_03.png\": 9750,\n\t\"./posters/plakat_2023_04.png\": 7035,\n\t\"./posters/plakat_2023_05.png\": 9907,\n\t\"./posters/plakat_2023_06.png\": 509,\n\t\"./posters/plakat_2023_09.png\": 5871,\n\t\"./posters/plakat_2023_10.png\": 4881,\n\t\"./posters/plakat_2023_11.png\": 2820,\n\t\"./posters/plakat_2024_01.png\": 8797,\n\t\"./sands_logo.png\": 6702,\n\t\"./saxsys_logo.jpg\": 3155,\n\t\"./wjax21_banner.jpg\": 2753,\n\t\"./zeiss-logo-rgb.png\": 2398\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 8697;","/*!\n * Font Awesome Free 5.0.13 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\nvar noop = function noop() {};\n\nvar _WINDOW = {};\nvar _DOCUMENT = {};\nvar _MUTATION_OBSERVER$1 = null;\nvar _PERFORMANCE = { mark: noop, measure: noop };\n\ntry {\n if (typeof window !== 'undefined') _WINDOW = window;\n if (typeof document !== 'undefined') _DOCUMENT = document;\n if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER$1 = MutationObserver;\n if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\n\nvar _ref = _WINDOW.navigator || {};\nvar _ref$userAgent = _ref.userAgent;\nvar userAgent = _ref$userAgent === undefined ? '' : _ref$userAgent;\n\nvar WINDOW = _WINDOW;\nvar DOCUMENT = _DOCUMENT;\nvar MUTATION_OBSERVER = _MUTATION_OBSERVER$1;\nvar PERFORMANCE = _PERFORMANCE;\nvar IS_BROWSER = !!WINDOW.document;\nvar IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nvar IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_FAMILY_PREFIX = 'fa';\nvar DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nvar DATA_FA_I2SVG = 'data-fa-i2svg';\nvar DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nvar HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\n\nvar PRODUCTION = function () {\n try {\n return process.env.NODE_ENV === 'production';\n } catch (e) {\n return false;\n }\n}();\n\nvar oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);\n\nvar ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\n\nvar RESERVED_CLASSES = ['xs', 'sm', 'lg', 'fw', 'ul', 'li', 'border', 'pull-left', 'pull-right', 'spin', 'pulse', 'rotate-90', 'rotate-180', 'rotate-270', 'flip-horizontal', 'flip-vertical', 'stack', 'stack-1x', 'stack-2x', 'inverse', 'layers', 'layers-text', 'layers-counter'].concat(oneToTen.map(function (n) {\n return n + 'x';\n})).concat(oneToTwenty.map(function (n) {\n return 'w-' + n;\n}));\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\nvar initial = WINDOW.FontAwesomeConfig || {};\nvar initialKeys = Object.keys(initial);\n\nvar _default = _extends({\n familyPrefix: DEFAULT_FAMILY_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n}, initial);\n\nif (!_default.autoReplaceSvg) _default.observeMutations = false;\n\nvar config$1 = _extends({}, _default);\n\nWINDOW.FontAwesomeConfig = config$1;\n\nfunction update(newConfig) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$asNewDefault = params.asNewDefault,\n asNewDefault = _params$asNewDefault === undefined ? false : _params$asNewDefault;\n\n var validKeys = Object.keys(config$1);\n var ok = asNewDefault ? function (k) {\n return ~validKeys.indexOf(k) && !~initialKeys.indexOf(k);\n } : function (k) {\n return ~validKeys.indexOf(k);\n };\n\n Object.keys(newConfig).forEach(function (configKey) {\n if (ok(configKey)) config$1[configKey] = newConfig[configKey];\n });\n}\n\nfunction auto(value) {\n update({\n autoReplaceSvg: value,\n observeMutations: value\n });\n}\n\nvar w = WINDOW || {};\n\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\n\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nvar domready = function (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n};\n\nvar d = UNITS_IN_GRID;\n\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\n\nfunction bunker(fn) {\n try {\n fn();\n } catch (e) {\n if (!PRODUCTION) {\n throw e;\n }\n }\n}\n\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n\n return css;\n}\n\nvar _uniqueId = 0;\n\nfunction nextUniqueId() {\n _uniqueId++;\n\n return _uniqueId;\n}\n\nfunction toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\n\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\n\nfunction getIconName(familyPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\n\nfunction htmlEscape(str) {\n return ('' + str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(/</g, '<').replace(/>/g, '>');\n}\n\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + (attributeName + '=\"' + htmlEscape(attributes[attributeName]) + '\" ');\n }, '').trim();\n}\n\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + (styleName + ': ' + styles[styleName] + ';');\n }, '');\n}\n\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\n\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n\n var outer = {\n transform: 'translate(' + containerWidth / 2 + ' 256)'\n };\n var innerTranslate = 'translate(' + transform.x * 32 + ', ' + transform.y * 32 + ') ';\n var innerScale = 'scale(' + transform.size / 16 * (transform.flipX ? -1 : 1) + ', ' + transform.size / 16 * (transform.flipY ? -1 : 1) + ') ';\n var innerRotate = 'rotate(' + transform.rotate + ' 0 0)';\n var inner = {\n transform: innerTranslate + ' ' + innerScale + ' ' + innerRotate\n };\n var path = {\n transform: 'translate(' + iconWidth / 2 * -1 + ' -256)'\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\n\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === undefined ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === undefined ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === undefined ? false : _ref2$startCentered;\n\n var val = '';\n\n if (startCentered && IS_IE) {\n val += 'translate(' + (transform.x / d - width / 2) + 'em, ' + (transform.y / d - height / 2) + 'em) ';\n } else if (startCentered) {\n val += 'translate(calc(-50% + ' + transform.x / d + 'em), calc(-50% + ' + transform.y / d + 'em)) ';\n } else {\n val += 'translate(' + transform.x / d + 'em, ' + transform.y / d + 'em) ';\n }\n\n val += 'scale(' + transform.size / d * (transform.flipX ? -1 : 1) + ', ' + transform.size / d * (transform.flipY ? -1 : 1) + ') ';\n val += 'rotate(' + transform.rotate + 'deg) ';\n\n return val;\n}\n\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nvar makeIconMasking = function (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n\n\n var trans = transformForSvg({ transform: transform, containerWidth: maskWidth, iconWidth: mainWidth });\n\n var maskRect = {\n tag: 'rect',\n attributes: _extends({}, ALL_SPACE, {\n fill: 'white'\n })\n };\n var maskInnerGroup = {\n tag: 'g',\n attributes: _extends({}, trans.inner),\n children: [{ tag: 'path', attributes: _extends({}, mainPath.attributes, trans.path, { fill: 'black' }) }]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _extends({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = 'mask-' + nextUniqueId();\n var clipId = 'clip-' + nextUniqueId();\n var maskTag = {\n tag: 'mask',\n attributes: _extends({}, ALL_SPACE, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{ tag: 'clipPath', attributes: { id: clipId }, children: [maskPath] }, maskTag]\n };\n\n children.push(defs, { tag: 'rect', attributes: _extends({ fill: 'currentColor', 'clip-path': 'url(#' + clipId + ')', mask: 'url(#' + maskId + ')' }, ALL_SPACE) });\n\n return {\n children: children,\n attributes: attributes\n };\n};\n\nvar makeIconStandard = function (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n transform = _ref.transform,\n styles = _ref.styles;\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n if (transformIsMeaningful(transform)) {\n var trans = transformForSvg({ transform: transform, containerWidth: main.width, iconWidth: main.width });\n children.push({\n tag: 'g',\n attributes: _extends({}, trans.outer),\n children: [{\n tag: 'g',\n attributes: _extends({}, trans.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _extends({}, main.icon.attributes, trans.path)\n }]\n }]\n });\n } else {\n children.push(main.icon);\n }\n\n return {\n children: children,\n attributes: attributes\n };\n};\n\nvar asIcon = function (_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_extends({}, styles, {\n 'transform-origin': offset.x + transform.x / 16 + 'em ' + (offset.y + transform.y / 16) + 'em'\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n};\n\nvar asSymbol = function (_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n\n var id = symbol === true ? prefix + '-' + config$1.familyPrefix + '-' + iconName : symbol;\n\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _extends({}, attributes, { id: id }),\n children: children\n }]\n }];\n};\n\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === undefined ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var widthClass = 'fa-w-' + Math.ceil(width / height * 16);\n var attrClass = [config$1.replacementClass, iconName ? config$1.familyPrefix + '-' + iconName : '', widthClass].concat(extra.classes).join(' ');\n\n var content = {\n children: [],\n attributes: _extends({}, extra.attributes, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': '0 0 ' + width + ' ' + height\n })\n };\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) content.children.push({ tag: 'title', attributes: { id: content.attributes['aria-labelledby'] || 'title-' + nextUniqueId() }, children: [title] });\n\n var args = _extends({}, content, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n transform: transform,\n symbol: symbol,\n styles: extra.styles\n });\n\n var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\n\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === undefined ? false : _params$watchable2;\n\n\n var attributes = _extends({}, extra.attributes, title ? { 'title': title } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _extends({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({ transform: transform, startCentered: true, width: width, height: height });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({ tag: 'span', attributes: { class: 'sr-only' }, children: [title] });\n }\n\n return val;\n}\n\nvar noop$2 = function noop() {};\nvar p = config$1.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : { mark: noop$2, measure: noop$2 };\nvar preamble = 'FA \"5.0.13\"';\n\nvar begin = function begin(name) {\n p.mark(preamble + ' ' + name + ' begins');\n return function () {\n return end(name);\n };\n};\n\nvar end = function end(name) {\n p.mark(preamble + ' ' + name + ' ends');\n p.measure(preamble + ' ' + name, preamble + ' ' + name + ' begins', preamble + ' ' + name + ' ends');\n};\n\nvar perf = { begin: begin, end: end };\n\n'use strict';\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\nvar bindInternal4 = function bindInternal4 (func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n'use strict';\n\n\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\nvar reduce = function fastReduceObject (subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i, key, result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n }\n else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\nvar styles$2 = namespace.styles;\nvar shims = namespace.shims;\n\n\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\n\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles$2, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n acc[icon[3]] = iconName;\n\n return acc;\n });\n\n _byLigature = lookup(function (acc, icon, iconName) {\n var ligatures = icon[2];\n\n acc[iconName] = iconName;\n\n ligatures.forEach(function (ligature) {\n acc[ligature] = iconName;\n });\n\n return acc;\n });\n\n var hasRegular = 'far' in styles$2;\n\n _byOldName = reduce(shims, function (acc, shim) {\n var oldName = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n acc[oldName] = { prefix: prefix, iconName: iconName };\n\n return acc;\n }, {});\n};\n\nbuild();\n\nfunction byUnicode(prefix, unicode) {\n return _byUnicode[prefix][unicode];\n}\n\nfunction byLigature(prefix, ligature) {\n return _byLigature[prefix][ligature];\n}\n\nfunction byOldName(name) {\n return _byOldName[name] || { prefix: null, iconName: null };\n}\n\nvar styles$1 = namespace.styles;\n\n\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return { prefix: null, iconName: null, rest: [] };\n};\n\nfunction getCanonicalIcon(values) {\n return values.reduce(function (acc, cls) {\n var iconName = getIconName(config$1.familyPrefix, cls);\n\n if (styles$1[cls]) {\n acc.prefix = cls;\n } else if (iconName) {\n var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};\n\n acc.iconName = shim.iconName || iconName;\n acc.prefix = shim.prefix || acc.prefix;\n } else if (cls !== config$1.replacementClass && cls.indexOf('fa-w-') !== 0) {\n acc.rest.push(cls);\n }\n\n return acc;\n }, emptyCanonicalIcon());\n}\n\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === undefined ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === undefined ? [] : _abstractNodes$childr;\n\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return '<' + tag + ' ' + joinAttributes(attributes) + '>' + children.map(toHtml).join('') + '</' + tag + '>';\n }\n}\n\nvar noop$1 = function noop() {};\n\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n\n return typeof i2svg === 'string';\n}\n\nfunction getMutator() {\n if (config$1.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config$1.autoReplaceSvg];\n\n return mutator || mutators.replace;\n}\n\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n var abstract = mutation[1];\n var newOuterHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n\n if (node.parentNode && node.outerHTML) {\n node.outerHTML = newOuterHTML + (config$1.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? '<!-- ' + node.outerHTML + ' -->' : '');\n } else if (node.parentNode) {\n var newNode = document.createElement('span');\n node.parentNode.replaceChild(newNode, node);\n newNode.outerHTML = newOuterHTML;\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var abstract = mutation[1];\n\n // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n if (~classArray(node).indexOf(config$1.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(config$1.familyPrefix + '-.*');\n\n delete abstract[0].attributes.style;\n\n var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config$1.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, { toNode: [], toSvg: [] });\n\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n\n var newInnerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.setAttribute('class', splitClasses.toNode.join(' '));\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$1;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = WINDOW.requestAnimationFrame || function (op) {\n return op();\n };\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n\n mutations.map(mutator);\n\n mark();\n\n callbackFunction();\n });\n }\n}\n\nvar disabled = false;\n\nfunction disableObservation(operation) {\n disabled = true;\n operation();\n disabled = false;\n}\n\nvar mo = null;\n\nfunction observe(options) {\n if (!MUTATION_OBSERVER) return;\n\n var treeCallback = options.treeCallback,\n nodeCallback = options.nodeCallback,\n pseudoElementsCallback = options.pseudoElementsCallback;\n\n\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config$1.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config$1.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class') {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);\n if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);\n } else {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n\n if (!IS_DOM) return;\n\n mo.observe(DOCUMENT.getElementsByTagName('body')[0], {\n childList: true, attributes: true, characterData: true, subtree: true\n });\n}\n\nfunction disconnect() {\n if (!mo) return;\n\n mo.disconnect();\n}\n\nvar styleParser = function (node) {\n var style = node.getAttribute('style');\n\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n};\n\nfunction toHex(unicode) {\n var result = '';\n\n for (var i = 0; i < unicode.length; i++) {\n var hex = unicode.charCodeAt(i).toString(16);\n result += ('000' + hex).slice(-4);\n }\n\n return result;\n}\n\nvar classParser = function (node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n\n var val = getCanonicalIcon(classArray(node));\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.prefix && innerText.length > 1) {\n val.iconName = byLigature(val.prefix, node.innerText);\n } else if (val.prefix && innerText.length === 1) {\n val.iconName = byUnicode(val.prefix, toHex(node.innerText));\n }\n\n return val;\n};\n\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n\n if (!transformString) {\n return transform;\n } else {\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n case 'left':\n acc.x = acc.x - rest;\n break;\n case 'right':\n acc.x = acc.x + rest;\n break;\n case 'up':\n acc.y = acc.y - rest;\n break;\n case 'down':\n acc.y = acc.y + rest;\n break;\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n }\n};\n\nvar transformParser = function (node) {\n return parseTransformString(node.getAttribute('data-fa-transform'));\n};\n\nvar symbolParser = function (node) {\n var symbol = node.getAttribute('data-fa-symbol');\n\n return symbol === null ? false : symbol === '' ? true : symbol;\n};\n\nvar attributesParser = function (node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n return acc;\n }, {});\n\n var title = node.getAttribute('title');\n\n if (config$1.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = config$1.replacementClass + '-title-' + nextUniqueId();\n } else {\n extraAttributes['aria-hidden'] = 'true';\n }\n }\n\n return extraAttributes;\n};\n\nvar maskParser = function (node) {\n var mask = node.getAttribute('data-fa-mask');\n\n if (!mask) {\n return emptyCanonicalIcon();\n } else {\n return getCanonicalIcon(mask.split(' ').map(function (i) {\n return i.trim();\n }));\n }\n};\n\nfunction parseMeta(node) {\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraStyles = styleParser(node);\n var transform = transformParser(node);\n var symbol = symbolParser(node);\n var extraAttributes = attributesParser(node);\n var mask = maskParser(node);\n\n return {\n iconName: iconName,\n title: node.getAttribute('title'),\n prefix: prefix,\n transform: transform,\n symbol: symbol,\n mask: mask,\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n };\n}\n\nfunction MissingIcon(error) {\n this.name = 'MissingIcon';\n this.message = error || 'Icon unavailable';\n this.stack = new Error().stack;\n}\n\nMissingIcon.prototype = Object.create(Error.prototype);\nMissingIcon.prototype.constructor = MissingIcon;\n\nvar FILL = { fill: 'currentColor' };\nvar ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n};\nvar RING = {\n tag: 'path',\n attributes: _extends({}, FILL, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n};\nvar OPACITY_ANIMATE = _extends({}, ANIMATION_BASE, {\n attributeName: 'opacity'\n});\nvar DOT = {\n tag: 'circle',\n attributes: _extends({}, FILL, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: [{ tag: 'animate', attributes: _extends({}, ANIMATION_BASE, { attributeName: 'r', values: '28;14;28;28;14;28;' }) }, { tag: 'animate', attributes: _extends({}, OPACITY_ANIMATE, { values: '1;0;1;1;0;1;' }) }]\n};\nvar QUESTION = {\n tag: 'path',\n attributes: _extends({}, FILL, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: [{ tag: 'animate', attributes: _extends({}, OPACITY_ANIMATE, { values: '1;0;0;0;0;1;' }) }]\n};\nvar EXCLAMATION = {\n tag: 'path',\n attributes: _extends({}, FILL, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{ tag: 'animate', attributes: _extends({}, OPACITY_ANIMATE, { values: '0;0;1;1;0;0;' }) }]\n};\n\nvar missing = { tag: 'g', children: [RING, DOT, QUESTION, EXCLAMATION] };\n\nvar styles = namespace.styles;\n\nvar LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nvar FONT_FAMILY_PATTERN = /Font Awesome 5 (Solid|Regular|Light|Brands)/;\nvar STYLE_TO_PREFIX = {\n 'Solid': 'fas',\n 'Regular': 'far',\n 'Light': 'fal',\n 'Brands': 'fab'\n};\n\nfunction findIcon(iconName, prefix) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: missing\n };\n\n if (iconName && prefix && styles[prefix] && styles[prefix][iconName]) {\n var icon = styles[prefix][iconName];\n var width = icon[0];\n var height = icon[1];\n var vectorData = icon.slice(4);\n\n val = {\n found: true,\n width: width,\n height: height,\n icon: { tag: 'path', attributes: { fill: 'currentColor', d: vectorData[0] } }\n };\n } else if (iconName && prefix && !config$1.showMissingIcons) {\n throw new MissingIcon('Icon is missing for prefix ' + prefix + ' with icon name ' + iconName);\n }\n\n return val;\n}\n\nfunction generateSvgReplacementMutation(node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n extra = nodeMeta.extra;\n\n\n return [node, makeInlineSvgAbstract({\n icons: {\n main: findIcon(iconName, prefix),\n mask: findIcon(mask.iconName, mask.prefix)\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n mask: mask,\n title: title,\n extra: extra,\n watchable: true\n })];\n}\n\nfunction generateLayersText(node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n\n\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config$1.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return [node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })];\n}\n\nfunction generateMutation(node) {\n var nodeMeta = parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return generateLayersText(node, nodeMeta);\n } else {\n return generateSvgReplacementMutation(node, nodeMeta);\n }\n}\n\nfunction remove(node) {\n if (typeof node.remove === 'function') {\n node.remove();\n } else if (node && node.parentNode) {\n node.parentNode.removeChild(node);\n }\n}\n\nfunction searchPseudoElements(root) {\n if (!IS_DOM) return;\n\n var end = perf.begin('searchPseudoElements');\n\n disableObservation(function () {\n toArray(root.querySelectorAll('*')).forEach(function (node) {\n [':before', ':after'].forEach(function (pos) {\n var styles = WINDOW.getComputedStyle(node, pos);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var children = toArray(node.children);\n var pseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === pos;\n })[0];\n\n if (pseudoElement) {\n if (pseudoElement.nextSibling && pseudoElement.nextSibling.textContent.indexOf(DATA_FA_PSEUDO_ELEMENT) > -1) {\n remove(pseudoElement.nextSibling);\n }\n remove(pseudoElement);\n pseudoElement = null;\n }\n\n if (fontFamily && !pseudoElement) {\n var content = styles.getPropertyValue('content');\n var i = DOCUMENT.createElement('i');\n i.setAttribute('class', '' + STYLE_TO_PREFIX[fontFamily[1]]);\n i.setAttribute(DATA_FA_PSEUDO_ELEMENT, pos);\n i.innerText = content.length === 3 ? content.substr(1, 1) : content;\n if (pos === ':before') {\n node.insertBefore(i, node.firstChild);\n } else {\n node.appendChild(i);\n }\n }\n });\n });\n });\n\n end();\n}\n\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (!IS_DOM) return;\n\n var htmlClassList = DOCUMENT.documentElement.classList;\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(HTML_CLASS_I2SVG_BASE_CLASS + '-' + suffix);\n };\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(HTML_CLASS_I2SVG_BASE_CLASS + '-' + suffix);\n };\n var prefixes = Object.keys(styles);\n var prefixesDomQuery = ['.' + LAYERS_TEXT_CLASSNAME + ':not([' + DATA_FA_I2SVG + '])'].concat(prefixes.map(function (p) {\n return '.' + p + ':not([' + DATA_FA_I2SVG + '])';\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return;\n }\n\n var candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return;\n }\n\n var mark = perf.begin('onTree');\n\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e instanceof MissingIcon) {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n\n mark();\n\n perform(mutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n\n if (typeof callback === 'function') callback();\n });\n}\n\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n var mutation = generateMutation(node);\n\n if (mutation) {\n perform([mutation], callback);\n }\n}\n\nvar baseStyles = \"svg:not(:root).svg-inline--fa {\\n overflow: visible; }\\n\\n.svg-inline--fa {\\n display: inline-block;\\n font-size: inherit;\\n height: 1em;\\n overflow: visible;\\n vertical-align: -.125em; }\\n .svg-inline--fa.fa-lg {\\n vertical-align: -.225em; }\\n .svg-inline--fa.fa-w-1 {\\n width: 0.0625em; }\\n .svg-inline--fa.fa-w-2 {\\n width: 0.125em; }\\n .svg-inline--fa.fa-w-3 {\\n width: 0.1875em; }\\n .svg-inline--fa.fa-w-4 {\\n width: 0.25em; }\\n .svg-inline--fa.fa-w-5 {\\n width: 0.3125em; }\\n .svg-inline--fa.fa-w-6 {\\n width: 0.375em; }\\n .svg-inline--fa.fa-w-7 {\\n width: 0.4375em; }\\n .svg-inline--fa.fa-w-8 {\\n width: 0.5em; }\\n .svg-inline--fa.fa-w-9 {\\n width: 0.5625em; }\\n .svg-inline--fa.fa-w-10 {\\n width: 0.625em; }\\n .svg-inline--fa.fa-w-11 {\\n width: 0.6875em; }\\n .svg-inline--fa.fa-w-12 {\\n width: 0.75em; }\\n .svg-inline--fa.fa-w-13 {\\n width: 0.8125em; }\\n .svg-inline--fa.fa-w-14 {\\n width: 0.875em; }\\n .svg-inline--fa.fa-w-15 {\\n width: 0.9375em; }\\n .svg-inline--fa.fa-w-16 {\\n width: 1em; }\\n .svg-inline--fa.fa-w-17 {\\n width: 1.0625em; }\\n .svg-inline--fa.fa-w-18 {\\n width: 1.125em; }\\n .svg-inline--fa.fa-w-19 {\\n width: 1.1875em; }\\n .svg-inline--fa.fa-w-20 {\\n width: 1.25em; }\\n .svg-inline--fa.fa-pull-left {\\n margin-right: .3em;\\n width: auto; }\\n .svg-inline--fa.fa-pull-right {\\n margin-left: .3em;\\n width: auto; }\\n .svg-inline--fa.fa-border {\\n height: 1.5em; }\\n .svg-inline--fa.fa-li {\\n width: 2em; }\\n .svg-inline--fa.fa-fw {\\n width: 1.25em; }\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0; }\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -.125em;\\n width: 1em; }\\n .fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center; }\\n\\n.fa-layers-text, .fa-layers-counter {\\n display: inline-block;\\n position: absolute;\\n text-align: center; }\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center; }\\n\\n.fa-layers-counter {\\n background-color: #ff253a;\\n border-radius: 1em;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n color: #fff;\\n height: 1.5em;\\n line-height: 1;\\n max-width: 5em;\\n min-width: 1.5em;\\n overflow: hidden;\\n padding: .25em;\\n right: 0;\\n text-overflow: ellipsis;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right; }\\n\\n.fa-layers-bottom-right {\\n bottom: 0;\\n right: 0;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right; }\\n\\n.fa-layers-bottom-left {\\n bottom: 0;\\n left: 0;\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left; }\\n\\n.fa-layers-top-right {\\n right: 0;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right; }\\n\\n.fa-layers-top-left {\\n left: 0;\\n right: auto;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top left;\\n transform-origin: top left; }\\n\\n.fa-lg {\\n font-size: 1.33333em;\\n line-height: 0.75em;\\n vertical-align: -.0667em; }\\n\\n.fa-xs {\\n font-size: .75em; }\\n\\n.fa-sm {\\n font-size: .875em; }\\n\\n.fa-1x {\\n font-size: 1em; }\\n\\n.fa-2x {\\n font-size: 2em; }\\n\\n.fa-3x {\\n font-size: 3em; }\\n\\n.fa-4x {\\n font-size: 4em; }\\n\\n.fa-5x {\\n font-size: 5em; }\\n\\n.fa-6x {\\n font-size: 6em; }\\n\\n.fa-7x {\\n font-size: 7em; }\\n\\n.fa-8x {\\n font-size: 8em; }\\n\\n.fa-9x {\\n font-size: 9em; }\\n\\n.fa-10x {\\n font-size: 10em; }\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em; }\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: 2.5em;\\n padding-left: 0; }\\n .fa-ul > li {\\n position: relative; }\\n\\n.fa-li {\\n left: -2em;\\n position: absolute;\\n text-align: center;\\n width: 2em;\\n line-height: inherit; }\\n\\n.fa-border {\\n border: solid 0.08em #eee;\\n border-radius: .1em;\\n padding: .2em .25em .15em; }\\n\\n.fa-pull-left {\\n float: left; }\\n\\n.fa-pull-right {\\n float: right; }\\n\\n.fa.fa-pull-left,\\n.fas.fa-pull-left,\\n.far.fa-pull-left,\\n.fal.fa-pull-left,\\n.fab.fa-pull-left {\\n margin-right: .3em; }\\n\\n.fa.fa-pull-right,\\n.fas.fa-pull-right,\\n.far.fa-pull-right,\\n.fal.fa-pull-right,\\n.fab.fa-pull-right {\\n margin-left: .3em; }\\n\\n.fa-spin {\\n -webkit-animation: fa-spin 2s infinite linear;\\n animation: fa-spin 2s infinite linear; }\\n\\n.fa-pulse {\\n -webkit-animation: fa-spin 1s infinite steps(8);\\n animation: fa-spin 1s infinite steps(8); }\\n\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg); }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg); } }\\n\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg); }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg); } }\\n\\n.fa-rotate-90 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg); }\\n\\n.fa-rotate-180 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg); }\\n\\n.fa-rotate-270 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg); }\\n\\n.fa-flip-horizontal {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1); }\\n\\n.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1); }\\n\\n.fa-flip-horizontal.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1); }\\n\\n:root .fa-rotate-90,\\n:root .fa-rotate-180,\\n:root .fa-rotate-270,\\n:root .fa-flip-horizontal,\\n:root .fa-flip-vertical {\\n -webkit-filter: none;\\n filter: none; }\\n\\n.fa-stack {\\n display: inline-block;\\n height: 2em;\\n position: relative;\\n width: 2em; }\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0; }\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1em; }\\n\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2em; }\\n\\n.fa-inverse {\\n color: #fff; }\\n\\n.sr-only {\\n border: 0;\\n clip: rect(0, 0, 0, 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px; }\\n\\n.sr-only-focusable:active, .sr-only-focusable:focus {\\n clip: auto;\\n height: auto;\\n margin: 0;\\n overflow: visible;\\n position: static;\\n width: auto; }\\n\";\n\nvar css = function () {\n var dfp = DEFAULT_FAMILY_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config$1.familyPrefix;\n var rc = config$1.replacementClass;\n var s = baseStyles;\n\n if (fp !== dfp || rc !== drc) {\n var dPatt = new RegExp('\\\\.' + dfp + '\\\\-', 'g');\n var rPatt = new RegExp('\\\\.' + drc, 'g');\n\n s = s.replace(dPatt, '.' + fp + '-').replace(rPatt, '.' + rc);\n }\n\n return s;\n};\n\nfunction define(prefix, icons) {\n var normalized = Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n return acc;\n }, {});\n\n if (typeof namespace.hooks.addPack === 'function') {\n namespace.hooks.addPack(prefix, normalized);\n } else {\n namespace.styles[prefix] = _extends({}, namespace.styles[prefix] || {}, normalized);\n }\n\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll easy the upgrade process for our users by automatically defining\n * this as well.\n */\n if (prefix === 'fas') {\n define('fa', icons);\n }\n}\n\nvar Library = function () {\n function Library() {\n classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n createClass(Library, [{\n key: 'add',\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _extends({}, _this.definitions[key] || {}, additions[key]);\n define(key, additions[key]);\n });\n }\n }, {\n key: 'reset',\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: '_pullDefinitions',\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? { 0: definition } : definition;\n\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n\n\n if (!additions[prefix]) additions[prefix] = {};\n\n additions[prefix][iconName] = icon;\n });\n\n return additions;\n }\n }]);\n return Library;\n}();\n\nfunction prepIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n var vectorData = icon.slice(4);\n\n return {\n found: true,\n width: width,\n height: height,\n icon: { tag: 'path', attributes: { fill: 'currentColor', d: vectorData[0] } }\n };\n}\n\nvar _cssInserted = false;\n\nfunction ensureCss() {\n if (!config$1.autoAddCss) {\n return;\n }\n\n if (!_cssInserted) {\n insertCss(css());\n }\n\n _cssInserted = true;\n}\n\nfunction apiObject(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n\n return val;\n}\n\nfunction findIconDefinition(params) {\n var _params$prefix = params.prefix,\n prefix = _params$prefix === undefined ? 'fa' : _params$prefix,\n iconName = params.iconName;\n\n\n if (!iconName) return;\n\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n\n var mask = params.mask;\n\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _extends({}, params, { mask: mask }));\n };\n}\n\nvar library = new Library();\n\nvar noAuto = function noAuto() {\n auto(false);\n disconnect();\n};\n\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n ensureCss();\n\n var _params$node = params.node,\n node = _params$node === undefined ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === undefined ? function () {} : _params$callback;\n\n\n if (config$1.searchPseudoElements) {\n searchPseudoElements(node);\n }\n\n onTree(node, callback);\n }\n },\n\n css: css,\n\n insertCss: function insertCss$$1() {\n insertCss(css());\n }\n};\n\nvar parse = {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n};\n\nvar icon = resolveIcons(function (iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === undefined ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === undefined ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === undefined ? null : _params$mask,\n _params$title = params.title,\n title = _params$title === undefined ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === undefined ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === undefined ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === undefined ? {} : _params$styles;\n\n\n if (!iconDefinition) return;\n\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n\n\n return apiObject(_extends({ type: 'icon' }, iconDefinition), function () {\n ensureCss();\n\n if (config$1.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = config$1.replacementClass + '-title-' + nextUniqueId();\n } else {\n attributes['aria-hidden'] = 'true';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: prepIcon(icon),\n mask: mask ? prepIcon(mask.icon) : { found: false, width: null, height: null, icon: {} }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _extends({}, meaninglessTransform, transform),\n symbol: symbol,\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n});\n\nvar text = function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform2 = params.transform,\n transform = _params$transform2 === undefined ? meaninglessTransform : _params$transform2,\n _params$title2 = params.title,\n title = _params$title2 === undefined ? null : _params$title2,\n _params$classes2 = params.classes,\n classes = _params$classes2 === undefined ? [] : _params$classes2,\n _params$attributes2 = params.attributes,\n attributes = _params$attributes2 === undefined ? {} : _params$attributes2,\n _params$styles2 = params.styles,\n styles = _params$styles2 === undefined ? {} : _params$styles2;\n\n\n return apiObject({ type: 'text', content: content }, function () {\n ensureCss();\n\n return makeLayersTextAbstract({\n content: content,\n transform: _extends({}, meaninglessTransform, transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [config$1.familyPrefix + '-layers-text'].concat(toConsumableArray(classes))\n }\n });\n });\n};\n\nvar layer = function layer(assembler) {\n return apiObject({ type: 'layer' }, function () {\n ensureCss();\n\n var children = [];\n\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n\n return [{\n tag: 'span',\n attributes: { class: config$1.familyPrefix + '-layers' },\n children: children\n }];\n });\n};\n\nvar api$1 = {\n noAuto: noAuto,\n dom: dom,\n library: library,\n parse: parse,\n findIconDefinition: findIconDefinition,\n icon: icon,\n text: text,\n layer: layer\n};\n\nvar autoReplace = function autoReplace() {\n if (IS_DOM && config$1.autoReplaceSvg) api$1.dom.i2svg({ node: DOCUMENT });\n};\n\nfunction bootstrap() {\n if (IS_BROWSER) {\n if (!WINDOW.FontAwesome) {\n WINDOW.FontAwesome = api$1;\n }\n\n domready(function () {\n if (Object.keys(namespace.styles).length > 0) {\n autoReplace();\n }\n\n if (config$1.observeMutations && typeof MutationObserver === 'function') {\n observe({\n treeCallback: onTree,\n nodeCallback: onNode,\n pseudoElementsCallback: searchPseudoElements\n });\n }\n });\n }\n\n namespace.hooks = _extends({}, namespace.hooks, {\n\n addPack: function addPack(prefix, icons) {\n namespace.styles[prefix] = _extends({}, namespace.styles[prefix] || {}, icons);\n\n build();\n autoReplace();\n },\n\n addShims: function addShims(shims) {\n var _namespace$shims;\n\n (_namespace$shims = namespace.shims).push.apply(_namespace$shims, toConsumableArray(shims));\n\n build();\n autoReplace();\n }\n });\n}\n\nObject.defineProperty(api$1, 'config', {\n get: function get() {\n return config$1;\n },\n\n set: function set(newConfig) {\n update(newConfig);\n }\n});\n\nif (IS_DOM) bunker(bootstrap);\n\nvar config = api$1.config;\n\nexport { config, icon, noAuto, layer, text, library, dom, parse, findIconDefinition };\nexport default api$1;\n","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _wrapRegExp() {\n _wrapRegExp = function (re, groups) {\n return new BabelRegExp(re, void 0, groups);\n };\n\n var _super = RegExp.prototype,\n _groups = new WeakMap();\n\n function BabelRegExp(re, flags, groups) {\n var _this = new RegExp(re, flags);\n\n return _groups.set(_this, groups || _groups.get(re)), _setPrototypeOf(_this, BabelRegExp.prototype);\n }\n\n function buildGroups(result, re) {\n var g = _groups.get(re);\n\n return Object.keys(g).reduce(function (groups, name) {\n return groups[name] = result[g[name]], groups;\n }, Object.create(null));\n }\n\n return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (str) {\n var result = _super.exec.call(this, str);\n\n return result && (result.groups = buildGroups(result, this)), result;\n }, BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {\n if (\"string\" == typeof substitution) {\n var groups = _groups.get(this);\n\n return _super[Symbol.replace].call(this, str, substitution.replace(/\\$<([^>]+)>/g, function (_, name) {\n return \"$\" + groups[name];\n }));\n }\n\n if (\"function\" == typeof substitution) {\n var _this = this;\n\n return _super[Symbol.replace].call(this, str, function () {\n var args = arguments;\n return \"object\" != typeof args[args.length - 1] && (args = [].slice.call(args)).push(buildGroups(args, _this)), substitution.apply(this, args);\n });\n }\n\n return _super[Symbol.replace].call(this, str, substitution);\n }, _wrapRegExp.apply(this, arguments);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar noop = function noop() {};\n\nvar _WINDOW = {};\nvar _DOCUMENT = {};\nvar _MUTATION_OBSERVER = null;\nvar _PERFORMANCE = {\n mark: noop,\n measure: noop\n};\n\ntry {\n if (typeof window !== 'undefined') _WINDOW = window;\n if (typeof document !== 'undefined') _DOCUMENT = document;\n if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\n\nvar _ref = _WINDOW.navigator || {},\n _ref$userAgent = _ref.userAgent,\n userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;\nvar WINDOW = _WINDOW;\nvar DOCUMENT = _DOCUMENT;\nvar MUTATION_OBSERVER = _MUTATION_OBSERVER;\nvar PERFORMANCE = _PERFORMANCE;\nvar IS_BROWSER = !!WINDOW.document;\nvar IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nvar IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar _familyProxy, _familyProxy2, _familyProxy3, _familyProxy4, _familyProxy5;\n\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_CSS_PREFIX = 'fa';\nvar DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nvar DATA_FA_I2SVG = 'data-fa-i2svg';\nvar DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nvar DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nvar DATA_PREFIX = 'data-prefix';\nvar DATA_ICON = 'data-icon';\nvar HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nvar MUTATION_APPROACH_ASYNC = 'async';\nvar TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nvar PRODUCTION = function () {\n try {\n return process.env.NODE_ENV === 'production';\n } catch (e) {\n return false;\n }\n}();\nvar FAMILY_CLASSIC = 'classic';\nvar FAMILY_SHARP = 'sharp';\nvar FAMILIES = [FAMILY_CLASSIC, FAMILY_SHARP];\n\nfunction familyProxy(obj) {\n // Defaults to the classic family if family is not available\n return new Proxy(obj, {\n get: function get(target, prop) {\n return prop in target ? target[prop] : target[FAMILY_CLASSIC];\n }\n });\n}\nvar PREFIX_TO_STYLE = familyProxy((_familyProxy = {}, _defineProperty(_familyProxy, FAMILY_CLASSIC, {\n 'fa': 'solid',\n 'fas': 'solid',\n 'fa-solid': 'solid',\n 'far': 'regular',\n 'fa-regular': 'regular',\n 'fal': 'light',\n 'fa-light': 'light',\n 'fat': 'thin',\n 'fa-thin': 'thin',\n 'fad': 'duotone',\n 'fa-duotone': 'duotone',\n 'fab': 'brands',\n 'fa-brands': 'brands',\n 'fak': 'kit',\n 'fa-kit': 'kit'\n}), _defineProperty(_familyProxy, FAMILY_SHARP, {\n 'fa': 'solid',\n 'fass': 'solid',\n 'fa-solid': 'solid'\n}), _familyProxy));\nvar STYLE_TO_PREFIX = familyProxy((_familyProxy2 = {}, _defineProperty(_familyProxy2, FAMILY_CLASSIC, {\n 'solid': 'fas',\n 'regular': 'far',\n 'light': 'fal',\n 'thin': 'fat',\n 'duotone': 'fad',\n 'brands': 'fab',\n 'kit': 'fak'\n}), _defineProperty(_familyProxy2, FAMILY_SHARP, {\n 'solid': 'fass'\n}), _familyProxy2));\nvar PREFIX_TO_LONG_STYLE = familyProxy((_familyProxy3 = {}, _defineProperty(_familyProxy3, FAMILY_CLASSIC, {\n 'fab': 'fa-brands',\n 'fad': 'fa-duotone',\n 'fak': 'fa-kit',\n 'fal': 'fa-light',\n 'far': 'fa-regular',\n 'fas': 'fa-solid',\n 'fat': 'fa-thin'\n}), _defineProperty(_familyProxy3, FAMILY_SHARP, {\n 'fass': 'fa-solid'\n}), _familyProxy3));\nvar LONG_STYLE_TO_PREFIX = familyProxy((_familyProxy4 = {}, _defineProperty(_familyProxy4, FAMILY_CLASSIC, {\n 'fa-brands': 'fab',\n 'fa-duotone': 'fad',\n 'fa-kit': 'fak',\n 'fa-light': 'fal',\n 'fa-regular': 'far',\n 'fa-solid': 'fas',\n 'fa-thin': 'fat'\n}), _defineProperty(_familyProxy4, FAMILY_SHARP, {\n 'fa-solid': 'fass'\n}), _familyProxy4));\nvar ICON_SELECTION_SYNTAX_PATTERN = /fa(s|r|l|t|d|b|k|ss)?[\\-\\ ]/; // eslint-disable-line no-useless-escape\n\nvar LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nvar FONT_FAMILY_PATTERN = /Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp|Kit)?.*/i; // TODO: this needs to support fass\n// TODO: do we need to handle font-weight for kit SVG pseudo-elements?\n\nvar FONT_WEIGHT_TO_PREFIX = familyProxy((_familyProxy5 = {}, _defineProperty(_familyProxy5, FAMILY_CLASSIC, {\n '900': 'fas',\n '400': 'far',\n 'normal': 'far',\n '300': 'fal',\n '100': 'fat'\n}), _defineProperty(_familyProxy5, FAMILY_SHARP, {\n '900': 'fass'\n}), _familyProxy5));\nvar oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);\nvar ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nvar DUOTONE_CLASSES = {\n GROUP: 'duotone-group',\n SWAP_OPACITY: 'swap-opacity',\n PRIMARY: 'primary',\n SECONDARY: 'secondary'\n};\nvar prefixes = new Set();\nObject.keys(STYLE_TO_PREFIX[FAMILY_CLASSIC]).map(prefixes.add.bind(prefixes));\nObject.keys(STYLE_TO_PREFIX[FAMILY_SHARP]).map(prefixes.add.bind(prefixes));\nvar RESERVED_CLASSES = [].concat(FAMILIES, _toConsumableArray(prefixes), ['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', 'beat', 'border', 'fade', 'beat-fade', 'bounce', 'flip-both', 'flip-horizontal', 'flip-vertical', 'flip', 'fw', 'inverse', 'layers-counter', 'layers-text', 'layers', 'li', 'pull-left', 'pull-right', 'pulse', 'rotate-180', 'rotate-270', 'rotate-90', 'rotate-by', 'shake', 'spin-pulse', 'spin-reverse', 'spin', 'stack-1x', 'stack-2x', 'stack', 'ul', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY]).concat(oneToTen.map(function (n) {\n return \"\".concat(n, \"x\");\n})).concat(oneToTwenty.map(function (n) {\n return \"w-\".concat(n);\n}));\n\nvar initial = WINDOW.FontAwesomeConfig || {};\n\nfunction getAttrConfig(attr) {\n var element = DOCUMENT.querySelector('script[' + attr + ']');\n\n if (element) {\n return element.getAttribute(attr);\n }\n}\n\nfunction coerce(val) {\n // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n // We'll assume that this is an indication that it should be toggled to true\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-css-prefix', 'cssPrefix'], ['data-family-default', 'familyDefault'], ['data-style-default', 'styleDefault'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n\n var val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nvar _default = {\n styleDefault: 'solid',\n familyDefault: 'classic',\n cssPrefix: DEFAULT_CSS_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n}; // familyPrefix is deprecated but we must still support it if present\n\nif (initial.familyPrefix) {\n initial.cssPrefix = initial.familyPrefix;\n}\n\nvar _config = _objectSpread2(_objectSpread2({}, _default), initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\nvar config = {};\nObject.keys(_default).forEach(function (key) {\n Object.defineProperty(config, key, {\n enumerable: true,\n set: function set(val) {\n _config[key] = val;\n\n _onChangeCb.forEach(function (cb) {\n return cb(config);\n });\n },\n get: function get() {\n return _config[key];\n }\n });\n}); // familyPrefix is deprecated as of 6.2.0 and should be removed in 7.0.0\n\nObject.defineProperty(config, 'familyPrefix', {\n enumerable: true,\n set: function set(val) {\n _config.cssPrefix = val;\n\n _onChangeCb.forEach(function (cb) {\n return cb(config);\n });\n },\n get: function get() {\n return _config.cssPrefix;\n }\n});\nWINDOW.FontAwesomeConfig = config;\nvar _onChangeCb = [];\nfunction onChange(cb) {\n _onChangeCb.push(cb);\n\n return function () {\n _onChangeCb.splice(_onChangeCb.indexOf(cb), 1);\n };\n}\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\nfunction toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(/</g, '<').replace(/>/g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName].trim(), \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar baseStyles = \":root, :host {\\n --fa-font-solid: normal 900 1em/1 \\\"Font Awesome 6 Solid\\\";\\n --fa-font-regular: normal 400 1em/1 \\\"Font Awesome 6 Regular\\\";\\n --fa-font-light: normal 300 1em/1 \\\"Font Awesome 6 Light\\\";\\n --fa-font-thin: normal 100 1em/1 \\\"Font Awesome 6 Thin\\\";\\n --fa-font-duotone: normal 900 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-sharp-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-brands: normal 400 1em/1 \\\"Font Awesome 6 Brands\\\";\\n}\\n\\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\\n overflow: visible;\\n box-sizing: content-box;\\n}\\n\\n.svg-inline--fa {\\n display: var(--fa-display, inline-block);\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-2xs {\\n vertical-align: 0.1em;\\n}\\n.svg-inline--fa.fa-xs {\\n vertical-align: 0em;\\n}\\n.svg-inline--fa.fa-sm {\\n vertical-align: -0.0714285705em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.2em;\\n}\\n.svg-inline--fa.fa-xl {\\n vertical-align: -0.25em;\\n}\\n.svg-inline--fa.fa-2xl {\\n vertical-align: -0.3125em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-li {\\n width: var(--fa-li-width, 2em);\\n top: 0.25em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: var(--fa-fw-width, 1.25em);\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: var(--fa-counter-background-color, #ff253a);\\n border-radius: var(--fa-counter-border-radius, 1em);\\n box-sizing: border-box;\\n color: var(--fa-inverse, #fff);\\n line-height: var(--fa-counter-line-height, 1);\\n max-width: var(--fa-counter-max-width, 5em);\\n min-width: var(--fa-counter-min-width, 1.5em);\\n overflow: hidden;\\n padding: var(--fa-counter-padding, 0.25em 0.5em);\\n right: var(--fa-right, 0);\\n text-overflow: ellipsis;\\n top: var(--fa-top, 0);\\n -webkit-transform: scale(var(--fa-counter-scale, 0.25));\\n transform: scale(var(--fa-counter-scale, 0.25));\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: var(--fa-bottom, 0);\\n right: var(--fa-right, 0);\\n top: auto;\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: var(--fa-bottom, 0);\\n left: var(--fa-left, 0);\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n top: var(--fa-top, 0);\\n right: var(--fa-right, 0);\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: var(--fa-left, 0);\\n right: auto;\\n top: var(--fa-top, 0);\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-2xs {\\n font-size: 0.625em;\\n line-height: 0.1em;\\n vertical-align: 0.225em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n line-height: 0.0833333337em;\\n vertical-align: 0.125em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n line-height: 0.0714285718em;\\n vertical-align: 0.0535714295em;\\n}\\n\\n.fa-lg {\\n font-size: 1.25em;\\n line-height: 0.05em;\\n vertical-align: -0.075em;\\n}\\n\\n.fa-xl {\\n font-size: 1.5em;\\n line-height: 0.0416666682em;\\n vertical-align: -0.125em;\\n}\\n\\n.fa-2xl {\\n font-size: 2em;\\n line-height: 0.03125em;\\n vertical-align: -0.1875em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: var(--fa-li-margin, 2.5em);\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: calc(var(--fa-li-width, 2em) * -1);\\n position: absolute;\\n text-align: center;\\n width: var(--fa-li-width, 2em);\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border-color: var(--fa-border-color, #eee);\\n border-radius: var(--fa-border-radius, 0.1em);\\n border-style: var(--fa-border-style, solid);\\n border-width: var(--fa-border-width, 0.08em);\\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\\n}\\n\\n.fa-pull-left {\\n float: left;\\n margin-right: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-pull-right {\\n float: right;\\n margin-left: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-beat {\\n -webkit-animation-name: fa-beat;\\n animation-name: fa-beat;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-bounce {\\n -webkit-animation-name: fa-bounce;\\n animation-name: fa-bounce;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n}\\n\\n.fa-fade {\\n -webkit-animation-name: fa-fade;\\n animation-name: fa-fade;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-beat-fade {\\n -webkit-animation-name: fa-beat-fade;\\n animation-name: fa-beat-fade;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-flip {\\n -webkit-animation-name: fa-flip;\\n animation-name: fa-flip;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-shake {\\n -webkit-animation-name: fa-shake;\\n animation-name: fa-shake;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin {\\n -webkit-animation-name: fa-spin;\\n animation-name: fa-spin;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 2s);\\n animation-duration: var(--fa-animation-duration, 2s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin-reverse {\\n --fa-animation-direction: reverse;\\n}\\n\\n.fa-pulse,\\n.fa-spin-pulse {\\n -webkit-animation-name: fa-spin;\\n animation-name: fa-spin;\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));\\n animation-timing-function: var(--fa-animation-timing, steps(8));\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n .fa-beat,\\n.fa-bounce,\\n.fa-fade,\\n.fa-beat-fade,\\n.fa-flip,\\n.fa-pulse,\\n.fa-shake,\\n.fa-spin,\\n.fa-spin-pulse {\\n -webkit-animation-delay: -1ms;\\n animation-delay: -1ms;\\n -webkit-animation-duration: 1ms;\\n animation-duration: 1ms;\\n -webkit-animation-iteration-count: 1;\\n animation-iteration-count: 1;\\n transition-delay: 0s;\\n transition-duration: 0s;\\n }\\n}\\n@-webkit-keyframes fa-beat {\\n 0%, 90% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 45% {\\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@keyframes fa-beat {\\n 0%, 90% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 45% {\\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@-webkit-keyframes fa-bounce {\\n 0% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@keyframes fa-bounce {\\n 0% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@-webkit-keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@-webkit-keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@-webkit-keyframes fa-flip {\\n 50% {\\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@keyframes fa-flip {\\n 50% {\\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@-webkit-keyframes fa-shake {\\n 0% {\\n -webkit-transform: rotate(-15deg);\\n transform: rotate(-15deg);\\n }\\n 4% {\\n -webkit-transform: rotate(15deg);\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n -webkit-transform: rotate(-18deg);\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n -webkit-transform: rotate(18deg);\\n transform: rotate(18deg);\\n }\\n 16% {\\n -webkit-transform: rotate(-22deg);\\n transform: rotate(-22deg);\\n }\\n 20% {\\n -webkit-transform: rotate(22deg);\\n transform: rotate(22deg);\\n }\\n 32% {\\n -webkit-transform: rotate(-12deg);\\n transform: rotate(-12deg);\\n }\\n 36% {\\n -webkit-transform: rotate(12deg);\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n@keyframes fa-shake {\\n 0% {\\n -webkit-transform: rotate(-15deg);\\n transform: rotate(-15deg);\\n }\\n 4% {\\n -webkit-transform: rotate(15deg);\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n -webkit-transform: rotate(-18deg);\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n -webkit-transform: rotate(18deg);\\n transform: rotate(18deg);\\n }\\n 16% {\\n -webkit-transform: rotate(-22deg);\\n transform: rotate(-22deg);\\n }\\n 20% {\\n -webkit-transform: rotate(22deg);\\n transform: rotate(22deg);\\n }\\n 32% {\\n -webkit-transform: rotate(-12deg);\\n transform: rotate(-12deg);\\n }\\n 36% {\\n -webkit-transform: rotate(12deg);\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both,\\n.fa-flip-horizontal.fa-flip-vertical {\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n.fa-rotate-by {\\n -webkit-transform: rotate(var(--fa-rotate-angle, none));\\n transform: rotate(var(--fa-rotate-angle, none));\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n vertical-align: middle;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n z-index: var(--fa-stack-z-index, auto);\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\\n\\n.sr-only,\\n.fa-sr-only {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.sr-only-focusable:not(:focus),\\n.fa-sr-only-focusable:not(:focus) {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse,\\n.fa-duotone.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\";\n\nfunction css() {\n var dcp = DEFAULT_CSS_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.cssPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n\n if (fp !== dcp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dcp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dcp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nvar _cssInserted = false;\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n _cssInserted = true;\n }\n}\n\nvar InjectCSS = {\n mixout: function mixout() {\n return {\n dom: {\n css: css,\n insertCss: ensureCss\n }\n };\n },\n hooks: function hooks() {\n return {\n beforeDOMElementCreation: function beforeDOMElementCreation() {\n ensureCss();\n },\n beforeI2svg: function beforeI2svg() {\n ensureCss();\n }\n };\n }\n};\n\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\n\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"</\").concat(tag, \">\");\n }\n}\n\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\n/**\n * ucs2decode() and codePointAt() are both works of Mathias Bynens and licensed under MIT\n *\n * Copyright Mathias Bynens <https://mathiasbynens.be/>\n\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nfunction ucs2decode(string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n var extra = string.charCodeAt(counter++);\n\n if ((extra & 0xFC00) == 0xDC00) {\n // eslint-disable-line eqeqeq\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n\n return output;\n}\n\nfunction toHex(unicode) {\n var decoded = ucs2decode(unicode);\n return decoded.length === 1 ? decoded[0].toString(16) : null;\n}\nfunction codePointAt(string, index) {\n var size = string.length;\n var first = string.charCodeAt(index);\n var second;\n\n if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n second = string.charCodeAt(index + 1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return first;\n}\n\nfunction normalizeIcons(icons) {\n return Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n}\n\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = normalizeIcons(icons);\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalizeIcons(icons));\n } else {\n namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll ease the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nvar duotonePathRe = [/*#__PURE__*/_wrapRegExp(/path d=\"((?:(?!\")[\\s\\S])+)\".*path d=\"((?:(?!\")[\\s\\S])+)\"/, {\n d1: 1,\n d2: 2\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\".*path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n cls1: 1,\n d1: 2,\n cls2: 3,\n d2: 4\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n cls1: 1,\n d1: 2\n})];\n\nvar _LONG_STYLE, _PREFIXES, _PREFIXES_FOR_FAMILY;\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar LONG_STYLE = (_LONG_STYLE = {}, _defineProperty(_LONG_STYLE, FAMILY_CLASSIC, Object.values(PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC])), _defineProperty(_LONG_STYLE, FAMILY_SHARP, Object.values(PREFIX_TO_LONG_STYLE[FAMILY_SHARP])), _LONG_STYLE);\nvar _defaultUsablePrefix = null;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar _byOldUnicode = {};\nvar _byAlias = {};\nvar PREFIXES = (_PREFIXES = {}, _defineProperty(_PREFIXES, FAMILY_CLASSIC, Object.keys(PREFIX_TO_STYLE[FAMILY_CLASSIC])), _defineProperty(_PREFIXES, FAMILY_SHARP, Object.keys(PREFIX_TO_STYLE[FAMILY_SHARP])), _PREFIXES);\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\n\nfunction getIconName(cssPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === cssPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n if (icon[2]) {\n var aliases = icon[2].filter(function (a) {\n return typeof a === 'number';\n });\n aliases.forEach(function (alias) {\n acc[alias.toString(16)] = iconName;\n });\n }\n\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n acc[iconName] = iconName;\n\n if (icon[2]) {\n var aliases = icon[2].filter(function (a) {\n return typeof a === 'string';\n });\n aliases.forEach(function (alias) {\n acc[alias] = iconName;\n });\n }\n\n return acc;\n });\n _byAlias = lookup(function (acc, icon, iconName) {\n var aliases = icon[2];\n acc[iconName] = iconName;\n aliases.forEach(function (alias) {\n acc[alias] = iconName;\n });\n return acc;\n }); // If we have a Kit, we can't determine if regular is available since we\n // could be auto-fetching it. We'll have to assume that it is available.\n\n var hasRegular = 'far' in styles || config.autoFetchSvg;\n var shimLookups = reduce(shims, function (acc, shim) {\n var maybeNameMaybeUnicode = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n if (typeof maybeNameMaybeUnicode === 'string') {\n acc.names[maybeNameMaybeUnicode] = {\n prefix: prefix,\n iconName: iconName\n };\n }\n\n if (typeof maybeNameMaybeUnicode === 'number') {\n acc.unicodes[maybeNameMaybeUnicode.toString(16)] = {\n prefix: prefix,\n iconName: iconName\n };\n }\n\n return acc;\n }, {\n names: {},\n unicodes: {}\n });\n _byOldName = shimLookups.names;\n _byOldUnicode = shimLookups.unicodes;\n _defaultUsablePrefix = getCanonicalPrefix(config.styleDefault, {\n family: config.familyDefault\n });\n};\nonChange(function (c) {\n _defaultUsablePrefix = getCanonicalPrefix(c.styleDefault, {\n family: config.familyDefault\n });\n});\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byAlias(prefix, alias) {\n return (_byAlias[prefix] || {})[alias];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\nfunction byOldUnicode(unicode) {\n var oldUnicode = _byOldUnicode[unicode];\n var newUnicode = byUnicode('fas', unicode);\n return oldUnicode || (newUnicode ? {\n prefix: 'fas',\n iconName: newUnicode\n } : null) || {\n prefix: null,\n iconName: null\n };\n}\nfunction getDefaultUsablePrefix() {\n return _defaultUsablePrefix;\n}\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalPrefix(styleOrPrefix) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$family = params.family,\n family = _params$family === void 0 ? FAMILY_CLASSIC : _params$family;\n var style = PREFIX_TO_STYLE[family][styleOrPrefix];\n var prefix = STYLE_TO_PREFIX[family][styleOrPrefix] || STYLE_TO_PREFIX[family][style];\n var defined = styleOrPrefix in namespace.styles ? styleOrPrefix : null;\n return prefix || defined || null;\n}\nvar PREFIXES_FOR_FAMILY = (_PREFIXES_FOR_FAMILY = {}, _defineProperty(_PREFIXES_FOR_FAMILY, FAMILY_CLASSIC, Object.keys(PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC])), _defineProperty(_PREFIXES_FOR_FAMILY, FAMILY_SHARP, Object.keys(PREFIX_TO_LONG_STYLE[FAMILY_SHARP])), _PREFIXES_FOR_FAMILY);\nfunction getCanonicalIcon(values) {\n var _famProps;\n\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$skipLookups = params.skipLookups,\n skipLookups = _params$skipLookups === void 0 ? false : _params$skipLookups;\n var famProps = (_famProps = {}, _defineProperty(_famProps, FAMILY_CLASSIC, \"\".concat(config.cssPrefix, \"-\").concat(FAMILY_CLASSIC)), _defineProperty(_famProps, FAMILY_SHARP, \"\".concat(config.cssPrefix, \"-\").concat(FAMILY_SHARP)), _famProps);\n var givenPrefix = null;\n var family = FAMILY_CLASSIC;\n\n if (values.includes(famProps[FAMILY_CLASSIC]) || values.some(function (v) {\n return PREFIXES_FOR_FAMILY[FAMILY_CLASSIC].includes(v);\n })) {\n family = FAMILY_CLASSIC;\n }\n\n if (values.includes(famProps[FAMILY_SHARP]) || values.some(function (v) {\n return PREFIXES_FOR_FAMILY[FAMILY_SHARP].includes(v);\n })) {\n family = FAMILY_SHARP;\n }\n\n var canonical = values.reduce(function (acc, cls) {\n var iconName = getIconName(config.cssPrefix, cls);\n\n if (styles[cls]) {\n cls = LONG_STYLE[family].includes(cls) ? LONG_STYLE_TO_PREFIX[family][cls] : cls;\n givenPrefix = cls;\n acc.prefix = cls;\n } else if (PREFIXES[family].indexOf(cls) > -1) {\n givenPrefix = cls;\n acc.prefix = getCanonicalPrefix(cls, {\n family: family\n });\n } else if (iconName) {\n acc.iconName = iconName;\n } else if (cls !== config.replacementClass && cls !== famProps[FAMILY_CLASSIC] && cls !== famProps[FAMILY_SHARP]) {\n acc.rest.push(cls);\n }\n\n if (!skipLookups && acc.prefix && acc.iconName) {\n var shim = givenPrefix === 'fa' ? byOldName(acc.iconName) : {};\n var aliasIconName = byAlias(acc.prefix, acc.iconName);\n\n if (shim.prefix) {\n givenPrefix = null;\n }\n\n acc.iconName = shim.iconName || aliasIconName || acc.iconName;\n acc.prefix = shim.prefix || acc.prefix;\n\n if (acc.prefix === 'far' && !styles['far'] && styles['fas'] && !config.autoFetchSvg) {\n // Allow a fallback from the regular style to solid if regular is not available\n // but only if we aren't auto-fetching SVGs\n acc.prefix = 'fas';\n }\n }\n\n return acc;\n }, emptyCanonicalIcon());\n\n if (values.includes('fa-brands') || values.includes('fab')) {\n canonical.prefix = 'fab';\n }\n\n if (values.includes('fa-duotone') || values.includes('fad')) {\n canonical.prefix = 'fad';\n }\n\n if (!canonical.prefix && family === FAMILY_SHARP && (styles['fass'] || config.autoFetchSvg)) {\n canonical.prefix = 'fass';\n canonical.iconName = byAlias(canonical.prefix, canonical.iconName) || canonical.iconName;\n }\n\n if (canonical.prefix === 'fa' || givenPrefix === 'fa') {\n // The fa prefix is not canonical. So if it has made it through until this point\n // we will shift it to the correct prefix.\n canonical.prefix = getDefaultUsablePrefix() || 'fas';\n }\n\n return canonical;\n}\n\nvar Library = /*#__PURE__*/function () {\n function Library() {\n _classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]);\n defineIcons(key, additions[key]); // TODO can we stop doing this? We can't get the icons by 'fa-solid' any longer so this probably needs to change\n\n var longPrefix = PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC][key];\n if (longPrefix) defineIcons(longPrefix, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n var aliases = icon[2];\n if (!additions[prefix]) additions[prefix] = {};\n\n if (aliases.length > 0) {\n aliases.forEach(function (alias) {\n if (typeof alias === 'string') {\n additions[prefix][alias] = icon;\n }\n });\n }\n\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n\n return Library;\n}();\n\nvar _plugins = [];\nvar _hooks = {};\nvar providers = {};\nvar defaultProviderKeys = Object.keys(providers);\nfunction registerPlugins(nextPlugins, _ref) {\n var obj = _ref.mixoutsTo;\n _plugins = nextPlugins;\n _hooks = {};\n Object.keys(providers).forEach(function (k) {\n if (defaultProviderKeys.indexOf(k) === -1) {\n delete providers[k];\n }\n });\n\n _plugins.forEach(function (plugin) {\n var mixout = plugin.mixout ? plugin.mixout() : {};\n Object.keys(mixout).forEach(function (tk) {\n if (typeof mixout[tk] === 'function') {\n obj[tk] = mixout[tk];\n }\n\n if (_typeof(mixout[tk]) === 'object') {\n Object.keys(mixout[tk]).forEach(function (sk) {\n if (!obj[tk]) {\n obj[tk] = {};\n }\n\n obj[tk][sk] = mixout[tk][sk];\n });\n }\n });\n\n if (plugin.hooks) {\n var hooks = plugin.hooks();\n Object.keys(hooks).forEach(function (hook) {\n if (!_hooks[hook]) {\n _hooks[hook] = [];\n }\n\n _hooks[hook].push(hooks[hook]);\n });\n }\n\n if (plugin.provides) {\n plugin.provides(providers);\n }\n });\n\n return obj;\n}\nfunction chainHooks(hook, accumulator) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n var hookFns = _hooks[hook] || [];\n hookFns.forEach(function (hookFn) {\n accumulator = hookFn.apply(null, [accumulator].concat(args)); // eslint-disable-line no-useless-call\n });\n return accumulator;\n}\nfunction callHooks(hook) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var hookFns = _hooks[hook] || [];\n hookFns.forEach(function (hookFn) {\n hookFn.apply(null, args);\n });\n return undefined;\n}\nfunction callProvided() {\n var hook = arguments[0];\n var args = Array.prototype.slice.call(arguments, 1);\n return providers[hook] ? providers[hook].apply(null, args) : undefined;\n}\n\nfunction findIconDefinition(iconLookup) {\n if (iconLookup.prefix === 'fa') {\n iconLookup.prefix = 'fas';\n }\n\n var iconName = iconLookup.iconName;\n var prefix = iconLookup.prefix || getDefaultUsablePrefix();\n if (!iconName) return;\n iconName = byAlias(prefix, iconName) || iconName;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\nvar library = new Library();\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n callHooks('noAuto');\n};\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n callHooks('beforeI2svg', params);\n callProvided('pseudoElements2svg', params);\n return callProvided('i2svg', params);\n } else {\n return Promise.reject('Operation requires a DOM of some kind.');\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n callHooks('watch', params);\n });\n }\n};\nvar parse = {\n icon: function icon(_icon) {\n if (_icon === null) {\n return null;\n }\n\n if (_typeof(_icon) === 'object' && _icon.prefix && _icon.iconName) {\n return {\n prefix: _icon.prefix,\n iconName: byAlias(_icon.prefix, _icon.iconName) || _icon.iconName\n };\n }\n\n if (Array.isArray(_icon) && _icon.length === 2) {\n var iconName = _icon[1].indexOf('fa-') === 0 ? _icon[1].slice(3) : _icon[1];\n var prefix = getCanonicalPrefix(_icon[0]);\n return {\n prefix: prefix,\n iconName: byAlias(prefix, iconName) || iconName\n };\n }\n\n if (typeof _icon === 'string' && (_icon.indexOf(\"\".concat(config.cssPrefix, \"-\")) > -1 || _icon.match(ICON_SELECTION_SYNTAX_PATTERN))) {\n var canonicalIcon = getCanonicalIcon(_icon.split(' '), {\n skipLookups: true\n });\n return {\n prefix: canonicalIcon.prefix || getDefaultUsablePrefix(),\n iconName: byAlias(canonicalIcon.prefix, canonicalIcon.iconName) || canonicalIcon.iconName\n };\n }\n\n if (typeof _icon === 'string') {\n var _prefix = getDefaultUsablePrefix();\n\n return {\n prefix: _prefix,\n iconName: byAlias(_prefix, _icon) || _icon\n };\n }\n }\n};\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n parse: parse,\n library: library,\n findIconDefinition: findIconDefinition,\n toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nfunction domVariants(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction asIcon (_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\n\nfunction asSymbol (_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.cssPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread2(_objectSpread2({}, attributes), {}, {\n id: id\n }),\n children: children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n maskId = params.maskId,\n titleId = params.titleId,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var isUploadedIcon = prefix === 'fak';\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.cssPrefix, \"-\").concat(iconName) : ''].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).filter(function (c) {\n return c !== '' || !!c;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) {\n content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n delete content.attributes.title;\n }\n\n var args = _objectSpread2(_objectSpread2({}, content), {}, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n maskId: maskId,\n transform: transform,\n symbol: symbol,\n styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles)\n });\n\n var _ref2 = mask.found && main.found ? callProvided('generateAbstractMask', args) || {\n children: [],\n attributes: {}\n } : callProvided('generateAbstractIcon', args) || {\n children: [],\n attributes: {}\n },\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _objectSpread2({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n\n var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n\n var styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nvar styles$1 = namespace.styles;\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n\n var element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\nvar missingIconResolutionMixin = {\n found: false,\n width: 512,\n height: 512\n};\n\nfunction maybeNotifyMissing(iconName, prefix) {\n if (!PRODUCTION && !config.showMissingIcons && iconName) {\n console.error(\"Icon with name \\\"\".concat(iconName, \"\\\" and prefix \\\"\").concat(prefix, \"\\\" is missing.\"));\n }\n}\n\nfunction findIcon(iconName, prefix) {\n var givenPrefix = prefix;\n\n if (prefix === 'fa' && config.styleDefault !== null) {\n prefix = getDefaultUsablePrefix();\n }\n\n return new Promise(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: callProvided('missingIconAbstract') || {}\n };\n\n if (givenPrefix === 'fa') {\n var shim = byOldName(iconName) || {};\n iconName = shim.iconName || iconName;\n prefix = shim.prefix || prefix;\n }\n\n if (iconName && prefix && styles$1[prefix] && styles$1[prefix][iconName]) {\n var icon = styles$1[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n\n maybeNotifyMissing(iconName, prefix);\n resolve(_objectSpread2(_objectSpread2({}, missingIconResolutionMixin), {}, {\n icon: config.showMissingIcons && iconName ? callProvided('missingIconAbstract') || {} : {}\n }));\n });\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"6.2.0\\\"\";\n\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\n\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin: begin,\n end: end\n};\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction hasPrefixAndIcon(node) {\n var prefix = node.getAttribute ? node.getAttribute(DATA_PREFIX) : null;\n var icon = node.getAttribute ? node.getAttribute(DATA_ICON) : null;\n return prefix && icon;\n}\n\nfunction hasBeenReplaced(node) {\n return node && node.classList && node.classList.contains && node.classList.contains(config.replacementClass);\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nfunction createElementNS(tag) {\n return DOCUMENT.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n\nfunction createElement(tag) {\n return DOCUMENT.createElement(tag);\n}\n\nfunction convertSVG(abstractObj) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$ceFn = params.ceFn,\n ceFn = _params$ceFn === void 0 ? abstractObj.tag === 'svg' ? createElementNS : createElement : _params$ceFn;\n\n if (typeof abstractObj === 'string') {\n return DOCUMENT.createTextNode(abstractObj);\n }\n\n var tag = ceFn(abstractObj.tag);\n Object.keys(abstractObj.attributes || []).forEach(function (key) {\n tag.setAttribute(key, abstractObj.attributes[key]);\n });\n var children = abstractObj.children || [];\n children.forEach(function (child) {\n tag.appendChild(convertSVG(child, {\n ceFn: ceFn\n }));\n });\n return tag;\n}\n\nfunction nodeAsComment(node) {\n var comment = \" \".concat(node.outerHTML, \" \");\n /* BEGIN.ATTRIBUTION */\n\n comment = \"\".concat(comment, \"Font Awesome fontawesome.com \");\n /* END.ATTRIBUTION */\n\n return comment;\n}\n\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n\n if (node.parentNode) {\n mutation[1].forEach(function (abstract) {\n node.parentNode.insertBefore(convertSVG(abstract), node);\n });\n\n if (node.getAttribute(DATA_FA_I2SVG) === null && config.keepOriginalSource) {\n var comment = DOCUMENT.createComment(nodeAsComment(node));\n node.parentNode.replaceChild(comment, node);\n } else {\n node.remove();\n }\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(\"\".concat(config.cssPrefix, \"-.*\"));\n delete abstract[0].attributes.id;\n\n if (abstract[0].attributes.class) {\n var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n\n if (splitClasses.toNode.length === 0) {\n node.removeAttribute('class');\n } else {\n node.setAttribute('class', splitClasses.toNode.join(' '));\n }\n }\n\n var newInnerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nvar disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n var _options$treeCallback = options.treeCallback,\n treeCallback = _options$treeCallback === void 0 ? noop$2 : _options$treeCallback,\n _options$nodeCallback = options.nodeCallback,\n nodeCallback = _options$nodeCallback === void 0 ? noop$2 : _options$nodeCallback,\n _options$pseudoElemen = options.pseudoElementsCallback,\n pseudoElementsCallback = _options$pseudoElemen === void 0 ? noop$2 : _options$pseudoElemen,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n var defaultPrefix = getDefaultUsablePrefix();\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class' && hasPrefixAndIcon(mutationRecord.target)) {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n mutationRecord.target.setAttribute(DATA_PREFIX, prefix || defaultPrefix);\n if (iconName) mutationRecord.target.setAttribute(DATA_ICON, iconName);\n } else if (hasBeenReplaced(mutationRecord.target)) {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser (node) {\n var style = node.getAttribute('style');\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser (node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n\n if (!val.prefix) {\n val.prefix = getDefaultUsablePrefix();\n }\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.iconName && val.prefix) {\n return val;\n }\n\n if (val.prefix && innerText.length > 0) {\n val.iconName = byLigature(val.prefix, node.innerText) || byUnicode(val.prefix, toHex(node.innerText));\n }\n\n if (!val.iconName && config.autoFetchSvg && node.firstChild && node.firstChild.nodeType === Node.TEXT_NODE) {\n val.iconName = node.firstChild.data;\n }\n\n return val;\n}\n\nfunction attributesParser (node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n var title = node.getAttribute('title');\n var titleId = node.getAttribute('data-fa-title-id');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n var parser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n styleParser: true\n };\n\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraAttributes = attributesParser(node);\n var pluginMeta = chainHooks('parseNodeAttributes', {}, node);\n var extraStyles = parser.styleParser ? styleParser(node) : [];\n return _objectSpread2({\n iconName: iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix: prefix,\n transform: meaninglessTransform,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n symbol: false,\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n }, pluginMeta);\n}\n\nvar styles$2 = namespace.styles;\n\nfunction generateMutation(node) {\n var nodeMeta = config.autoReplaceSvg === 'nest' ? parseMeta(node, {\n styleParser: false\n }) : parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return callProvided('generateLayersText', node, nodeMeta);\n } else {\n return callProvided('generateSvgReplacementMutation', node, nodeMeta);\n }\n}\n\nvar knownPrefixes = new Set();\nFAMILIES.map(function (family) {\n knownPrefixes.add(\"fa-\".concat(family));\n});\nObject.keys(PREFIX_TO_STYLE[FAMILY_CLASSIC]).map(knownPrefixes.add.bind(knownPrefixes));\nObject.keys(PREFIX_TO_STYLE[FAMILY_SHARP]).map(knownPrefixes.add.bind(knownPrefixes));\nknownPrefixes = _toConsumableArray(knownPrefixes);\n\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return Promise.resolve();\n var htmlClassList = DOCUMENT.documentElement.classList;\n\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var prefixes = config.autoFetchSvg ? knownPrefixes : FAMILIES.map(function (f) {\n return \"fa-\".concat(f);\n }).concat(Object.keys(styles$2));\n\n if (!prefixes.includes('fa')) {\n prefixes.push('fa');\n }\n\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return Promise.resolve();\n }\n\n var candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return Promise.resolve();\n }\n\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e.name === 'MissingIcon') {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n return new Promise(function (resolve, reject) {\n Promise.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function (e) {\n mark();\n reject(e);\n });\n });\n}\n\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {\n mask: mask\n }));\n };\n}\n\nvar render = function render(iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$maskId = params.maskId,\n maskId = _params$maskId === void 0 ? null : _params$maskId,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$titleId = params.titleId,\n titleId = _params$titleId === void 0 ? null : _params$titleId,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return domVariants(_objectSpread2({\n type: 'icon'\n }, iconDefinition), function () {\n callHooks('beforeDOMElementCreation', {\n iconDefinition: iconDefinition,\n params: params\n });\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n symbol: symbol,\n title: title,\n maskId: maskId,\n titleId: titleId,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n};\nvar ReplaceElements = {\n mixout: function mixout() {\n return {\n icon: resolveIcons(render)\n };\n },\n hooks: function hooks() {\n return {\n mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n accumulator.treeCallback = onTree;\n accumulator.nodeCallback = onNode;\n return accumulator;\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.i2svg = function (params) {\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n return onTree(node, callback);\n };\n\n providers$$1.generateSvgReplacementMutation = function (node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n titleId = nodeMeta.titleId,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n maskId = nodeMeta.maskId,\n extra = nodeMeta.extra;\n return new Promise(function (resolve, reject) {\n Promise.all([findIcon(iconName, prefix), mask.iconName ? findIcon(mask.iconName, mask.prefix) : Promise.resolve({\n found: false,\n width: 512,\n height: 512,\n icon: {}\n })]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n maskId: maskId,\n title: title,\n titleId: titleId,\n extra: extra,\n watchable: true\n })]);\n }).catch(reject);\n });\n };\n\n providers$$1.generateAbstractIcon = function (_ref3) {\n var children = _ref3.children,\n attributes = _ref3.attributes,\n main = _ref3.main,\n transform = _ref3.transform,\n styles = _ref3.styles;\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var nextChild;\n\n if (transformIsMeaningful(transform)) {\n nextChild = callProvided('generateAbstractTransformGrouping', {\n main: main,\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n }\n\n children.push(nextChild || main.icon);\n return {\n children: children,\n attributes: attributes\n };\n };\n }\n};\n\nvar Layers = {\n mixout: function mixout() {\n return {\n layer: function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes;\n return domVariants({\n type: 'layer'\n }, function () {\n callHooks('beforeDOMElementCreation', {\n assembler: assembler,\n params: params\n });\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.cssPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n }\n };\n }\n};\n\nvar LayersCounter = {\n mixout: function mixout() {\n return {\n counter: function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n return domVariants({\n type: 'counter',\n content: content\n }, function () {\n callHooks('beforeDOMElementCreation', {\n content: content,\n params: params\n });\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n }\n };\n }\n};\n\nvar LayersText = {\n mixout: function mixout() {\n return {\n text: function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n return domVariants({\n type: 'text',\n content: content\n }, function () {\n callHooks('beforeDOMElementCreation', {\n content: content,\n params: params\n });\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.generateLayersText = function (node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return Promise.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n };\n }\n};\n\nvar CLEAN_CONTENT_PATTERN = new RegExp(\"\\\"\", 'ug');\nvar SECONDARY_UNICODE_RANGE = [1105920, 1112319];\nfunction hexValueFromContent(content) {\n var cleaned = content.replace(CLEAN_CONTENT_PATTERN, '');\n var codePoint = codePointAt(cleaned, 0);\n var isPrependTen = codePoint >= SECONDARY_UNICODE_RANGE[0] && codePoint <= SECONDARY_UNICODE_RANGE[1];\n var isDoubled = cleaned.length === 2 ? cleaned[0] === cleaned[1] : false;\n return {\n value: isDoubled ? toHex(cleaned[0]) : toHex(cleaned),\n isSecondary: isPrependTen || isDoubled\n };\n}\n\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new Promise(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n var content = styles.getPropertyValue('content');\n\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily && content !== 'none' && content !== '') {\n var _content = styles.getPropertyValue('content');\n\n var family = ~['Sharp'].indexOf(fontFamily[2]) ? FAMILY_SHARP : FAMILY_CLASSIC;\n var prefix = ~['Solid', 'Regular', 'Light', 'Thin', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[family][fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[family][fontWeight];\n\n var _hexValueFromContent = hexValueFromContent(_content),\n hexValue = _hexValueFromContent.value,\n isSecondary = _hexValueFromContent.isSecondary;\n\n var isV4 = fontFamily[0].startsWith('FontAwesome');\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName;\n\n if (isV4) {\n var iconName4 = byOldUnicode(hexValue);\n\n if (iconName4.iconName && iconName4.prefix) {\n iconName = iconName4.iconName;\n prefix = iconName4.prefix;\n }\n } // Only convert the pseudo element in this ::before/::after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n\n if (iconName && !isSecondary && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n var element = DOCUMENT.createElement('svg');\n\n if (position === '::before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return Promise.all([replaceForPosition(node, '::before'), replaceForPosition(node, '::after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements(root) {\n if (!IS_DOM) return;\n return new Promise(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n Promise.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar PseudoElements = {\n hooks: function hooks() {\n return {\n mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n accumulator.pseudoElementsCallback = searchPseudoElements;\n return accumulator;\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.pseudoElements2svg = function (params) {\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n };\n }\n};\n\nvar _unwatched = false;\nvar MutationObserver$1 = {\n mixout: function mixout() {\n return {\n dom: {\n unwatch: function unwatch() {\n disableObservation();\n _unwatched = true;\n }\n }\n };\n },\n hooks: function hooks() {\n return {\n bootstrap: function bootstrap() {\n observe(chainHooks('mutationObserverCallbacks', {}));\n },\n noAuto: function noAuto() {\n disconnect();\n },\n watch: function watch(params) {\n var observeMutationsRoot = params.observeMutationsRoot;\n\n if (_unwatched) {\n enableObservation();\n } else {\n observe(chainHooks('mutationObserverCallbacks', {\n observeMutationsRoot: observeMutationsRoot\n }));\n }\n }\n };\n }\n};\n\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n};\nvar PowerTransforms = {\n mixout: function mixout() {\n return {\n parse: {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n }\n };\n },\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var transformString = node.getAttribute('data-fa-transform');\n\n if (transformString) {\n accumulator.transform = parseTransformString(transformString);\n }\n\n return accumulator;\n }\n };\n },\n provides: function provides(providers) {\n providers.generateAbstractTransformGrouping = function (_ref) {\n var main = _ref.main,\n transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n var operations = {\n outer: outer,\n inner: inner,\n path: path\n };\n return {\n tag: 'g',\n attributes: _objectSpread2({}, operations.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread2({}, operations.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), operations.path)\n }]\n }]\n };\n };\n }\n};\n\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n\n return abstract;\n}\n\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\n\nvar Masks = {\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var maskData = node.getAttribute('data-fa-mask');\n var mask = !maskData ? emptyCanonicalIcon() : getCanonicalIcon(maskData.split(' ').map(function (i) {\n return i.trim();\n }));\n\n if (!mask.prefix) {\n mask.prefix = getDefaultUsablePrefix();\n }\n\n accumulator.mask = mask;\n accumulator.maskId = node.getAttribute('data-fa-mask-id');\n return accumulator;\n }\n };\n },\n provides: function provides(providers) {\n providers.generateAbstractMask = function (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n explicitMaskId = _ref.maskId,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.inner),\n children: [fillBlack(_objectSpread2({\n tag: mainPath.tag,\n attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread2({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n };\n }\n};\n\nvar MissingIconIndicator = {\n provides: function provides(providers) {\n var reduceMotion = false;\n\n if (WINDOW.matchMedia) {\n reduceMotion = WINDOW.matchMedia('(prefers-reduced-motion: reduce)').matches;\n }\n\n providers.missingIconAbstract = function () {\n var gChildren = [];\n var FILL = {\n fill: 'currentColor'\n };\n var ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n }; // Ring\n\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n });\n\n var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'opacity'\n });\n\n var dot = {\n tag: 'circle',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: []\n };\n\n if (!reduceMotion) {\n dot.children.push({\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;1;1;0;1;'\n })\n });\n }\n\n gChildren.push(dot);\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: reduceMotion ? [] : [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;0;0;0;1;'\n })\n }]\n });\n\n if (!reduceMotion) {\n // Exclamation\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '0;0;1;1;0;0;'\n })\n }]\n });\n }\n\n return {\n tag: 'g',\n attributes: {\n 'class': 'missing'\n },\n children: gChildren\n };\n };\n }\n};\n\nvar SvgSymbols = {\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var symbolData = node.getAttribute('data-fa-symbol');\n var symbol = symbolData === null ? false : symbolData === '' ? true : symbolData;\n accumulator['symbol'] = symbol;\n return accumulator;\n }\n };\n }\n};\n\nvar plugins = [InjectCSS, ReplaceElements, Layers, LayersCounter, LayersText, PseudoElements, MutationObserver$1, PowerTransforms, Masks, MissingIconIndicator, SvgSymbols];\n\nregisterPlugins(plugins, {\n mixoutsTo: api\n});\nvar noAuto$1 = api.noAuto;\nvar config$1 = api.config;\nvar library$1 = api.library;\nvar dom$1 = api.dom;\nvar parse$1 = api.parse;\nvar findIconDefinition$1 = api.findIconDefinition;\nvar toHtml$1 = api.toHtml;\nvar icon = api.icon;\nvar layer = api.layer;\nvar text = api.text;\nvar counter = api.counter;\n\nexport { noAuto$1 as noAuto, config$1 as config, library$1 as library, dom$1 as dom, parse$1 as parse, findIconDefinition$1 as findIconDefinition, toHtml$1 as toHtml, icon, layer, text, counter, api };\n","import { parse, icon } from '@fortawesome/fontawesome-svg-core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n// Get CSS class list from a props object\nfunction classList(props) {\n var _classes;\n\n var beat = props.beat,\n fade = props.fade,\n beatFade = props.beatFade,\n bounce = props.bounce,\n shake = props.shake,\n flash = props.flash,\n spin = props.spin,\n spinPulse = props.spinPulse,\n spinReverse = props.spinReverse,\n pulse = props.pulse,\n fixedWidth = props.fixedWidth,\n inverse = props.inverse,\n border = props.border,\n listItem = props.listItem,\n flip = props.flip,\n size = props.size,\n rotation = props.rotation,\n pull = props.pull; // map of CSS class names to properties\n\n var classes = (_classes = {\n 'fa-beat': beat,\n 'fa-fade': fade,\n 'fa-beat-fade': beatFade,\n 'fa-bounce': bounce,\n 'fa-shake': shake,\n 'fa-flash': flash,\n 'fa-spin': spin,\n 'fa-spin-reverse': spinReverse,\n 'fa-spin-pulse': spinPulse,\n 'fa-pulse': pulse,\n 'fa-fw': fixedWidth,\n 'fa-inverse': inverse,\n 'fa-border': border,\n 'fa-li': listItem,\n 'fa-flip': flip === true,\n 'fa-flip-horizontal': flip === 'horizontal' || flip === 'both',\n 'fa-flip-vertical': flip === 'vertical' || flip === 'both'\n }, _defineProperty(_classes, \"fa-\".concat(size), typeof size !== 'undefined' && size !== null), _defineProperty(_classes, \"fa-rotate-\".concat(rotation), typeof rotation !== 'undefined' && rotation !== null && rotation !== 0), _defineProperty(_classes, \"fa-pull-\".concat(pull), typeof pull !== 'undefined' && pull !== null), _defineProperty(_classes, 'fa-swap-opacity', props.swapOpacity), _classes); // map over all the keys in the classes object\n // return an array of the keys where the value for the key is not null\n\n return Object.keys(classes).map(function (key) {\n return classes[key] ? key : null;\n }).filter(function (key) {\n return key;\n });\n}\n\n// Camelize taken from humps\n// humps is copyright © 2012+ Dom Christie\n// Released under the MIT license.\n// Performant way to determine if object coerces to a number\nfunction _isNumerical(obj) {\n obj = obj - 0; // eslint-disable-next-line no-self-compare\n\n return obj === obj;\n}\n\nfunction camelize(string) {\n if (_isNumerical(string)) {\n return string;\n } // eslint-disable-next-line no-useless-escape\n\n\n string = string.replace(/[\\-_\\s]+(.)?/g, function (match, chr) {\n return chr ? chr.toUpperCase() : '';\n }); // Ensure 1st char is always lowercase\n\n return string.substr(0, 1).toLowerCase() + string.substr(1);\n}\n\nvar _excluded = [\"style\"];\n\nfunction capitalize(val) {\n return val.charAt(0).toUpperCase() + val.slice(1);\n}\n\nfunction styleToObject(style) {\n return style.split(';').map(function (s) {\n return s.trim();\n }).filter(function (s) {\n return s;\n }).reduce(function (acc, pair) {\n var i = pair.indexOf(':');\n var prop = camelize(pair.slice(0, i));\n var value = pair.slice(i + 1).trim();\n prop.startsWith('webkit') ? acc[capitalize(prop)] = value : acc[prop] = value;\n return acc;\n }, {});\n}\n\nfunction convert(createElement, element) {\n var extraProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (typeof element === 'string') {\n return element;\n }\n\n var children = (element.children || []).map(function (child) {\n return convert(createElement, child);\n });\n /* eslint-disable dot-notation */\n\n var mixins = Object.keys(element.attributes || {}).reduce(function (acc, key) {\n var val = element.attributes[key];\n\n switch (key) {\n case 'class':\n acc.attrs['className'] = val;\n delete element.attributes['class'];\n break;\n\n case 'style':\n acc.attrs['style'] = styleToObject(val);\n break;\n\n default:\n if (key.indexOf('aria-') === 0 || key.indexOf('data-') === 0) {\n acc.attrs[key.toLowerCase()] = val;\n } else {\n acc.attrs[camelize(key)] = val;\n }\n\n }\n\n return acc;\n }, {\n attrs: {}\n });\n\n var _extraProps$style = extraProps.style,\n existingStyle = _extraProps$style === void 0 ? {} : _extraProps$style,\n remaining = _objectWithoutProperties(extraProps, _excluded);\n\n mixins.attrs['style'] = _objectSpread2(_objectSpread2({}, mixins.attrs['style']), existingStyle);\n /* eslint-enable */\n\n return createElement.apply(void 0, [element.tag, _objectSpread2(_objectSpread2({}, mixins.attrs), remaining)].concat(_toConsumableArray(children)));\n}\n\nvar PRODUCTION = false;\n\ntry {\n PRODUCTION = process.env.NODE_ENV === 'production';\n} catch (e) {}\n\nfunction log () {\n if (!PRODUCTION && console && typeof console.error === 'function') {\n var _console;\n\n (_console = console).error.apply(_console, arguments);\n }\n}\n\nfunction normalizeIconArgs(icon) {\n // this has everything that it needs to be rendered which means it was probably imported\n // directly from an icon svg package\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName && icon.icon) {\n return icon;\n }\n\n if (parse.icon) {\n return parse.icon(icon);\n } // if the icon is null, there's nothing to do\n\n\n if (icon === null) {\n return null;\n } // if the icon is an object and has a prefix and an icon name, return it\n\n\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName) {\n return icon;\n } // if it's an array with length of two\n\n\n if (Array.isArray(icon) && icon.length === 2) {\n // use the first item as prefix, second as icon name\n return {\n prefix: icon[0],\n iconName: icon[1]\n };\n } // if it's a string, use it as the icon name\n\n\n if (typeof icon === 'string') {\n return {\n prefix: 'fas',\n iconName: icon\n };\n }\n}\n\n// creates an object with a key of key\n// and a value of value\n// if certain conditions are met\nfunction objectWithKey(key, value) {\n // if the value is a non-empty array\n // or it's not an array but it is truthy\n // then create the object with the key and the value\n // if not, return an empty array\n return Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value ? _defineProperty({}, key, value) : {};\n}\n\nvar FontAwesomeIcon = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var iconArgs = props.icon,\n maskArgs = props.mask,\n symbol = props.symbol,\n className = props.className,\n title = props.title,\n titleId = props.titleId,\n maskId = props.maskId;\n var iconLookup = normalizeIconArgs(iconArgs);\n var classes = objectWithKey('classes', [].concat(_toConsumableArray(classList(props)), _toConsumableArray(className.split(' '))));\n var transform = objectWithKey('transform', typeof props.transform === 'string' ? parse.transform(props.transform) : props.transform);\n var mask = objectWithKey('mask', normalizeIconArgs(maskArgs));\n var renderedIcon = icon(iconLookup, _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, classes), transform), mask), {}, {\n symbol: symbol,\n title: title,\n titleId: titleId,\n maskId: maskId\n }));\n\n if (!renderedIcon) {\n log('Could not find icon', iconLookup);\n return null;\n }\n\n var abstract = renderedIcon.abstract;\n var extraProps = {\n ref: ref\n };\n Object.keys(props).forEach(function (key) {\n // eslint-disable-next-line no-prototype-builtins\n if (!FontAwesomeIcon.defaultProps.hasOwnProperty(key)) {\n extraProps[key] = props[key];\n }\n });\n return convertCurry(abstract[0], extraProps);\n});\nFontAwesomeIcon.displayName = 'FontAwesomeIcon';\nFontAwesomeIcon.propTypes = {\n beat: PropTypes.bool,\n border: PropTypes.bool,\n beatFade: PropTypes.bool,\n bounce: PropTypes.bool,\n className: PropTypes.string,\n fade: PropTypes.bool,\n flash: PropTypes.bool,\n mask: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n maskId: PropTypes.string,\n fixedWidth: PropTypes.bool,\n inverse: PropTypes.bool,\n flip: PropTypes.oneOf([true, false, 'horizontal', 'vertical', 'both']),\n icon: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n listItem: PropTypes.bool,\n pull: PropTypes.oneOf(['right', 'left']),\n pulse: PropTypes.bool,\n rotation: PropTypes.oneOf([0, 90, 180, 270]),\n shake: PropTypes.bool,\n size: PropTypes.oneOf(['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', '1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', '10x']),\n spin: PropTypes.bool,\n spinPulse: PropTypes.bool,\n spinReverse: PropTypes.bool,\n symbol: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n title: PropTypes.string,\n titleId: PropTypes.string,\n transform: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n swapOpacity: PropTypes.bool\n};\nFontAwesomeIcon.defaultProps = {\n border: false,\n className: '',\n mask: null,\n maskId: null,\n fixedWidth: false,\n inverse: false,\n flip: false,\n icon: null,\n listItem: false,\n pull: null,\n pulse: false,\n rotation: null,\n size: null,\n spin: false,\n spinPulse: false,\n spinReverse: false,\n beat: false,\n fade: false,\n beatFade: false,\n bounce: false,\n shake: false,\n symbol: false,\n title: '',\n titleId: null,\n transform: null,\n swapOpacity: false\n};\nvar convertCurry = convert.bind(null, React.createElement);\n\nexport { FontAwesomeIcon };\n","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};","exports.polyfill = Component => Component\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"active\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n active: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'li'\n};\n\nvar NavItem = function NavItem(props) {\n var className = props.className,\n cssModule = props.cssModule,\n active = props.active,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'nav-item', active ? 'active' : false), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nNavItem.propTypes = propTypes;\nNavItem.defaultProps = defaultProps;\nexport default NavItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"active\", \"tag\", \"innerRef\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func, PropTypes.string]),\n disabled: PropTypes.bool,\n active: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n onClick: PropTypes.func,\n href: PropTypes.any\n};\nvar defaultProps = {\n tag: 'a'\n};\n\nvar NavLink = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(NavLink, _React$Component);\n\n function NavLink(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.onClick = _this.onClick.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = NavLink.prototype;\n\n _proto.onClick = function onClick(e) {\n if (this.props.disabled) {\n e.preventDefault();\n return;\n }\n\n if (this.props.href === '#') {\n e.preventDefault();\n }\n\n if (this.props.onClick) {\n this.props.onClick(e);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n className = _this$props.className,\n cssModule = _this$props.cssModule,\n active = _this$props.active,\n Tag = _this$props.tag,\n innerRef = _this$props.innerRef,\n attributes = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'nav-link', {\n disabled: attributes.disabled,\n active: active\n }), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n ref: innerRef,\n onClick: this.onClick,\n className: classes\n }));\n };\n\n return NavLink;\n}(React.Component);\n\nNavLink.propTypes = propTypes;\nNavLink.defaultProps = defaultProps;\nexport default NavLink;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"expand\", \"className\", \"cssModule\", \"light\", \"dark\", \"fixed\", \"sticky\", \"color\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n light: PropTypes.bool,\n dark: PropTypes.bool,\n full: PropTypes.bool,\n fixed: PropTypes.string,\n sticky: PropTypes.string,\n color: PropTypes.string,\n role: PropTypes.string,\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n expand: PropTypes.oneOfType([PropTypes.bool, PropTypes.string])\n};\nvar defaultProps = {\n tag: 'nav',\n expand: false\n};\n\nvar getExpandClass = function getExpandClass(expand) {\n if (expand === false) {\n return false;\n } else if (expand === true || expand === 'xs') {\n return 'navbar-expand';\n }\n\n return \"navbar-expand-\" + expand;\n};\n\nvar Navbar = function Navbar(props) {\n var _classNames;\n\n var expand = props.expand,\n className = props.className,\n cssModule = props.cssModule,\n light = props.light,\n dark = props.dark,\n fixed = props.fixed,\n sticky = props.sticky,\n color = props.color,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'navbar', getExpandClass(expand), (_classNames = {\n 'navbar-light': light,\n 'navbar-dark': dark\n }, _classNames[\"bg-\" + color] = color, _classNames[\"fixed-\" + fixed] = fixed, _classNames[\"sticky-\" + sticky] = sticky, _classNames)), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nNavbar.propTypes = propTypes;\nNavbar.defaultProps = defaultProps;\nexport default Navbar;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'a'\n};\n\nvar NavbarBrand = function NavbarBrand(props) {\n var className = props.className,\n cssModule = props.cssModule,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'navbar-brand'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nNavbarBrand.propTypes = propTypes;\nNavbarBrand.defaultProps = defaultProps;\nexport default NavbarBrand;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"children\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n type: PropTypes.string,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n children: PropTypes.node\n};\nvar defaultProps = {\n tag: 'button',\n type: 'button'\n};\n\nvar NavbarToggler = function NavbarToggler(props) {\n var className = props.className,\n cssModule = props.cssModule,\n children = props.children,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'navbar-toggler'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({\n \"aria-label\": \"Toggle navigation\"\n }, attributes, {\n className: classes\n }), children || /*#__PURE__*/React.createElement(\"span\", {\n className: mapToCssModules('navbar-toggler-icon', cssModule)\n }));\n};\n\nNavbarToggler.propTypes = propTypes;\nNavbarToggler.defaultProps = defaultProps;\nexport default NavbarToggler;","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"tag\", \"isOpen\", \"className\", \"navbar\", \"cssModule\", \"children\", \"innerRef\"];\n\nvar _transitionStatusToCl;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Transition } from 'react-transition-group';\nimport { mapToCssModules, omit, pick, TransitionTimeouts, TransitionPropTypeKeys, TransitionStatuses, tagPropType } from './utils';\n\nvar propTypes = _objectSpread(_objectSpread({}, Transition.propTypes), {}, {\n isOpen: PropTypes.bool,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n tag: tagPropType,\n className: PropTypes.node,\n navbar: PropTypes.bool,\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.object])\n});\n\nvar defaultProps = _objectSpread(_objectSpread({}, Transition.defaultProps), {}, {\n isOpen: false,\n appear: false,\n enter: true,\n exit: true,\n tag: 'div',\n timeout: TransitionTimeouts.Collapse\n});\n\nvar transitionStatusToClassHash = (_transitionStatusToCl = {}, _transitionStatusToCl[TransitionStatuses.ENTERING] = 'collapsing', _transitionStatusToCl[TransitionStatuses.ENTERED] = 'collapse show', _transitionStatusToCl[TransitionStatuses.EXITING] = 'collapsing', _transitionStatusToCl[TransitionStatuses.EXITED] = 'collapse', _transitionStatusToCl);\n\nfunction getTransitionClass(status) {\n return transitionStatusToClassHash[status] || 'collapse';\n}\n\nfunction getHeight(node) {\n return node.scrollHeight;\n}\n\nvar Collapse = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Collapse, _Component);\n\n function Collapse(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n _this.state = {\n height: null\n };\n ['onEntering', 'onEntered', 'onExit', 'onExiting', 'onExited'].forEach(function (name) {\n _this[name] = _this[name].bind(_assertThisInitialized(_this));\n });\n return _this;\n }\n\n var _proto = Collapse.prototype;\n\n _proto.onEntering = function onEntering(node, isAppearing) {\n this.setState({\n height: getHeight(node)\n });\n this.props.onEntering(node, isAppearing);\n };\n\n _proto.onEntered = function onEntered(node, isAppearing) {\n this.setState({\n height: null\n });\n this.props.onEntered(node, isAppearing);\n };\n\n _proto.onExit = function onExit(node) {\n this.setState({\n height: getHeight(node)\n });\n this.props.onExit(node);\n };\n\n _proto.onExiting = function onExiting(node) {\n // getting this variable triggers a reflow\n var _unused = node.offsetHeight; // eslint-disable-line no-unused-vars\n\n this.setState({\n height: 0\n });\n this.props.onExiting(node);\n };\n\n _proto.onExited = function onExited(node) {\n this.setState({\n height: null\n });\n this.props.onExited(node);\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n Tag = _this$props.tag,\n isOpen = _this$props.isOpen,\n className = _this$props.className,\n navbar = _this$props.navbar,\n cssModule = _this$props.cssModule,\n children = _this$props.children,\n innerRef = _this$props.innerRef,\n otherProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n var height = this.state.height;\n var transitionProps = pick(otherProps, TransitionPropTypeKeys);\n var childProps = omit(otherProps, TransitionPropTypeKeys);\n return /*#__PURE__*/React.createElement(Transition, _extends({}, transitionProps, {\n in: isOpen,\n onEntering: this.onEntering,\n onEntered: this.onEntered,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }), function (status) {\n var collapseClass = getTransitionClass(status);\n var classes = mapToCssModules(classNames(className, collapseClass, navbar && 'navbar-collapse'), cssModule);\n var style = height === null ? null : {\n height: height\n };\n return /*#__PURE__*/React.createElement(Tag, _extends({}, childProps, {\n style: _objectSpread(_objectSpread({}, childProps.style), style),\n className: classes,\n ref: _this2.props.innerRef\n }), children);\n });\n };\n\n return Collapse;\n}(Component);\n\nCollapse.propTypes = propTypes;\nCollapse.defaultProps = defaultProps;\nexport default Collapse;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"tabs\", \"pills\", \"vertical\", \"horizontal\", \"justified\", \"fill\", \"navbar\", \"card\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tabs: PropTypes.bool,\n pills: PropTypes.bool,\n vertical: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n horizontal: PropTypes.string,\n justified: PropTypes.bool,\n fill: PropTypes.bool,\n navbar: PropTypes.bool,\n card: PropTypes.bool,\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'ul',\n vertical: false\n};\n\nvar getVerticalClass = function getVerticalClass(vertical) {\n if (vertical === false) {\n return false;\n } else if (vertical === true || vertical === 'xs') {\n return 'flex-column';\n }\n\n return \"flex-\" + vertical + \"-column\";\n};\n\nvar Nav = function Nav(props) {\n var className = props.className,\n cssModule = props.cssModule,\n tabs = props.tabs,\n pills = props.pills,\n vertical = props.vertical,\n horizontal = props.horizontal,\n justified = props.justified,\n fill = props.fill,\n navbar = props.navbar,\n card = props.card,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, navbar ? 'navbar-nav' : 'nav', horizontal ? \"justify-content-\" + horizontal : false, getVerticalClass(vertical), {\n 'nav-tabs': tabs,\n 'card-header-tabs': card && tabs,\n 'nav-pills': pills,\n 'card-header-pills': card && pills,\n 'nav-justified': justified,\n 'nav-fill': fill\n }), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nNav.propTypes = propTypes;\nNav.defaultProps = defaultProps;\nexport default Nav;","import React from \"react\"\nimport { Link } from \"gatsby-link\"\n\nimport { Container, Navbar, NavbarToggler, NavbarBrand, Nav, NavItem, NavLink, Collapse } from \"reactstrap\"\n\nconst LinkItem = ({ to, children }) => {\n return (\n <NavItem>\n <NavLink\n className=\"link-item\"\n tag={(props) => {\n return (\n <Link {...props} to={to} activeClassName=\"active\">\n {children}\n </Link>\n )\n }}\n />\n </NavItem>\n )\n}\n\nclass PageHeader extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n collapsed: false,\n }\n }\n\n toggle = () => {\n this.setState((prevState) => ({ collapsed: !prevState.collapsed }))\n }\n\n render() {\n return (\n <Navbar color=\"light\" light expand=\"sm\">\n <Container>\n <NavbarBrand to=\"/\" tag={(props) => <Link {...props} />}>\n Java User Group Görlitz\n </NavbarBrand>\n <NavbarToggler onClick={this.toggle} />\n\n <Collapse isOpen={this.state.collapsed} navbar>\n <Nav className=\"ml-auto\" navbar>\n <LinkItem to=\"/\">Aktuell</LinkItem>\n <LinkItem to=\"/talks\">Vorträge</LinkItem>\n <LinkItem to=\"/posters\">Plakate</LinkItem>\n <LinkItem to=\"/unterstuetzer\">Unterstützer</LinkItem>\n <LinkItem to=\"/about\">About</LinkItem>\n <LinkItem to=\"/mitmachen\">Mitmachen</LinkItem>\n </Nav>\n </Collapse>\n </Container>\n </Navbar>\n )\n }\n}\n\nexport default PageHeader\n","import React from \"react\"\n\nimport { Link } from \"gatsby\"\n\nconst PageFooter = () => (\n <footer className=\"container footer\">\n <p>\n <Link to=\"/impressum\">Impressum</Link> | <Link to=\"/datenschutz\">Datenschutz</Link>\n </p>\n </footer>\n)\n\nexport default PageFooter\n","import React from \"react\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\n\nimport bannerJSON from \"../../content/banner.json\"\n\nimport { faFacebook, faGithub, faTwitter, faMastodon } from \"@fortawesome/free-brands-svg-icons\"\nimport { faCalendarAlt, faEnvelope, faRss } from \"@fortawesome/free-solid-svg-icons\"\n\nimport { Col, Row } from \"reactstrap\"\n\nconst Sidebar = () => (\n <div className=\"sidebar\">\n <div>\n <Row>\n <Col sm=\"6\" xs=\"12\" md=\"12\">\n <img alt=\"Logo der JUG Görlitz\" src={require(\"../../content/images/logo.png\").default} />\n </Col>\n <Col sm=\"6\" xs=\"12\" md=\"12\">\n <strong>Organisiert vom <br/><a href=\"https://digitale-oberlausitz.eu\">Digitale Oberlausitz e.V.</a></strong>\n <p>\n Wir sind Mitglied im\n <br />\n <a href=\"http://www.ijug.eu/\">iJUG Verband</a>\n </p>\n\n <p>Links:</p>\n <ul className=\"list-unstyled\">\n <li>\n <a href=\"https://ijug.social/@Juggr\">\n <FontAwesomeIcon icon={faMastodon} /> Mastodon\n </a>\n </li>\n <li>\n <a href=\"https://twitter.com/jug_gr\">\n <FontAwesomeIcon icon={faTwitter} /> Twitter\n </a>\n </li>\n <li>\n <a href=\"https://www.facebook.com/juggr\">\n <FontAwesomeIcon icon={faFacebook} /> Facebook\n </a>\n </li>\n <li>\n <a href=\"https://groups.google.com/d/forum/juggr\">\n <FontAwesomeIcon icon={faEnvelope} /> Mailing-List\n </a>\n </li>\n <li>\n <a href=\"https://github.com/juggr\">\n <FontAwesomeIcon icon={faGithub} /> Github\n </a>\n </li>\n <li>\n <a href=\"/jug-goerlitz.ics\">\n <FontAwesomeIcon icon={faCalendarAlt} /> Kalender\n (ICAL)\n </a>\n </li>\n <li>\n <FontAwesomeIcon icon={faRss} /> Feeds:\n <ul>\n <li>\n <a href=\"/atom.xml\">Atom</a>\n </li>\n <li>\n <a href=\"/rss.xml\">RSS</a>\n </li>\n <li>\n <a href=\"/feed.json\">JSON</a>\n </li>\n </ul>\n </li>\n </ul>\n </Col>\n </Row>\n </div>\n\n <br />\n\n {bannerJSON.banner.map((banner) => (\n <div key={banner.id} className=\"banner\">\n <a href={banner.linkTarget}>\n <img alt={banner.altText} src={require(`../../content/images/${banner.imageName}`).default} />\n </a>\n </div>\n ))}\n </div>\n)\n\nexport default Sidebar\n","import React, { FC } from \"react\"\nimport { StaticQuery, graphql } from \"gatsby\"\n\nimport { Container, Row, Col } from \"reactstrap\"\n\nimport \"bootstrap/dist/css/bootstrap.min.css\"\n\nimport \"../styles/style.css\"\n\nimport PageHeader from \"./page-header\"\nimport PageFooter from \"./page-footer\"\nimport Sidebar from \"./sidebar\"\n\nimport fontawesome from \"@fortawesome/fontawesome\"\n\nfontawesome.config = {\n ...fontawesome.config,\n autoAddCss: false,\n}\n\nconst Layout = ({ children }) => {\n return (\n <>\n <PageHeader />\n <Container\n style={{\n marginTop: \"1em\",\n }}\n >\n <Row>\n <Col md=\"9\">{children}</Col>\n\n <Col md=\"3\">\n <Sidebar />\n </Col>\n </Row>\n </Container>\n\n <PageFooter />\n </>\n )\n}\n\nexport default Layout\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _addClass = _interopRequireDefault(require(\"dom-helpers/class/addClass\"));\n\nvar _removeClass = _interopRequireDefault(require(\"dom-helpers/class/removeClass\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return (0, _addClass.default)(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return (0, _removeClass.default)(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](http://www.nganimate.org/) library, you should use it if you're\n * using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <CSSTransition in={inProp} timeout={200} classNames=\"my-node\">\n * <div>\n * {\"I'll receive my-node-* classes\"}\n * </div>\n * </CSSTransition>\n * <button type=\"button\" onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**.\n */\n\n\nvar CSSTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _this.onEnter = function (node, appearing) {\n var _this$getClassNames = _this.getClassNames(appearing ? 'appear' : 'enter'),\n className = _this$getClassNames.className;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, className);\n\n if (_this.props.onEnter) {\n _this.props.onEnter(node, appearing);\n }\n };\n\n _this.onEntering = function (node, appearing) {\n var _this$getClassNames2 = _this.getClassNames(appearing ? 'appear' : 'enter'),\n activeClassName = _this$getClassNames2.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onEntering) {\n _this.props.onEntering(node, appearing);\n }\n };\n\n _this.onEntered = function (node, appearing) {\n var appearClassName = _this.getClassNames('appear').doneClassName;\n\n var enterClassName = _this.getClassNames('enter').doneClassName;\n\n var doneClassName = appearing ? appearClassName + \" \" + enterClassName : enterClassName;\n\n _this.removeClasses(node, appearing ? 'appear' : 'enter');\n\n addClass(node, doneClassName);\n\n if (_this.props.onEntered) {\n _this.props.onEntered(node, appearing);\n }\n };\n\n _this.onExit = function (node) {\n var _this$getClassNames3 = _this.getClassNames('exit'),\n className = _this$getClassNames3.className;\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n addClass(node, className);\n\n if (_this.props.onExit) {\n _this.props.onExit(node);\n }\n };\n\n _this.onExiting = function (node) {\n var _this$getClassNames4 = _this.getClassNames('exit'),\n activeClassName = _this$getClassNames4.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onExiting) {\n _this.props.onExiting(node);\n }\n };\n\n _this.onExited = function (node) {\n var _this$getClassNames5 = _this.getClassNames('exit'),\n doneClassName = _this$getClassNames5.doneClassName;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, doneClassName);\n\n if (_this.props.onExited) {\n _this.props.onExited(node);\n }\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + '-' : '';\n var className = isStringClassNames ? prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? className + '-active' : classNames[type + 'Active'];\n var doneClassName = isStringClassNames ? className + '-done' : classNames[type + 'Done'];\n return {\n className: className,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$getClassNames6 = this.getClassNames(type),\n className = _this$getClassNames6.className,\n activeClassName = _this$getClassNames6.activeClassName,\n doneClassName = _this$getClassNames6.doneClassName;\n\n className && removeClass(node, className);\n activeClassName && removeClass(node, activeClassName);\n doneClassName && removeClass(node, doneClassName);\n };\n\n _proto.reflowAndAddClass = function reflowAndAddClass(node, className) {\n // This is for to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n if (className) {\n /* eslint-disable no-unused-expressions */\n node && node.scrollTop;\n /* eslint-enable no-unused-expressions */\n\n addClass(node, className);\n }\n };\n\n _proto.render = function render() {\n var props = _extends({}, this.props);\n\n delete props.classNames;\n return _react.default.createElement(_Transition.default, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(_react.default.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, _Transition.default.propTypes, {\n /**\n * The animation classNames applied to the component as it enters, exits or\n * has finished the transition. A single name can be provided and it will be\n * suffixed for each stage: e.g.\n *\n * `classNames=\"fade\"` applies `fade-enter`, `fade-enter-active`,\n * `fade-enter-done`, `fade-exit`, `fade-exit-active`, `fade-exit-done`,\n * `fade-appear`, `fade-appear-active`, and `fade-appear-done`.\n *\n * **Note**: `fade-appear-done` and `fade-enter-done` will _both_ be applied.\n * This allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply an\n * epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: _PropTypes.classNamesShape,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit' class is\n * applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit-active' is applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nvar _default = CSSTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = require(\"react-dom\");\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * The `<ReplaceTransition>` component is a specialized `Transition` component\n * that animates between two children.\n *\n * ```jsx\n * <ReplaceTransition in>\n * <Fade><div>I appear first</div></Fade>\n * <Fade><div>I replace the above</div></Fade>\n * </ReplaceTransition>\n * ```\n */\nvar ReplaceTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ReplaceTransition, _React$Component);\n\n function ReplaceTransition() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n\n _this.handleEnter = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _this.handleLifecycle('onEnter', 0, args);\n };\n\n _this.handleEntering = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return _this.handleLifecycle('onEntering', 0, args);\n };\n\n _this.handleEntered = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return _this.handleLifecycle('onEntered', 0, args);\n };\n\n _this.handleExit = function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n return _this.handleLifecycle('onExit', 1, args);\n };\n\n _this.handleExiting = function () {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n return _this.handleLifecycle('onExiting', 1, args);\n };\n\n _this.handleExited = function () {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n return _this.handleLifecycle('onExited', 1, args);\n };\n\n return _this;\n }\n\n var _proto = ReplaceTransition.prototype;\n\n _proto.handleLifecycle = function handleLifecycle(handler, idx, originalArgs) {\n var _child$props;\n\n var children = this.props.children;\n\n var child = _react.default.Children.toArray(children)[idx];\n\n if (child.props[handler]) (_child$props = child.props)[handler].apply(_child$props, originalArgs);\n if (this.props[handler]) this.props[handler]((0, _reactDom.findDOMNode)(this));\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n children = _this$props.children,\n inProp = _this$props.in,\n props = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\"]);\n\n var _React$Children$toArr = _react.default.Children.toArray(children),\n first = _React$Children$toArr[0],\n second = _React$Children$toArr[1];\n\n delete props.onEnter;\n delete props.onEntering;\n delete props.onEntered;\n delete props.onExit;\n delete props.onExiting;\n delete props.onExited;\n return _react.default.createElement(_TransitionGroup.default, props, inProp ? _react.default.cloneElement(first, {\n key: 'first',\n onEnter: this.handleEnter,\n onEntering: this.handleEntering,\n onEntered: this.handleEntered\n }) : _react.default.cloneElement(second, {\n key: 'second',\n onEnter: this.handleExit,\n onEntering: this.handleExiting,\n onEntered: this.handleExited\n }));\n };\n\n return ReplaceTransition;\n}(_react.default.Component);\n\nReplaceTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n in: _propTypes.default.bool.isRequired,\n children: function children(props, propName) {\n if (_react.default.Children.count(props[propName]) !== 2) return new Error(\"\\\"\" + propName + \"\\\" must be exactly two transition components.\");\n return null;\n }\n} : {};\nvar _default = ReplaceTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nvar _TransitionGroupContext = _interopRequireDefault(require(\"./TransitionGroupContext\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n var node = _reactDom.default.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing);\n\n _this2.onTransitionEnd(node, enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n // allows for nested Transitions\n return _react.default.createElement(_TransitionGroupContext.default.Provider, {\n value: null\n }, children(status, childProps));\n }\n\n var child = _react.default.Children.only(children);\n\n return (// allows for nested Transitions\n _react.default.createElement(_TransitionGroupContext.default.Provider, {\n value: null\n }, _react.default.cloneElement(child, childProps))\n );\n };\n\n return Transition;\n}(_react.default.Component);\n\nTransition.contextType = _TransitionGroupContext.default;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`, `'unmounted'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `<Transition>` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `<Transition>` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = _PropTypes.timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _TransitionGroupContext = _interopRequireDefault(require(\"./TransitionGroupContext\"));\n\nvar _ChildMapping = require(\"./utils/ChildMapping\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n /**\n * The `<TransitionGroup>` component manages a set of transition components\n * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n * components, `<TransitionGroup>` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the `<TransitionGroup>`.\n *\n * Note that `<TransitionGroup>` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\n};\n\nvar TransitionGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_assertThisInitialized(_this))); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? (0, _ChildMapping.getInitialChildMapping)(nextProps, handleExited) : (0, _ChildMapping.getNextChildMapping)(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n };\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = (0, _ChildMapping.getChildMapping)(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return _react.default.createElement(_TransitionGroupContext.default.Provider, {\n value: contextValue\n }, children);\n }\n\n return _react.default.createElement(_TransitionGroupContext.default.Provider, {\n value: contextValue\n }, _react.default.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(_react.default.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `<TransitionGroup>` renders a `<div>` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `<div>` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: _propTypes.default.any,\n\n /**\n * A set of `<Transition>` components, that are toggled `in` and out as they\n * leave. the `<TransitionGroup>` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `<Transition>` as\n * with our `<Fade>` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: _propTypes.default.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: _propTypes.default.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: _propTypes.default.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(TransitionGroup);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = _react.default.createContext(null);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _CSSTransition = _interopRequireDefault(require(\"./CSSTransition\"));\n\nvar _ReplaceTransition = _interopRequireDefault(require(\"./ReplaceTransition\"));\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n Transition: _Transition.default,\n TransitionGroup: _TransitionGroup.default,\n ReplaceTransition: _ReplaceTransition.default,\n CSSTransition: _CSSTransition.default\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.getChildMapping = getChildMapping;\nexports.mergeChildMappings = mergeChildMappings;\nexports.getInitialChildMapping = getInitialChildMapping;\nexports.getNextChildMapping = getNextChildMapping;\n\nvar _react = require(\"react\");\n\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\nfunction getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && (0, _react.isValidElement)(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) _react.Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\n\nfunction mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nfunction getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\n\nfunction getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!(0, _react.isValidElement)(child)) return;\n var hasPrev = key in prevChildMapping;\n var hasNext = key in nextChildMapping;\n var prevChild = prevChildMapping[key];\n var isLeaving = (0, _react.isValidElement)(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = (0, _react.cloneElement)(child, {\n in: false\n });\n } else if (hasNext && hasPrev && (0, _react.isValidElement)(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar timeoutsShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n enter: _propTypes.default.number,\n exit: _propTypes.default.number,\n appear: _propTypes.default.number\n}).isRequired]) : null;\nexports.timeoutsShape = timeoutsShape;\nvar classNamesShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n enter: _propTypes.default.string,\n exit: _propTypes.default.string,\n active: _propTypes.default.string\n}), _propTypes.default.shape({\n enter: _propTypes.default.string,\n enterDone: _propTypes.default.string,\n enterActive: _propTypes.default.string,\n exit: _propTypes.default.string,\n exitDone: _propTypes.default.string,\n exitActive: _propTypes.default.string\n})]) : null;\nexports.classNamesShape = classNamesShape;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"widths\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType, isObject } from './utils';\nvar colWidths = ['xs', 'sm', 'md', 'lg', 'xl'];\nvar stringOrNumberProp = PropTypes.oneOfType([PropTypes.number, PropTypes.string]);\nvar columnProps = PropTypes.oneOfType([PropTypes.bool, PropTypes.number, PropTypes.string, PropTypes.shape({\n size: PropTypes.oneOfType([PropTypes.bool, PropTypes.number, PropTypes.string]),\n order: stringOrNumberProp,\n offset: stringOrNumberProp\n})]);\nvar propTypes = {\n tag: tagPropType,\n xs: columnProps,\n sm: columnProps,\n md: columnProps,\n lg: columnProps,\n xl: columnProps,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n widths: PropTypes.array\n};\nvar defaultProps = {\n tag: 'div',\n widths: colWidths\n};\n\nvar getColumnSizeClass = function getColumnSizeClass(isXs, colWidth, colSize) {\n if (colSize === true || colSize === '') {\n return isXs ? 'col' : \"col-\" + colWidth;\n } else if (colSize === 'auto') {\n return isXs ? 'col-auto' : \"col-\" + colWidth + \"-auto\";\n }\n\n return isXs ? \"col-\" + colSize : \"col-\" + colWidth + \"-\" + colSize;\n};\n\nvar Col = function Col(props) {\n var className = props.className,\n cssModule = props.cssModule,\n widths = props.widths,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var colClasses = [];\n widths.forEach(function (colWidth, i) {\n var columnProp = props[colWidth];\n delete attributes[colWidth];\n\n if (!columnProp && columnProp !== '') {\n return;\n }\n\n var isXs = !i;\n\n if (isObject(columnProp)) {\n var _classNames;\n\n var colSizeInterfix = isXs ? '-' : \"-\" + colWidth + \"-\";\n var colClass = getColumnSizeClass(isXs, colWidth, columnProp.size);\n colClasses.push(mapToCssModules(classNames((_classNames = {}, _classNames[colClass] = columnProp.size || columnProp.size === '', _classNames[\"order\" + colSizeInterfix + columnProp.order] = columnProp.order || columnProp.order === 0, _classNames[\"offset\" + colSizeInterfix + columnProp.offset] = columnProp.offset || columnProp.offset === 0, _classNames)), cssModule));\n } else {\n var _colClass = getColumnSizeClass(isXs, colWidth, columnProp);\n\n colClasses.push(_colClass);\n }\n });\n\n if (!colClasses.length) {\n colClasses.push('col');\n }\n\n var classes = mapToCssModules(classNames(className, colClasses), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nCol.propTypes = propTypes;\nCol.defaultProps = defaultProps;\nexport default Col;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"fluid\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n fluid: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'div'\n};\n\nvar Container = function Container(props) {\n var className = props.className,\n cssModule = props.cssModule,\n fluid = props.fluid,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var containerClass = 'container';\n\n if (fluid === true) {\n containerClass = 'container-fluid';\n } else if (fluid) {\n containerClass = \"container-\" + fluid;\n }\n\n var classes = mapToCssModules(classNames(className, containerClass), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nContainer.propTypes = propTypes;\nContainer.defaultProps = defaultProps;\nexport default Container;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"noGutters\", \"tag\", \"form\", \"widths\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar rowColWidths = ['xs', 'sm', 'md', 'lg', 'xl'];\nvar rowColsPropType = PropTypes.oneOfType([PropTypes.number, PropTypes.string]);\nvar propTypes = {\n tag: tagPropType,\n noGutters: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n form: PropTypes.bool,\n xs: rowColsPropType,\n sm: rowColsPropType,\n md: rowColsPropType,\n lg: rowColsPropType,\n xl: rowColsPropType\n};\nvar defaultProps = {\n tag: 'div',\n widths: rowColWidths\n};\n\nvar Row = function Row(props) {\n var className = props.className,\n cssModule = props.cssModule,\n noGutters = props.noGutters,\n Tag = props.tag,\n form = props.form,\n widths = props.widths,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var colClasses = [];\n widths.forEach(function (colWidth, i) {\n var colSize = props[colWidth];\n delete attributes[colWidth];\n\n if (!colSize) {\n return;\n }\n\n var isXs = !i;\n colClasses.push(isXs ? \"row-cols-\" + colSize : \"row-cols-\" + colWidth + \"-\" + colSize);\n });\n var classes = mapToCssModules(classNames(className, noGutters ? 'no-gutters' : null, form ? 'form-row' : 'row', colClasses), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nRow.propTypes = propTypes;\nRow.defaultProps = defaultProps;\nexport default Row;","import PropTypes from 'prop-types'; // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.4/js/src/modal.js#L436-L443\n\nexport function getScrollbarWidth() {\n var scrollDiv = document.createElement('div'); // .modal-scrollbar-measure styles // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.4/scss/_modal.scss#L106-L113\n\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n}\nexport function setScrollbarWidth(padding) {\n document.body.style.paddingRight = padding > 0 ? padding + \"px\" : null;\n}\nexport function isBodyOverflowing() {\n return document.body.clientWidth < window.innerWidth;\n}\nexport function getOriginalBodyPadding() {\n var style = window.getComputedStyle(document.body, null);\n return parseInt(style && style.getPropertyValue('padding-right') || 0, 10);\n}\nexport function conditionallyUpdateScrollbar() {\n var scrollbarWidth = getScrollbarWidth(); // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.6/js/src/modal.js#L433\n\n var fixedContent = document.querySelectorAll('.fixed-top, .fixed-bottom, .is-fixed, .sticky-top')[0];\n var bodyPadding = fixedContent ? parseInt(fixedContent.style.paddingRight || 0, 10) : 0;\n\n if (isBodyOverflowing()) {\n setScrollbarWidth(bodyPadding + scrollbarWidth);\n }\n}\nvar globalCssModule;\nexport function setGlobalCssModule(cssModule) {\n globalCssModule = cssModule;\n}\nexport function mapToCssModules(className, cssModule) {\n if (className === void 0) {\n className = '';\n }\n\n if (cssModule === void 0) {\n cssModule = globalCssModule;\n }\n\n if (!cssModule) return className;\n return className.split(' ').map(function (c) {\n return cssModule[c] || c;\n }).join(' ');\n}\n/**\n * Returns a new object with the key/value pairs from `obj` that are not in the array `omitKeys`.\n */\n\nexport function omit(obj, omitKeys) {\n var result = {};\n Object.keys(obj).forEach(function (key) {\n if (omitKeys.indexOf(key) === -1) {\n result[key] = obj[key];\n }\n });\n return result;\n}\n/**\n * Returns a filtered copy of an object with only the specified keys.\n */\n\nexport function pick(obj, keys) {\n var pickKeys = Array.isArray(keys) ? keys : [keys];\n var length = pickKeys.length;\n var key;\n var result = {};\n\n while (length > 0) {\n length -= 1;\n key = pickKeys[length];\n result[key] = obj[key];\n }\n\n return result;\n}\nvar warned = {};\nexport function warnOnce(message) {\n if (!warned[message]) {\n /* istanbul ignore else */\n if (typeof console !== 'undefined') {\n console.error(message); // eslint-disable-line no-console\n }\n\n warned[message] = true;\n }\n}\nexport function deprecated(propType, explanation) {\n return function validate(props, propName, componentName) {\n if (props[propName] !== null && typeof props[propName] !== 'undefined') {\n warnOnce(\"\\\"\" + propName + \"\\\" property of \\\"\" + componentName + \"\\\" has been deprecated.\\n\" + explanation);\n }\n\n for (var _len = arguments.length, rest = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n rest[_key - 3] = arguments[_key];\n }\n\n return propType.apply(void 0, [props, propName, componentName].concat(rest));\n };\n} // Shim Element if needed (e.g. in Node environment)\n\nvar Element = typeof window === 'object' && window.Element || function () {};\n\nexport function DOMElement(props, propName, componentName) {\n if (!(props[propName] instanceof Element)) {\n return new Error('Invalid prop `' + propName + '` supplied to `' + componentName + '`. Expected prop to be an instance of Element. Validation failed.');\n }\n}\nexport var targetPropType = PropTypes.oneOfType([PropTypes.string, PropTypes.func, DOMElement, PropTypes.shape({\n current: PropTypes.any\n})]);\nexport var tagPropType = PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.shape({\n $$typeof: PropTypes.symbol,\n render: PropTypes.func\n}), PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.shape({\n $$typeof: PropTypes.symbol,\n render: PropTypes.func\n})]))]);\n/* eslint key-spacing: [\"error\", { afterColon: true, align: \"value\" }] */\n// These are all setup to match what is in the bootstrap _variables.scss\n// https://github.com/twbs/bootstrap/blob/v4-dev/scss/_variables.scss\n\nexport var TransitionTimeouts = {\n Fade: 150,\n // $transition-fade\n Collapse: 350,\n // $transition-collapse\n Modal: 300,\n // $modal-transition\n Carousel: 600 // $carousel-transition\n\n}; // Duplicated Transition.propType keys to ensure that Reactstrap builds\n// for distribution properly exclude these keys for nested child HTML attributes\n// since `react-transition-group` removes propTypes in production builds.\n\nexport var TransitionPropTypeKeys = ['in', 'mountOnEnter', 'unmountOnExit', 'appear', 'enter', 'exit', 'timeout', 'onEnter', 'onEntering', 'onEntered', 'onExit', 'onExiting', 'onExited'];\nexport var TransitionStatuses = {\n ENTERING: 'entering',\n ENTERED: 'entered',\n EXITING: 'exiting',\n EXITED: 'exited'\n};\nexport var keyCodes = {\n esc: 27,\n space: 32,\n enter: 13,\n tab: 9,\n up: 38,\n down: 40,\n home: 36,\n end: 35,\n n: 78,\n p: 80\n};\nexport var PopperPlacements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\nexport var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nexport function isReactRefObj(target) {\n if (target && typeof target === 'object') {\n return 'current' in target;\n }\n\n return false;\n}\n\nfunction getTag(value) {\n if (value == null) {\n return value === undefined ? '[object Undefined]' : '[object Null]';\n }\n\n return Object.prototype.toString.call(value);\n}\n\nexport function toNumber(value) {\n var type = typeof value;\n var NAN = 0 / 0;\n\n if (type === 'number') {\n return value;\n }\n\n if (type === 'symbol' || type === 'object' && getTag(value) === '[object Symbol]') {\n return NAN;\n }\n\n if (isObject(value)) {\n var other = typeof value.valueOf === 'function' ? value.valueOf() : value;\n value = isObject(other) ? \"\" + other : other;\n }\n\n if (type !== 'string') {\n return value === 0 ? value : +value;\n }\n\n value = value.replace(/^\\s+|\\s+$/g, '');\n var isBinary = /^0b[01]+$/i.test(value);\n return isBinary || /^0o[0-7]+$/i.test(value) ? parseInt(value.slice(2), isBinary ? 2 : 8) : /^[-+]0x[0-9a-f]+$/i.test(value) ? NAN : +value;\n}\nexport function isObject(value) {\n var type = typeof value;\n return value != null && (type === 'object' || type === 'function');\n}\nexport function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n\n var tag = getTag(value);\n return tag === '[object Function]' || tag === '[object AsyncFunction]' || tag === '[object GeneratorFunction]' || tag === '[object Proxy]';\n}\nexport function findDOMElements(target) {\n if (isReactRefObj(target)) {\n return target.current;\n }\n\n if (isFunction(target)) {\n return target();\n }\n\n if (typeof target === 'string' && canUseDOM) {\n var selection = document.querySelectorAll(target);\n\n if (!selection.length) {\n selection = document.querySelectorAll(\"#\" + target);\n }\n\n if (!selection.length) {\n throw new Error(\"The target '\" + target + \"' could not be identified in the dom, tip: check spelling\");\n }\n\n return selection;\n }\n\n return target;\n}\nexport function isArrayOrNodeList(els) {\n if (els === null) {\n return false;\n }\n\n return Array.isArray(els) || canUseDOM && typeof els.length === 'number';\n}\nexport function getTarget(target, allElements) {\n var els = findDOMElements(target);\n\n if (allElements) {\n if (isArrayOrNodeList(els)) {\n return els;\n }\n\n if (els === null) {\n return [];\n }\n\n return [els];\n } else {\n if (isArrayOrNodeList(els)) {\n return els[0];\n }\n\n return els;\n }\n}\nexport var defaultToggleEvents = ['touchstart', 'click'];\nexport function addMultipleEventListeners(_els, handler, _events, useCapture) {\n var els = _els;\n\n if (!isArrayOrNodeList(els)) {\n els = [els];\n }\n\n var events = _events;\n\n if (typeof events === 'string') {\n events = events.split(/\\s+/);\n }\n\n if (!isArrayOrNodeList(els) || typeof handler !== 'function' || !Array.isArray(events)) {\n throw new Error(\"\\n The first argument of this function must be DOM node or an array on DOM nodes or NodeList.\\n The second must be a function.\\n The third is a string or an array of strings that represents DOM events\\n \");\n }\n\n Array.prototype.forEach.call(events, function (event) {\n Array.prototype.forEach.call(els, function (el) {\n el.addEventListener(event, handler, useCapture);\n });\n });\n return function removeEvents() {\n Array.prototype.forEach.call(events, function (event) {\n Array.prototype.forEach.call(els, function (el) {\n el.removeEventListener(event, handler, useCapture);\n });\n });\n };\n}\nexport var focusableElements = ['a[href]', 'area[href]', 'input:not([disabled]):not([type=hidden])', 'select:not([disabled])', 'textarea:not([disabled])', 'button:not([disabled])', 'object', 'embed', '[tabindex]:not(.modal)', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable=\"false\"])'];","export default __webpack_public_path__ + \"static/35c3-congress-everywhere-c6d1ad94c430954d27dc3c4f9347a364.png\";","export default __webpack_public_path__ + \"static/WJAX_2019_266x145-55e9387b7bc7109fb516e61b64516677.jpg\";","export default __webpack_public_path__ + \"static/banner_javaland_2023-bbf849f85a3eda8be541845b1f92ef96.jpg\";","export default __webpack_public_path__ + \"static/banner_jax_2023-bc5c6880e35452bd858c7ef22bd3e1cc.jpg\";","export default __webpack_public_path__ + \"static/banner_jug_saxony_day_2022-34f9a0dd801252b721484ceda6443ff4.png\";","export default __webpack_public_path__ + \"static/banner_wjax_2022-22f85ce5d6858bea82b6b48da9316ec5.jpg\";","export default __webpack_public_path__ + \"static/entwickler_tutorials_logo-d1aef911fdec3b2ac40683f00947db5a.jpg\";","export default __webpack_public_path__ + \"static/grillen-0c716ec2dd81bef5ed8583454d2defbf.jpg\";","export default __webpack_public_path__ + \"static/icon-83fc2d3536f1fb90c67ad3e83e89d25f.png\";","export default __webpack_public_path__ + \"static/javaland_2019_banner-089cf335f7276dc79077402b7302112f.jpg\";","export default __webpack_public_path__ + \"static/javaland_2020_banner-c3150179ad8ff882658bab7c381512bf.jpg\";","export default __webpack_public_path__ + \"static/javaland_2022_banner-2b21bf73ef9d13468083f1c54cd4ee44.jpg\";","export default __webpack_public_path__ + \"static/javaland_2024_banner-5b59695001cca42ff6a67f0eae6c1923.jpg\";","export default __webpack_public_path__ + \"static/javaland_2024_banner_big-e42472f5949df5b70f614cdd2fcfa716.jpg\";","export default __webpack_public_path__ + \"static/jax19_banner-7156748b7a4266599c288d2d16cc1edf.jpg\";","export default __webpack_public_path__ + \"static/jax20_banner-eeedb179c6845ef6e8745456dcc55f6d.jpg\";","export default __webpack_public_path__ + \"static/jax21_banner-663509eac051c7c0b71a7ec4fb437dee.jpg\";","export default __webpack_public_path__ + \"static/jax22_banner-5841054a4c1366fdb4078210ccadd02e.jpg\";","export default __webpack_public_path__ + \"static/jax_banner-eaf76932797b8cdfbc49630ac9ae5ec3.png\";","export default __webpack_public_path__ + \"static/jdd_2022_banner-cc247ae146c29aa7fc10b7b5167aba5f.png\";","export default __webpack_public_path__ + \"static/jdd_2023_banner-3c34056264fdd0f4b44386abfb3f6422.jpg\";","export default __webpack_public_path__ + \"static/kickerking_logo-56e0c6abf8c0d609c15ca2da730a33ee.jpg\";","export default __webpack_public_path__ + \"static/lernfabrik-efe6c92d2c437c2f636b8556a6997d04.png\";","export default __webpack_public_path__ + \"static/logo-1d738a22f39c568c148bd4f6433b2ff4.png\";","export default \"data:image/jpeg;base64,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\"","export default __webpack_public_path__ + \"static/mitp_logo_gross-6e7375d19fabf502c174d0ad5c5e8bea.png\";","export default __webpack_public_path__ + \"static/christian_kuemmel-0347c7fb7d78824aa63e233f88dffd44.jpg\";","export default __webpack_public_path__ + \"static/christoph_menzel-b4b6a917ca643c903f625caafb618b50.png\";","export default __webpack_public_path__ + \"static/damian_dudziec-30f60ff25d6e0a6722a507b94aafe3d2.png\";","export default __webpack_public_path__ + \"static/daniel_fesenmeyer-6f6477e2c7049f9abfbfd082fff388fb.jpg\";","export default __webpack_public_path__ + \"static/daniel_sulyok-eeee198794fffc1d559c61993cf9d5fd.jpg\";","export default __webpack_public_path__ + \"static/denny.israel-c4d6c7197b3f4945e6589cd7a084bf38.jpg\";","export default __webpack_public_path__ + \"static/gerrit_grunwald-d23d6f6ff244d911d3b7f020ee11a394.jpg\";","export default __webpack_public_path__ + \"static/gregor_trefs-825faee3a18b040f9509c18b4568f760.png\";","export default __webpack_public_path__ + \"static/hannes_kretschmer-c9cb2402d5c4f5daa47eda2433057a93.jpg\";","export default __webpack_public_path__ + \"static/hendrik_ebbers-2ed57b5c4e2c1d1fd234f9c41f5c420e.png\";","export default __webpack_public_path__ + \"static/jens_leuschner-48076ed40eef2f9361651fb1f947ecf2.jpg\";","export default __webpack_public_path__ + \"static/joerg_laessig-eb39f697b764842bbeca75e4ccbfeffc.jpg\";","export default __webpack_public_path__ + \"static/lars_roewekamp-b3ea86bde9c25bb281593ce876b4dc99.png\";","export default __webpack_public_path__ + \"static/maik_wagner-89df35798ec379960b97c1c0931fd742.jpg\";","export default __webpack_public_path__ + \"static/manuel_mauky-a216cd990743c6e5169525d5ad73d4e0.jpg\";","export default __webpack_public_path__ + \"static/marco_gotthans-c39f9f81f98ae3b9195d297e3cb4cd99.png\";","export default __webpack_public_path__ + \"static/mariusz_zienkiewicz-b5c53411e3d6cb7fa6979441ee4ee402.jpg\";","export default __webpack_public_path__ + \"static/markus_kett-bdd63f175e217c2cbd7092ad5c98f837.png\";","export default __webpack_public_path__ + \"static/markus_ullrich-e802330df6a22f6444fed84b5e04b1c2.jpg\";","export default __webpack_public_path__ + \"static/markus_weiland-6b6225ccdec6091cce482b79a2978750.jpg\";","export default __webpack_public_path__ + \"static/marlene_knoche-eebdcba4bf110a0be3150bfcca614a99.jpg\";","export default __webpack_public_path__ + \"static/max_wielsch-9e0e7d64ad8f1d33cdf8c3cf983a4a74.jpg\";","export default __webpack_public_path__ + \"static/michael_hunger-99b6a2ea0ee3b58a67d50570e5b82639.png\";","export default __webpack_public_path__ + \"static/michael_simons-d64a89b53c50eb414d0812c291f6034e.jpg\";","export default __webpack_public_path__ + \"static/nico_foerster-67056fb35ac3744a13faece5302e6b79.jpg\";","export default __webpack_public_path__ + \"static/oliver_drotbohm-388d8f59a5e927511121e4138277e4b6.png\";","export default __webpack_public_path__ + \"static/patryk_lewandowski-4546bdb44e6a627571416b678b3ba8a8.jpg\";","export default __webpack_public_path__ + \"static/pawel_adaszewski-3d03250d6e6c2c7f91c1888aae864c93.jpg\";","export default __webpack_public_path__ + \"static/roland_weisleder-df413237239aecefd7d0743224f4d121.jpg\";","export default __webpack_public_path__ + \"static/sergej_tihonov-e06adf34f9ec9680fa9bc80594bfe8b0.jpg\";","export default __webpack_public_path__ + \"static/simon_roloff-a3c56d1d0c1b361c98d7ae20fd453aa3.png\";","export default __webpack_public_path__ + \"static/stefan_bley-fdea1a834e82acc998437adc03cb264b.jpg\";","export default __webpack_public_path__ + \"static/stefan_zoerner-de8ec4c8f9fcaeb93430ac5e3bcb9c11.jpg\";","export default __webpack_public_path__ + \"static/stefan_zoerner_2-b7e42e02c946884aa386a5f2d8f48d13.jpg\";","export default __webpack_public_path__ + \"static/stephan_strehler-4a163d44cae1a55852c570c2378fb7ae.jpg\";","export default __webpack_public_path__ + \"static/sven_hoffmann-e26687caf9bd0601eae888558eb65150.jpg\";","export default __webpack_public_path__ + \"static/thilo_frotscher-3c8f640270ed0f5cc7568af5b1d1c2c0.jpg\";","export default __webpack_public_path__ + \"static/uwe_manteuffel-8114dc136d03e15e9601c2262df2f0c1.jpg\";","export default __webpack_public_path__ + \"static/wolfgang_weigend-d8102173c06904bfddaf28fcfce91e19.jpg\";","export default __webpack_public_path__ + \"static/plakat_2016_01-d966621696c2b1c19dbe9b66378b1fea.png\";","export default __webpack_public_path__ + \"static/plakat_2016_03-7a057c1c415a722e539905543aa25254.png\";","export default __webpack_public_path__ + \"static/plakat_2016_05-033bee59571b15df5df146a1b6fb64a4.png\";","export default __webpack_public_path__ + \"static/plakat_2016_09-dea570ddfd68d92913587725dca3de3e.png\";","export default __webpack_public_path__ + \"static/plakat_2016_11-03b6d7da4bd7c67f0b2af9f9ef722486.png\";","export default __webpack_public_path__ + \"static/plakat_2017_01-9139600192a183f0e227415c38a3a0c1.png\";","export default __webpack_public_path__ + \"static/plakat_2017_02-79fae7d293949c9f22d118c8cfc2a79b.png\";","export default __webpack_public_path__ + \"static/plakat_2017_03-b5b1d0b94001a2fe20f7204603857151.png\";","export default __webpack_public_path__ + \"static/plakat_2017_04-ede659ffb71c073c02473ee425c031f4.png\";","export default __webpack_public_path__ + \"static/plakat_2017_05-9db3e7ead6eb46db91a6d1a3ab90eef6.png\";","export default __webpack_public_path__ + \"static/plakat_2017_07-73f719582646f6a79c80b1c23c68e785.png\";","export default __webpack_public_path__ + \"static/plakat_2017_10-671ebe33d4c06ae3ed85b430792d8fc4.png\";","export default __webpack_public_path__ + \"static/plakat_2017_11-6f8a316b573a05fe0d75803c55e9f682.png\";","export default __webpack_public_path__ + \"static/plakat_2018_01-a3b57b49681719103100c434c462a40f.png\";","export default __webpack_public_path__ + \"static/plakat_2018_02-159b14fa302afb2b6d58c0b2e7da74d5.png\";","export default __webpack_public_path__ + \"static/plakat_2018_03-1cc45da49f0c4722ce031504e9f464d9.png\";","export default __webpack_public_path__ + \"static/plakat_2018_04-4f511f39b86be771fad22e5844350f7e.png\";","export default __webpack_public_path__ + \"static/plakat_2018_05-23d6d639a541e033911bcd0ce28c07a6.png\";","export default __webpack_public_path__ + \"static/plakat_2018_06-b986bed18b94821c4effba69f8418d40.png\";","export default __webpack_public_path__ + \"static/plakat_2018_09-e686dd9a4dd09e9273ee9330abbc5a1b.png\";","export default __webpack_public_path__ + \"static/plakat_2018_11-5285241fc6482f5c399ce71128d436a4.png\";","export default __webpack_public_path__ + \"static/plakat_2019_01-9d0fe3cddd74fe102b73fe2ed600814e.png\";","export default __webpack_public_path__ + \"static/plakat_2019_02-db09d0b46fe10650ce99a55cf45dd761.png\";","export default __webpack_public_path__ + \"static/plakat_2019_03-8aa66165d15f5467aa29d75d6c714b19.png\";","export default __webpack_public_path__ + \"static/plakat_2019_04-928b54e2c9fdc98e3a8c2f07af460a28.png\";","export default __webpack_public_path__ + \"static/plakat_2019_05-b3ffd0d83022f50c00137c387b1e5198.png\";","export default __webpack_public_path__ + \"static/plakat_2019_06-8df07980c71663696909e4508b42a113.png\";","export default __webpack_public_path__ + \"static/plakat_2019_11-3c93d7cda2405a7a1c36c2154da1aed4.png\";","export default __webpack_public_path__ + \"static/plakat_2020-01-62c3fbe04afc6d77091b7197e74940d1.png\";","export default __webpack_public_path__ + \"static/plakat_2020_04-e8cfc3c64fc8cdcc823625f91d832f1c.png\";","export default __webpack_public_path__ + \"static/plakat_2020_07-dbc06d58631a1697651ae157d44b7d09.png\";","export default __webpack_public_path__ + \"static/plakat_2020_11-cdcfef5b2674d29f1a08c9b7cf0ebad0.png\";","export default __webpack_public_path__ + \"static/plakat_2021_01-08228b1141fc72ec0d867d08ce89e14f.png\";","export default __webpack_public_path__ + \"static/plakat_2021_06-c0638a51678741cace9ec84a9dc907c9.png\";","export default __webpack_public_path__ + \"static/plakat_2022_06-510beda12016fc41e12ee29961cb5fe6.png\";","export default __webpack_public_path__ + \"static/plakat_2022_10-44c9c932fdf813596036a584b4798eb2.png\";","export default __webpack_public_path__ + \"static/plakat_2022_11-6c0f7d8395ba77bb26ab83224867e54a.png\";","export default __webpack_public_path__ + \"static/plakat_2023_01-faaef47c50c0892c4dff9bef2b2d1425.png\";","export default __webpack_public_path__ + \"static/plakat_2023_02-8e9d416e7f80cec11420d8ba550623ea.png\";","export default __webpack_public_path__ + \"static/plakat_2023_03-cc5b88f0a7dcf4a1bdf40ca0bbb74d56.png\";","export default __webpack_public_path__ + \"static/plakat_2023_04-4bcd6edf02f22ddb9377f65606c7ad51.png\";","export default __webpack_public_path__ + \"static/plakat_2023_05-5a5385953c33a10a67e4285d5777a21a.png\";","export default __webpack_public_path__ + \"static/plakat_2023_06-b66f0d9df73973330992646d28f9fa74.png\";","export default __webpack_public_path__ + \"static/plakat_2023_09-166049e8b21b32600dbab5da6d7a1a70.png\";","export default __webpack_public_path__ + \"static/plakat_2023_10-e7c85fc8de82208879733a49c119aa9b.png\";","export default __webpack_public_path__ + \"static/plakat_2023_11-70c9a4a049551c4e7d406192b58232cf.png\";","export default __webpack_public_path__ + \"static/plakat_2024_01-d8038a51178d407567b13e90a08e13db.png\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/saxsys_logo-9586022129a4e22597f0771c68d11d42.jpg\";","export default __webpack_public_path__ + \"static/wjax21_banner-7ccb9feb88e112d9494f555db2c363d0.jpg\";","export default __webpack_public_path__ + \"static/zeiss-logo-rgb-7d623d17dbef71d31522f884205cdece.png\";","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","noop","_WINDOW","_DOCUMENT","_MUTATION_OBSERVER$1","_PERFORMANCE","mark","measure","window","document","MutationObserver","performance","_ref$userAgent","navigator","userAgent","undefined","WINDOW","DOCUMENT","MUTATION_OBSERVER","PERFORMANCE","IS_BROWSER","IS_DOM","documentElement","head","addEventListener","createElement","IS_IE","indexOf","DEFAULT_REPLACEMENT_CLASS","DATA_FA_I2SVG","DATA_FA_PSEUDO_ELEMENT","PRODUCTION","oneToTen","oneToTwenty","concat","ATTRIBUTES_WATCHED_FOR_MUTATION","RESERVED_CLASSES","n","createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","defineProperty","key","Constructor","protoProps","staticProps","prototype","_extends","assign","arguments","source","hasOwnProperty","call","toConsumableArray","arr","Array","isArray","arr2","from","initial","FontAwesomeConfig","initialKeys","_default","familyPrefix","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","keepOriginalSource","measurePerformance","showMissingIcons","config$1","update","newConfig","params","_params$asNewDefault","asNewDefault","validKeys","ok","k","forEach","configKey","w","styles","hooks","shims","namespace","functions","loaded","doScroll","test","readyState","listener","removeEventListener","fn","d","meaninglessTransform","size","x","y","rotate","flipX","flipY","insertCss","css","style","setAttribute","innerHTML","headChildren","childNodes","beforeChild","child","tagName","toUpperCase","insertBefore","_uniqueId","nextUniqueId","toArray","obj","array","classArray","node","classList","getAttribute","split","filter","getIconName","cls","name","parts","prefix","iconName","slice","join","htmlEscape","str","replace","joinStyles","reduce","acc","styleName","transformIsMeaningful","transform","transformForSvg","_ref","containerWidth","iconWidth","outer","inner","path","ALL_SPACE","width","height","makeInlineSvgAbstract","_params$icons","icons","main","mask","symbol","title","extra","_params$watchable","watchable","found","widthClass","Math","ceil","attrClass","classes","content","children","attributes","push","tag","args","_ref2","mainWidth","mainPath","icon","maskWidth","maskPath","trans","maskRect","fill","maskInnerGroup","maskOuterGroup","maskId","clipId","defs","maskUnits","maskContentUnits","makeIconMasking","styleString","makeIconStandard","asSymbol","offset","asIcon","makeLayersTextAbstract","_params$watchable2","_ref2$width","_ref2$height","_ref2$startCentered","startCentered","val","transformForCss","class","noop$2","p","preamble","end","perf","subject","initialValue","thisContext","result","iterator","func","a","b","c","bindInternal4","styles$2","_byUnicode","_byLigature","_byOldName","build","lookup","reducer","ligatures","ligature","hasRegular","shim","oldName","styles$1","getCanonicalIcon","values","rest","iconFromMapping","mapping","toHtml","abstractNodes","_abstractNodes$attrib","_abstractNodes$childr","attributeName","trim","joinAttributes","noop$1","isWatched","mutators","mutation","newOuterHTML","parentNode","outerHTML","toLowerCase","newNode","replaceChild","nest","abstract","forSvg","RegExp","splitClasses","match","toSvg","toNode","newInnerHTML","perform","mutations","callback","callbackFunction","requestAnimationFrame","op","mutator","disabled","mo","classParser","existingPrefix","existingIconName","innerText","unicode","byUnicode","charCodeAt","toString","toHex","parseTransformString","transformString","first","parseFloat","isNaN","parseMeta","_classParser","extraClasses","extraStyles","prop","value","styleParser","transformParser","symbolParser","extraAttributes","attr","attributesParser","maskParser","MissingIcon","error","this","message","stack","create","constructor","FILL","ANIMATION_BASE","attributeType","repeatCount","dur","RING","OPACITY_ANIMATE","missing","cx","cy","r","opacity","LAYERS_TEXT_CLASSNAME","FONT_FAMILY_PATTERN","STYLE_TO_PREFIX","findIcon","generateMutation","nodeMeta","computedFontSize","parseInt","getComputedStyle","fontSize","boundingClientRect","getBoundingClientRect","generateLayersText","generateSvgReplacementMutation","remove","removeChild","root","operation","querySelectorAll","pos","fontFamily","getPropertyValue","pseudoElement","nextSibling","textContent","substr","firstChild","appendChild","onTree","htmlClassList","hclAdd","suffix","add","HTML_CLASS_I2SVG_BASE_CLASS","hclRemove","prefixes","prefixesDomQuery","candidates","console","onNode","drc","fp","rc","s","dPatt","rPatt","define","normalized","addPack","Library","instance","TypeError","classCallCheck","definitions","_this","_len","_key","additions","_pullDefinitions","definition","_normalized$key","prepIcon","_cssInserted","ensureCss","apiObject","abstractCreator","get","container","html","findIconDefinition","_params$prefix","library","next","dom","i2svg","_params$node","_params$callback","iconDefinition","_params$transform","_params$symbol","_params$mask","_params$title","_params$classes","_params$attributes","_params$styles","type","maybeIconDefinition","api$1","noAuto","disconnect","parse","text","_params$transform2","_params$title2","_params$classes2","_params$attributes2","_params$styles2","layer","assembler","autoReplace","set","bunker","FontAwesome","options","treeCallback","nodeCallback","pseudoElementsCallback","objects","mutationRecord","addedNodes","_getCanonicalIcon","observe","getElementsByTagName","childList","characterData","subtree","setTimeout","addShims","_namespace$shims","apply","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread2","_defineProperty","getOwnPropertyDescriptors","_typeof","Symbol","_defineProperties","_slicedToArray","_arrayWithHoles","_i","_s","_e","_arr","_n","_d","done","err","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","minLen","len","_MUTATION_OBSERVER","_familyProxy","_familyProxy2","_familyProxy3","_familyProxy4","_familyProxy5","DATA_PREFIX","DATA_ICON","TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS","FAMILY_CLASSIC","FAMILY_SHARP","FAMILIES","familyProxy","Proxy","PREFIX_TO_STYLE","PREFIX_TO_LONG_STYLE","LONG_STYLE_TO_PREFIX","ICON_SELECTION_SYNTAX_PATTERN","FONT_WEIGHT_TO_PREFIX","DUOTONE_CLASSES","Set","bind","querySelector","coerce","element","getAttrConfig","styleDefault","familyDefault","cssPrefix","mutateApproach","_config","config","_onChangeCb","cb","random","dcp","customPropPatt","InjectCSS","mixout","beforeDOMElementCreation","beforeI2svg","domready","decoded","string","output","counter","ucs2decode","normalizeIcons","defineIcons","_params$skipHooks","skipHooks","_LONG_STYLE","_PREFIXES","_PREFIXES_FOR_FAMILY","LONG_STYLE","_defaultUsablePrefix","_byOldUnicode","_byAlias","PREFIXES","alias","aliases","autoFetchSvg","shimLookups","maybeNameMaybeUnicode","names","unicodes","getCanonicalPrefix","family","byAlias","byOldName","getDefaultUsablePrefix","styleOrPrefix","_params$family","defined","PREFIXES_FOR_FAMILY","_famProps","_params$skipLookups","skipLookups","famProps","givenPrefix","includes","some","v","canonical","aliasIconName","_classCallCheck","longPrefix","_plugins","_hooks","providers","defaultProviderKeys","chainHooks","hook","accumulator","hookFns","hookFn","callHooks","_len2","_key2","callProvided","iconLookup","Promise","reject","watch","autoReplaceSvgRoot","api","_icon","canonicalIcon","_prefix","_params$autoReplaceSv","domVariants","titleId","isUploadedIcon","role","uploadedIconWidthStyle","makeLayersCounterAbstract","asFoundIcon","vectorData","missingIconResolutionMixin","maybeNotifyMissing","createElementNS","convertSVG","abstractObj","_params$ceFn","ceFn","createTextNode","comment","createComment","nodeAsComment","removeAttribute","performOperationSync","frame","disableObservation","enableObservation","_options$treeCallback","_options$nodeCallback","_options$pseudoElemen","_options$observeMutat","observeMutationsRoot","defaultPrefix","hasPrefixAndIcon","contains","nodeType","Node","TEXT_NODE","data","parser","pluginMeta","knownPrefixes","f","all","then","resolvedMutations","catch","render","_params$maskId","_params$titleId","ReplaceElements","mutationObserverCallbacks","provides","providers$$1","generateAbstractIcon","_ref3","nextChild","Layers","LayersCounter","LayersText","CLEAN_CONTENT_PATTERN","SECONDARY_UNICODE_RANGE","replaceForPosition","position","pendingAttribute","oldUnicode","newUnicode","alreadyProcessedPseudoElement","fontWeight","_content","_hexValueFromContent","index","second","cleaned","codePoint","isPrependTen","isDoubled","isSecondary","hexValueFromContent","hexValue","isV4","startsWith","iconIdentifier","iconName4","meta","processable","operations","_unwatched","PowerTransforms","parseNodeAttributes","generateAbstractTransformGrouping","innerTranslate","innerScale","innerRotate","fillBlack","force","Masks","maskData","generateAbstractMask","explicitMaskId","maskInnerGroupChildrenMixin","maskTag","MissingIconIndicator","reduceMotion","matchMedia","matches","missingIconAbstract","gChildren","dot","nextPlugins","mixoutsTo","plugin","tk","sk","registerPlugins","pseudoElements2svg","unwatch","bootstrap","symbolData","parse$1","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","camelize","chr","_excluded","styleToObject","pair","charAt","normalizeIconArgs","objectWithKey","FontAwesomeIcon","ref","iconArgs","maskArgs","className","_classes","beat","fade","beatFade","bounce","shake","flash","spin","spinPulse","spinReverse","pulse","fixedWidth","inverse","border","listItem","flip","rotation","pull","swapOpacity","renderedIcon","_console","log","extraProps","defaultProps","convertCurry","displayName","propTypes","convert","mixins","attrs","_extraProps$style","existingStyle","remaining","hasOwn","classNames","arg","argType","default","_interopRequireDefault","__esModule","_hasClass","baseVal","replaceClassName","origClass","classToRemove","polyfill","Component","active","cssModule","NavItem","Tag","innerRef","onClick","href","NavLink","_React$Component","_proto","preventDefault","_this$props","light","dark","full","fixed","sticky","color","expand","Navbar","_classNames","getExpandClass","NavbarBrand","NavbarToggler","_transitionStatusToCl","_objectSpread","Transition","isOpen","navbar","appear","enter","exit","timeout","transitionStatusToClassHash","getHeight","scrollHeight","Collapse","_Component","state","onEntering","isAppearing","setState","onEntered","onExit","onExiting","offsetHeight","onExited","_this2","otherProps","transitionProps","childProps","in","status","collapseClass","getTransitionClass","tabs","pills","vertical","horizontal","justified","card","Nav","getVerticalClass","LinkItem","to","React","Link","activeClassName","toggle","prevState","collapsed","Container","Row","Col","sm","xs","md","alt","src","require","faMastodon","faTwitter","faFacebook","faEnvelope","faGithub","faCalendarAlt","faRss","bannerJSON","banner","linkTarget","altText","imageName","fontawesome","PageHeader","marginTop","Sidebar","PageFooter","newObj","desc","_interopRequireWildcard","_addClass","_removeClass","_react","_Transition","addClass","removeClass","CSSTransition","subClass","superClass","onEnter","appearing","getClassNames","removeClasses","reflowAndAddClass","appearClassName","doneClassName","enterClassName","isStringClassNames","__proto__","_this$getClassNames6","scrollTop","_reactDom","_TransitionGroup","ReplaceTransition","_args","handleEnter","handleLifecycle","handleEntering","_len3","_key3","handleEntered","_len4","_key4","handleExit","_len5","_key5","handleExiting","_len6","_key6","handleExited","_len7","_key7","handler","idx","originalArgs","_child$props","Children","findDOMNode","inProp","_React$Children$toArr","cloneElement","EXITING","ENTERED","ENTERING","EXITED","UNMOUNTED","_reactLifecyclesCompat","_TransitionGroupContext","context","initialStatus","isMounting","appearStatus","unmountOnExit","mountOnEnter","nextCallback","getDerivedStateFromProps","componentDidMount","updateStatus","componentDidUpdate","prevProps","nextStatus","componentWillUnmount","cancelNextCallback","getTimeouts","mounting","performEnter","performExit","timeouts","enterTimeout","safeSetState","onTransitionEnd","_this3","cancel","nextState","setNextCallback","_this4","event","doesNotHaveTimeoutOrListener","addEndListener","Provider","only","contextType","_ChildMapping","_assertThisInitialized","self","ReferenceError","TransitionGroup","contextValue","firstRender","mounted","nextProps","prevChildMapping","getInitialChildMapping","getNextChildMapping","currentChildMapping","getChildMapping","component","childFactory","createContext","_CSSTransition","_ReplaceTransition","mergeChildMappings","getProp","nextChildMapping","isValidElement","hasPrev","hasNext","prevChild","isLeaving","mapFn","mapper","prev","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","classNamesShape","timeoutsShape","stringOrNumberProp","columnProps","order","lg","xl","widths","getColumnSizeClass","isXs","colWidth","colSize","colClasses","columnProp","colSizeInterfix","colClass","_colClass","fluid","containerClass","rowColsPropType","noGutters","form","globalCssModule","mapToCssModules","omit","omitKeys","pick","pickKeys","Element","propName","componentName","current","tagPropType","$$typeof","TransitionTimeouts","Fade","Modal","Carousel","TransitionPropTypeKeys","TransitionStatuses","isObject"],"sourceRoot":""} \ No newline at end of file diff --git a/commons-f537f61ffd60a999026d.js b/commons-f537f61ffd60a999026d.js deleted file mode 100644 index d82452f3d..000000000 --- a/commons-f537f61ffd60a999026d.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! For license information please see commons-f537f61ffd60a999026d.js.LICENSE.txt */ -(self.webpackChunkjug_goerlitz=self.webpackChunkjug_goerlitz||[]).push([[351],{8697:function(t,e,n){var a={"./35c3-congress-everywhere.png":8700,"./WJAX_2019_266x145.jpg":6724,"./banner_javaland_2023.jpg":4366,"./banner_jax_2023.jpg":9101,"./banner_jug_saxony_day_2022.png":9438,"./banner_wjax_2022.jpg":8337,"./entwickler_tutorials_logo.jpg":8799,"./grillen.jpg":4661,"./icon.png":9435,"./javaland_2019_banner.jpg":4652,"./javaland_2020_banner.jpg":8735,"./javaland_2022_banner.jpg":6365,"./javaland_2024_banner.jpg":2295,"./javaland_2024_banner_big.jpg":4059,"./jax19_banner.jpg":1974,"./jax20_banner.jpg":6846,"./jax21_banner.jpg":2713,"./jax22_banner.jpg":7425,"./jax_banner.png":6956,"./jdd_2022_banner.png":6331,"./jdd_2023_banner.jpg":8618,"./kickerking_logo.jpg":2607,"./lernfabrik.png":6462,"./logo.png":5921,"./mitp_logo.jpeg":2377,"./mitp_logo_gross.png":3087,"./persons/christian_kuemmel.jpg":2186,"./persons/christoph_menzel.png":9429,"./persons/damian_dudziec.png":4160,"./persons/daniel_fesenmeyer.jpg":2779,"./persons/daniel_sulyok.jpg":2258,"./persons/denny.israel.jpg":9880,"./persons/gerrit_grunwald.jpg":650,"./persons/gregor_trefs.png":3887,"./persons/hannes_kretschmer.jpg":8807,"./persons/hendrik_ebbers.png":7883,"./persons/jens_leuschner.jpg":6775,"./persons/joerg_laessig.jpg":9284,"./persons/lars_roewekamp.png":1266,"./persons/maik_wagner.jpg":6459,"./persons/manuel_mauky.jpg":3022,"./persons/marco_gotthans.png":1096,"./persons/mariusz_zienkiewicz.jpg":1226,"./persons/markus_kett.png":258,"./persons/markus_ullrich.jpg":9773,"./persons/markus_weiland.jpg":3545,"./persons/marlene_knoche.jpg":1905,"./persons/max_wielsch.jpg":8662,"./persons/michael_hunger.png":8294,"./persons/michael_simons.jpg":6371,"./persons/nico_foerster.jpg":3030,"./persons/oliver_drotbohm.png":6664,"./persons/patryk_lewandowski.jpg":6345,"./persons/pawel_adaszewski.jpg":7102,"./persons/roland_weisleder.jpg":369,"./persons/sergej_tihonov.jpg":3955,"./persons/simon_roloff.png":2947,"./persons/stefan_bley.jpg":3017,"./persons/stefan_zoerner.jpg":7489,"./persons/stefan_zoerner_2.jpg":5267,"./persons/stephan_strehler.jpg":1946,"./persons/sven_hoffmann.jpg":8576,"./persons/thilo_frotscher.jpg":1626,"./persons/uwe_manteuffel.jpg":4984,"./persons/wolfgang_weigend.jpg":4189,"./posters/plakat_2016_01.png":1941,"./posters/plakat_2016_03.png":2601,"./posters/plakat_2016_05.png":6337,"./posters/plakat_2016_09.png":6223,"./posters/plakat_2016_11.png":3895,"./posters/plakat_2017_01.png":7738,"./posters/plakat_2017_02.png":9474,"./posters/plakat_2017_03.png":6059,"./posters/plakat_2017_04.png":4076,"./posters/plakat_2017_05.png":4087,"./posters/plakat_2017_07.png":2195,"./posters/plakat_2017_10.png":7189,"./posters/plakat_2017_11.png":4092,"./posters/plakat_2018_01.png":1584,"./posters/plakat_2018_02.png":4466,"./posters/plakat_2018_03.png":1440,"./posters/plakat_2018_04.png":3211,"./posters/plakat_2018_05.png":9378,"./posters/plakat_2018_06.png":2757,"./posters/plakat_2018_09.png":4566,"./posters/plakat_2018_11.png":6686,"./posters/plakat_2019_01.png":4633,"./posters/plakat_2019_02.png":3019,"./posters/plakat_2019_03.png":4843,"./posters/plakat_2019_04.png":3792,"./posters/plakat_2019_05.png":9108,"./posters/plakat_2019_06.png":56,"./posters/plakat_2019_11.png":5172,"./posters/plakat_2020-01.png":6619,"./posters/plakat_2020_04.png":6328,"./posters/plakat_2020_07.png":3302,"./posters/plakat_2020_11.png":6436,"./posters/plakat_2021_01.png":6807,"./posters/plakat_2021_06.png":2318,"./posters/plakat_2022_06.png":4884,"./posters/plakat_2022_10.png":4832,"./posters/plakat_2022_11.png":5646,"./posters/plakat_2023_01.png":8325,"./posters/plakat_2023_02.png":1461,"./posters/plakat_2023_03.png":9750,"./posters/plakat_2023_04.png":7035,"./posters/plakat_2023_05.png":9907,"./posters/plakat_2023_06.png":509,"./posters/plakat_2023_09.png":5871,"./posters/plakat_2023_10.png":4881,"./posters/plakat_2023_11.png":2820,"./sands_logo.png":6702,"./saxsys_logo.jpg":3155,"./wjax21_banner.jpg":2753,"./zeiss-logo-rgb.png":2398};function r(t){var e=i(t);return n(e)}function i(t){if(!n.o(a,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return a[t]}r.keys=function(){return Object.keys(a)},r.resolve=i,t.exports=r,r.id=8697},7904:function(t,e,n){"use strict";var a=function(){},r={},i={},o=null,s={mark:a,measure:a};try{"undefined"!=typeof window&&(r=window),"undefined"!=typeof document&&(i=document),"undefined"!=typeof MutationObserver&&(o=MutationObserver),"undefined"!=typeof performance&&(s=performance)}catch($t){}var c=(r.navigator||{}).userAgent,l=void 0===c?"":c,f=r,u=i,d=o,p=s,m=!!f.document,g=!!u.documentElement&&!!u.head&&"function"==typeof u.addEventListener&&"function"==typeof u.createElement,b=~l.indexOf("MSIE")||~l.indexOf("Trident/"),v="svg-inline--fa",h="data-fa-i2svg",y="data-fa-pseudo-element",x=function(){try{return!0}catch($t){return!1}}(),k=[1,2,3,4,5,6,7,8,9,10],w=k.concat([11,12,13,14,15,16,17,18,19,20]),A=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],E=["xs","sm","lg","fw","ul","li","border","pull-left","pull-right","spin","pulse","rotate-90","rotate-180","rotate-270","flip-horizontal","flip-vertical","stack","stack-1x","stack-2x","inverse","layers","layers-text","layers-counter"].concat(k.map((function(t){return t+"x"}))).concat(w.map((function(t){return"w-"+t}))),O=function(){function t(t,e){for(var n=0;n<e.length;n++){var a=e[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,a.key,a)}}return function(e,n,a){return n&&t(e.prototype,n),a&&t(e,a),e}}(),j=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(t[a]=n[a])}return t},N=function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)},_=f.FontAwesomeConfig||{},C=Object.keys(_),S=j({familyPrefix:"fa",replacementClass:v,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0},_);S.autoReplaceSvg||(S.observeMutations=!1);var M=j({},S);function z(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.asNewDefault,a=void 0!==n&&n,r=Object.keys(M),i=a?function(t){return~r.indexOf(t)&&!~C.indexOf(t)}:function(t){return~r.indexOf(t)};Object.keys(t).forEach((function(e){i(e)&&(M[e]=t[e])}))}f.FontAwesomeConfig=M;var T=f||{};T.___FONT_AWESOME___||(T.___FONT_AWESOME___={}),T.___FONT_AWESOME___.styles||(T.___FONT_AWESOME___.styles={}),T.___FONT_AWESOME___.hooks||(T.___FONT_AWESOME___.hooks={}),T.___FONT_AWESOME___.shims||(T.___FONT_AWESOME___.shims=[]);var P=T.___FONT_AWESOME___,L=[],I=!1;g&&((I=(u.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(u.readyState))||u.addEventListener("DOMContentLoaded",(function t(){u.removeEventListener("DOMContentLoaded",t),I=1,L.map((function(t){return t()}))})));var R=16,F={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function K(t){if(t&&g){var e=u.createElement("style");e.setAttribute("type","text/css"),e.innerHTML=t;for(var n=u.head.childNodes,a=null,r=n.length-1;r>-1;r--){var i=n[r],o=(i.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(o)>-1&&(a=i)}return u.head.insertBefore(e,a),t}}var D=0;function B(){return++D}function Z(t){for(var e=[],n=(t||[]).length>>>0;n--;)e[n]=t[n];return e}function U(t){return t.classList?Z(t.classList):(t.getAttribute("class")||"").split(" ").filter((function(t){return t}))}function W(t,e){var n,a=e.split("-"),r=a[0],i=a.slice(1).join("-");return r!==t||""===i||(n=i,~E.indexOf(n))?null:i}function X(t){return(""+t).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">")}function V(t){return Object.keys(t||{}).reduce((function(e,n){return e+(n+": ")+t[n]+";"}),"")}function Y(t){return t.size!==F.size||t.x!==F.x||t.y!==F.y||t.rotate!==F.rotate||t.flipX||t.flipY}function H(t){var e=t.transform,n=t.containerWidth,a=t.iconWidth;return{outer:{transform:"translate("+n/2+" 256)"},inner:{transform:"translate("+32*e.x+", "+32*e.y+") "+" "+("scale("+e.size/16*(e.flipX?-1:1)+", "+e.size/16*(e.flipY?-1:1)+") ")+" "+("rotate("+e.rotate+" 0 0)")},path:{transform:"translate("+a/2*-1+" -256)"}}}var q={x:0,y:0,width:"100%",height:"100%"};function G(t){var e=t.icons,n=e.main,a=e.mask,r=t.prefix,i=t.iconName,o=t.transform,s=t.symbol,c=t.title,l=t.extra,f=t.watchable,u=void 0!==f&&f,d=a.found?a:n,p=d.width,m=d.height,g="fa-w-"+Math.ceil(p/m*16),b=[M.replacementClass,i?M.familyPrefix+"-"+i:"",g].concat(l.classes).join(" "),v={children:[],attributes:j({},l.attributes,{"data-prefix":r,"data-icon":i,class:b,role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 "+p+" "+m})};u&&(v.attributes[h]=""),c&&v.children.push({tag:"title",attributes:{id:v.attributes["aria-labelledby"]||"title-"+B()},children:[c]});var y=j({},v,{prefix:r,iconName:i,main:n,mask:a,transform:o,symbol:s,styles:l.styles}),x=a.found&&n.found?function(t){var e=t.children,n=t.attributes,a=t.main,r=t.mask,i=t.transform,o=a.width,s=a.icon,c=r.width,l=r.icon,f=H({transform:i,containerWidth:c,iconWidth:o}),u={tag:"rect",attributes:j({},q,{fill:"white"})},d={tag:"g",attributes:j({},f.inner),children:[{tag:"path",attributes:j({},s.attributes,f.path,{fill:"black"})}]},p={tag:"g",attributes:j({},f.outer),children:[d]},m="mask-"+B(),g="clip-"+B(),b={tag:"defs",children:[{tag:"clipPath",attributes:{id:g},children:[l]},{tag:"mask",attributes:j({},q,{id:m,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[u,p]}]};return e.push(b,{tag:"rect",attributes:j({fill:"currentColor","clip-path":"url(#"+g+")",mask:"url(#"+m+")"},q)}),{children:e,attributes:n}}(y):function(t){var e=t.children,n=t.attributes,a=t.main,r=t.transform,i=V(t.styles);if(i.length>0&&(n.style=i),Y(r)){var o=H({transform:r,containerWidth:a.width,iconWidth:a.width});e.push({tag:"g",attributes:j({},o.outer),children:[{tag:"g",attributes:j({},o.inner),children:[{tag:a.icon.tag,children:a.icon.children,attributes:j({},a.icon.attributes,o.path)}]}]})}else e.push(a.icon);return{children:e,attributes:n}}(y),k=x.children,w=x.attributes;return y.children=k,y.attributes=w,s?function(t){var e=t.prefix,n=t.iconName,a=t.children,r=t.attributes,i=t.symbol,o=!0===i?e+"-"+M.familyPrefix+"-"+n:i;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:j({},r,{id:o}),children:a}]}]}(y):function(t){var e=t.children,n=t.main,a=t.mask,r=t.attributes,i=t.styles,o=t.transform;if(Y(o)&&n.found&&!a.found){var s={x:n.width/n.height/2,y:.5};r.style=V(j({},i,{"transform-origin":s.x+o.x/16+"em "+(s.y+o.y/16)+"em"}))}return[{tag:"svg",attributes:r,children:e}]}(y)}function Q(t){var e=t.content,n=t.width,a=t.height,r=t.transform,i=t.title,o=t.extra,s=t.watchable,c=void 0!==s&&s,l=j({},o.attributes,i?{title:i}:{},{class:o.classes.join(" ")});c&&(l[h]="");var f=j({},o.styles);Y(r)&&(f.transform=function(t){var e=t.transform,n=t.width,a=void 0===n?16:n,r=t.height,i=void 0===r?16:r,o=t.startCentered,s=void 0!==o&&o,c="";return c+=s&&b?"translate("+(e.x/R-a/2)+"em, "+(e.y/R-i/2)+"em) ":s?"translate(calc(-50% + "+e.x/R+"em), calc(-50% + "+e.y/R+"em)) ":"translate("+e.x/R+"em, "+e.y/R+"em) ",c+="scale("+e.size/R*(e.flipX?-1:1)+", "+e.size/R*(e.flipY?-1:1)+") ",c+"rotate("+e.rotate+"deg) "}({transform:r,startCentered:!0,width:n,height:a}),f["-webkit-transform"]=f.transform);var u=V(f);u.length>0&&(l.style=u);var d=[];return d.push({tag:"span",attributes:l,children:[e]}),i&&d.push({tag:"span",attributes:{class:"sr-only"},children:[i]}),d}var J=function(){},$=M.measurePerformance&&p&&p.mark&&p.measure?p:{mark:J,measure:J},tt='FA "5.0.13"',et=function(t){$.mark(tt+" "+t+" ends"),$.measure(tt+" "+t,tt+" "+t+" begins",tt+" "+t+" ends")},nt=function(t){return $.mark(tt+" "+t+" begins"),function(){return et(t)}},at=function(t,e,n,a){var r,i,o,s=Object.keys(t),c=s.length,l=void 0!==a?function(t,e){return function(n,a,r,i){return t.call(e,n,a,r,i)}}(e,a):e;for(void 0===n?(r=1,o=t[s[0]]):(r=0,o=n);r<c;r++)o=l(o,t[i=s[r]],i,t);return o},rt=P.styles,it=P.shims,ot={},st={},ct={},lt=function(){var t=function(t){return at(rt,(function(e,n,a){return e[a]=at(n,t,{}),e}),{})};ot=t((function(t,e,n){return t[e[3]]=n,t})),st=t((function(t,e,n){var a=e[2];return t[n]=n,a.forEach((function(e){t[e]=n})),t}));var e="far"in rt;ct=at(it,(function(t,n){var a=n[0],r=n[1],i=n[2];return"far"!==r||e||(r="fas"),t[a]={prefix:r,iconName:i},t}),{})};lt();var ft=P.styles;function ut(t){return t.reduce((function(t,e){var n=W(M.familyPrefix,e);if(ft[e])t.prefix=e;else if(n){var a="fa"===t.prefix?ct[n]||{prefix:null,iconName:null}:{};t.iconName=a.iconName||n,t.prefix=a.prefix||t.prefix}else e!==M.replacementClass&&0!==e.indexOf("fa-w-")&&t.rest.push(e);return t}),{prefix:null,iconName:null,rest:[]})}function dt(t,e,n){if(t&&t[e]&&t[e][n])return{prefix:e,iconName:n,icon:t[e][n]}}function pt(t){var e=t.tag,n=t.attributes,a=void 0===n?{}:n,r=t.children,i=void 0===r?[]:r;return"string"==typeof t?X(t):"<"+e+" "+function(t){return Object.keys(t||{}).reduce((function(e,n){return e+(n+'="')+X(t[n])+'" '}),"").trim()}(a)+">"+i.map(pt).join("")+"</"+e+">"}var mt=function(){};function gt(t){return"string"==typeof(t.getAttribute?t.getAttribute(h):null)}var bt={replace:function(t){var e=t[0],n=t[1].map((function(t){return pt(t)})).join("\n");if(e.parentNode&&e.outerHTML)e.outerHTML=n+(M.keepOriginalSource&&"svg"!==e.tagName.toLowerCase()?"\x3c!-- "+e.outerHTML+" --\x3e":"");else if(e.parentNode){var a=document.createElement("span");e.parentNode.replaceChild(a,e),a.outerHTML=n}},nest:function(t){var e=t[0],n=t[1];if(~U(e).indexOf(M.replacementClass))return bt.replace(t);var a=new RegExp(M.familyPrefix+"-.*");delete n[0].attributes.style;var r=n[0].attributes.class.split(" ").reduce((function(t,e){return e===M.replacementClass||e.match(a)?t.toSvg.push(e):t.toNode.push(e),t}),{toNode:[],toSvg:[]});n[0].attributes.class=r.toSvg.join(" ");var i=n.map((function(t){return pt(t)})).join("\n");e.setAttribute("class",r.toNode.join(" ")),e.setAttribute(h,""),e.innerHTML=i}};function vt(t,e){var n="function"==typeof e?e:mt;0===t.length?n():(f.requestAnimationFrame||function(t){return t()})((function(){var e=!0===M.autoReplaceSvg?bt.replace:bt[M.autoReplaceSvg]||bt.replace,a=nt("mutate");t.map(e),a(),n()}))}var ht=!1;var yt=null;var xt=function(t){var e,n,a=t.getAttribute("data-prefix"),r=t.getAttribute("data-icon"),i=void 0!==t.innerText?t.innerText.trim():"",o=ut(U(t));return a&&r&&(o.prefix=a,o.iconName=r),o.prefix&&i.length>1?o.iconName=(e=o.prefix,n=t.innerText,st[e][n]):o.prefix&&1===i.length&&(o.iconName=function(t,e){return ot[t][e]}(o.prefix,function(t){for(var e="",n=0;n<t.length;n++)e+=("000"+t.charCodeAt(n).toString(16)).slice(-4);return e}(t.innerText))),o},kt=function(t){var e={size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0};return t?t.toLowerCase().split(" ").reduce((function(t,e){var n=e.toLowerCase().split("-"),a=n[0],r=n.slice(1).join("-");if(a&&"h"===r)return t.flipX=!0,t;if(a&&"v"===r)return t.flipY=!0,t;if(r=parseFloat(r),isNaN(r))return t;switch(a){case"grow":t.size=t.size+r;break;case"shrink":t.size=t.size-r;break;case"left":t.x=t.x-r;break;case"right":t.x=t.x+r;break;case"up":t.y=t.y-r;break;case"down":t.y=t.y+r;break;case"rotate":t.rotate=t.rotate+r}return t}),e):e};function wt(t){var e=xt(t),n=e.iconName,a=e.prefix,r=e.rest,i=function(t){var e=t.getAttribute("style"),n=[];return e&&(n=e.split(";").reduce((function(t,e){var n=e.split(":"),a=n[0],r=n.slice(1);return a&&r.length>0&&(t[a]=r.join(":").trim()),t}),{})),n}(t),o=function(t){return kt(t.getAttribute("data-fa-transform"))}(t),s=function(t){var e=t.getAttribute("data-fa-symbol");return null!==e&&(""===e||e)}(t),c=function(t){var e=Z(t.attributes).reduce((function(t,e){return"class"!==t.name&&"style"!==t.name&&(t[e.name]=e.value),t}),{}),n=t.getAttribute("title");return M.autoA11y&&(n?e["aria-labelledby"]=M.replacementClass+"-title-"+B():e["aria-hidden"]="true"),e}(t),l=function(t){var e=t.getAttribute("data-fa-mask");return e?ut(e.split(" ").map((function(t){return t.trim()}))):{prefix:null,iconName:null,rest:[]}}(t);return{iconName:n,title:t.getAttribute("title"),prefix:a,transform:o,symbol:s,mask:l,extra:{classes:r,styles:i,attributes:c}}}function At(t){this.name="MissingIcon",this.message=t||"Icon unavailable",this.stack=(new Error).stack}At.prototype=Object.create(Error.prototype),At.prototype.constructor=At;var Et={fill:"currentColor"},Ot={attributeType:"XML",repeatCount:"indefinite",dur:"2s"},jt={tag:"path",attributes:j({},Et,{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})},Nt=j({},Ot,{attributeName:"opacity"}),_t={tag:"g",children:[jt,{tag:"circle",attributes:j({},Et,{cx:"256",cy:"364",r:"28"}),children:[{tag:"animate",attributes:j({},Ot,{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:j({},Nt,{values:"1;0;1;1;0;1;"})}]},{tag:"path",attributes:j({},Et,{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:[{tag:"animate",attributes:j({},Nt,{values:"1;0;0;0;0;1;"})}]},{tag:"path",attributes:j({},Et,{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:j({},Nt,{values:"0;0;1;1;0;0;"})}]}]},Ct=P.styles,St="fa-layers-text",Mt=/Font Awesome 5 (Solid|Regular|Light|Brands)/,zt={Solid:"fas",Regular:"far",Light:"fal",Brands:"fab"};function Tt(t,e){var n={found:!1,width:512,height:512,icon:_t};if(t&&e&&Ct[e]&&Ct[e][t]){var a=Ct[e][t];n={found:!0,width:a[0],height:a[1],icon:{tag:"path",attributes:{fill:"currentColor",d:a.slice(4)[0]}}}}else if(t&&e&&!M.showMissingIcons)throw new At("Icon is missing for prefix "+e+" with icon name "+t);return n}function Pt(t){var e=wt(t);return~e.extra.classes.indexOf(St)?function(t,e){var n=e.title,a=e.transform,r=e.extra,i=null,o=null;if(b){var s=parseInt(getComputedStyle(t).fontSize,10),c=t.getBoundingClientRect();i=c.width/s,o=c.height/s}return M.autoA11y&&!n&&(r.attributes["aria-hidden"]="true"),[t,Q({content:t.innerHTML,width:i,height:o,transform:a,title:n,extra:r,watchable:!0})]}(t,e):function(t,e){var n=e.iconName,a=e.title,r=e.prefix,i=e.transform,o=e.symbol,s=e.mask,c=e.extra;return[t,G({icons:{main:Tt(n,r),mask:Tt(s.iconName,s.prefix)},prefix:r,iconName:n,transform:i,symbol:o,mask:s,title:a,extra:c,watchable:!0})]}(t,e)}function Lt(t){"function"==typeof t.remove?t.remove():t&&t.parentNode&&t.parentNode.removeChild(t)}function It(t){if(g){var e,n=nt("searchPseudoElements");e=function(){Z(t.querySelectorAll("*")).forEach((function(t){[":before",":after"].forEach((function(e){var n=f.getComputedStyle(t,e),a=n.getPropertyValue("font-family").match(Mt),r=Z(t.children).filter((function(t){return t.getAttribute(y)===e}))[0];if(r&&(r.nextSibling&&r.nextSibling.textContent.indexOf(y)>-1&&Lt(r.nextSibling),Lt(r),r=null),a&&!r){var i=n.getPropertyValue("content"),o=u.createElement("i");o.setAttribute("class",""+zt[a[1]]),o.setAttribute(y,e),o.innerText=3===i.length?i.substr(1,1):i,":before"===e?t.insertBefore(o,t.firstChild):t.appendChild(o)}}))}))},ht=!0,e(),ht=!1,n()}}function Rt(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(g){var n=u.documentElement.classList,a=function(t){return n.add("fontawesome-i2svg-"+t)},r=function(t){return n.remove("fontawesome-i2svg-"+t)},i=Object.keys(Ct),o=[".fa-layers-text:not([data-fa-i2svg])"].concat(i.map((function(t){return"."+t+":not(["+"data-fa-i2svg])"}))).join(", ");if(0!==o.length){var s=Z(t.querySelectorAll(o));if(s.length>0){a("pending"),r("complete");var c=nt("onTree"),l=s.reduce((function(t,e){try{var n=Pt(e);n&&t.push(n)}catch($t){x||$t instanceof At&&console.error($t)}return t}),[]);c(),vt(l,(function(){a("active"),a("complete"),r("pending"),"function"==typeof e&&e()}))}}}}function Ft(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=Pt(t);n&&vt([n],e)}var Kt=function(){var t=v,e=M.familyPrefix,n=M.replacementClass,a='svg:not(:root).svg-inline--fa {\n overflow: visible; }\n\n.svg-inline--fa {\n display: inline-block;\n font-size: inherit;\n height: 1em;\n overflow: visible;\n vertical-align: -.125em; }\n .svg-inline--fa.fa-lg {\n vertical-align: -.225em; }\n .svg-inline--fa.fa-w-1 {\n width: 0.0625em; }\n .svg-inline--fa.fa-w-2 {\n width: 0.125em; }\n .svg-inline--fa.fa-w-3 {\n width: 0.1875em; }\n .svg-inline--fa.fa-w-4 {\n width: 0.25em; }\n .svg-inline--fa.fa-w-5 {\n width: 0.3125em; }\n .svg-inline--fa.fa-w-6 {\n width: 0.375em; }\n .svg-inline--fa.fa-w-7 {\n width: 0.4375em; }\n .svg-inline--fa.fa-w-8 {\n width: 0.5em; }\n .svg-inline--fa.fa-w-9 {\n width: 0.5625em; }\n .svg-inline--fa.fa-w-10 {\n width: 0.625em; }\n .svg-inline--fa.fa-w-11 {\n width: 0.6875em; }\n .svg-inline--fa.fa-w-12 {\n width: 0.75em; }\n .svg-inline--fa.fa-w-13 {\n width: 0.8125em; }\n .svg-inline--fa.fa-w-14 {\n width: 0.875em; }\n .svg-inline--fa.fa-w-15 {\n width: 0.9375em; }\n .svg-inline--fa.fa-w-16 {\n width: 1em; }\n .svg-inline--fa.fa-w-17 {\n width: 1.0625em; }\n .svg-inline--fa.fa-w-18 {\n width: 1.125em; }\n .svg-inline--fa.fa-w-19 {\n width: 1.1875em; }\n .svg-inline--fa.fa-w-20 {\n width: 1.25em; }\n .svg-inline--fa.fa-pull-left {\n margin-right: .3em;\n width: auto; }\n .svg-inline--fa.fa-pull-right {\n margin-left: .3em;\n width: auto; }\n .svg-inline--fa.fa-border {\n height: 1.5em; }\n .svg-inline--fa.fa-li {\n width: 2em; }\n .svg-inline--fa.fa-fw {\n width: 1.25em; }\n\n.fa-layers svg.svg-inline--fa {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0; }\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -.125em;\n width: 1em; }\n .fa-layers svg.svg-inline--fa {\n -webkit-transform-origin: center center;\n transform-origin: center center; }\n\n.fa-layers-text, .fa-layers-counter {\n display: inline-block;\n position: absolute;\n text-align: center; }\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transform-origin: center center;\n transform-origin: center center; }\n\n.fa-layers-counter {\n background-color: #ff253a;\n border-radius: 1em;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n color: #fff;\n height: 1.5em;\n line-height: 1;\n max-width: 5em;\n min-width: 1.5em;\n overflow: hidden;\n padding: .25em;\n right: 0;\n text-overflow: ellipsis;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right; }\n\n.fa-layers-bottom-right {\n bottom: 0;\n right: 0;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom right;\n transform-origin: bottom right; }\n\n.fa-layers-bottom-left {\n bottom: 0;\n left: 0;\n right: auto;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom left;\n transform-origin: bottom left; }\n\n.fa-layers-top-right {\n right: 0;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right; }\n\n.fa-layers-top-left {\n left: 0;\n right: auto;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top left;\n transform-origin: top left; }\n\n.fa-lg {\n font-size: 1.33333em;\n line-height: 0.75em;\n vertical-align: -.0667em; }\n\n.fa-xs {\n font-size: .75em; }\n\n.fa-sm {\n font-size: .875em; }\n\n.fa-1x {\n font-size: 1em; }\n\n.fa-2x {\n font-size: 2em; }\n\n.fa-3x {\n font-size: 3em; }\n\n.fa-4x {\n font-size: 4em; }\n\n.fa-5x {\n font-size: 5em; }\n\n.fa-6x {\n font-size: 6em; }\n\n.fa-7x {\n font-size: 7em; }\n\n.fa-8x {\n font-size: 8em; }\n\n.fa-9x {\n font-size: 9em; }\n\n.fa-10x {\n font-size: 10em; }\n\n.fa-fw {\n text-align: center;\n width: 1.25em; }\n\n.fa-ul {\n list-style-type: none;\n margin-left: 2.5em;\n padding-left: 0; }\n .fa-ul > li {\n position: relative; }\n\n.fa-li {\n left: -2em;\n position: absolute;\n text-align: center;\n width: 2em;\n line-height: inherit; }\n\n.fa-border {\n border: solid 0.08em #eee;\n border-radius: .1em;\n padding: .2em .25em .15em; }\n\n.fa-pull-left {\n float: left; }\n\n.fa-pull-right {\n float: right; }\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n margin-right: .3em; }\n\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n margin-left: .3em; }\n\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear; }\n\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8); }\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg); }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg); } }\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg); }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg); } }\n\n.fa-rotate-90 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg); }\n\n.fa-rotate-180 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg); }\n\n.fa-rotate-270 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg); }\n\n.fa-flip-horizontal {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1); }\n\n.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1); }\n\n.fa-flip-horizontal.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1); }\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical {\n -webkit-filter: none;\n filter: none; }\n\n.fa-stack {\n display: inline-block;\n height: 2em;\n position: relative;\n width: 2em; }\n\n.fa-stack-1x,\n.fa-stack-2x {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0; }\n\n.svg-inline--fa.fa-stack-1x {\n height: 1em;\n width: 1em; }\n\n.svg-inline--fa.fa-stack-2x {\n height: 2em;\n width: 2em; }\n\n.fa-inverse {\n color: #fff; }\n\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px; }\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n clip: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n position: static;\n width: auto; }\n';if("fa"!==e||n!==t){var r=new RegExp("\\.fa\\-","g"),i=new RegExp("\\."+t,"g");a=a.replace(r,"."+e+"-").replace(i,"."+n)}return a};function Dt(t,e){var n=Object.keys(e).reduce((function(t,n){var a=e[n];return!!a.icon?t[a.iconName]=a.icon:t[n]=a,t}),{});"function"==typeof P.hooks.addPack?P.hooks.addPack(t,n):P.styles[t]=j({},P.styles[t]||{},n),"fas"===t&&Dt("fa",e)}var Bt=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.definitions={}}return O(t,[{key:"add",value:function(){for(var t=this,e=arguments.length,n=Array(e),a=0;a<e;a++)n[a]=arguments[a];var r=n.reduce(this._pullDefinitions,{});Object.keys(r).forEach((function(e){t.definitions[e]=j({},t.definitions[e]||{},r[e]),Dt(e,r[e])}))}},{key:"reset",value:function(){this.definitions={}}},{key:"_pullDefinitions",value:function(t,e){var n=e.prefix&&e.iconName&&e.icon?{0:e}:e;return Object.keys(n).map((function(e){var a=n[e],r=a.prefix,i=a.iconName,o=a.icon;t[r]||(t[r]={}),t[r][i]=o})),t}}]),t}();function Zt(t){return{found:!0,width:t[0],height:t[1],icon:{tag:"path",attributes:{fill:"currentColor",d:t.slice(4)[0]}}}}var Ut=!1;function Wt(){M.autoAddCss&&(Ut||K(Kt()),Ut=!0)}function Xt(t,e){return Object.defineProperty(t,"abstract",{get:e}),Object.defineProperty(t,"html",{get:function(){return t.abstract.map((function(t){return pt(t)}))}}),Object.defineProperty(t,"node",{get:function(){if(g){var e=u.createElement("div");return e.innerHTML=t.html,e.children}}}),t}function Vt(t){var e=t.prefix,n=void 0===e?"fa":e,a=t.iconName;if(a)return dt(Ht.definitions,n,a)||dt(P.styles,n,a)}var Yt,Ht=new Bt,qt={i2svg:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(g){Wt();var e=t.node,n=void 0===e?u:e,a=t.callback,r=void 0===a?function(){}:a;M.searchPseudoElements&&It(n),Rt(n,r)}},css:Kt,insertCss:function(){K(Kt())}},Gt=(Yt=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.transform,a=void 0===n?F:n,r=e.symbol,i=void 0!==r&&r,o=e.mask,s=void 0===o?null:o,c=e.title,l=void 0===c?null:c,f=e.classes,u=void 0===f?[]:f,d=e.attributes,p=void 0===d?{}:d,m=e.styles,g=void 0===m?{}:m;if(t){var b=t.prefix,v=t.iconName,h=t.icon;return Xt(j({type:"icon"},t),(function(){return Wt(),M.autoA11y&&(l?p["aria-labelledby"]=M.replacementClass+"-title-"+B():p["aria-hidden"]="true"),G({icons:{main:Zt(h),mask:s?Zt(s.icon):{found:!1,width:null,height:null,icon:{}}},prefix:b,iconName:v,transform:j({},F,a),symbol:i,title:l,extra:{attributes:p,styles:g,classes:u}})}))}},function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=(t||{}).icon?t:Vt(t||{}),a=e.mask;return a&&(a=(a||{}).icon?a:Vt(a||{})),Yt(n,j({},e,{mask:a}))}),Qt={noAuto:function(){var t;z({autoReplaceSvg:t=!1,observeMutations:t}),yt&&yt.disconnect()},dom:qt,library:Ht,parse:{transform:function(t){return kt(t)}},findIconDefinition:Vt,icon:Gt,text:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.transform,a=void 0===n?F:n,r=e.title,i=void 0===r?null:r,o=e.classes,s=void 0===o?[]:o,c=e.attributes,l=void 0===c?{}:c,f=e.styles,u=void 0===f?{}:f;return Xt({type:"text",content:t},(function(){return Wt(),Q({content:t,transform:j({},F,a),title:i,extra:{attributes:l,styles:u,classes:[M.familyPrefix+"-layers-text"].concat(N(s))}})}))},layer:function(t){return Xt({type:"layer"},(function(){Wt();var e=[];return t((function(t){Array.isArray(t)?t.map((function(t){e=e.concat(t.abstract)})):e=e.concat(t.abstract)})),[{tag:"span",attributes:{class:M.familyPrefix+"-layers"},children:e}]}))}},Jt=function(){g&&M.autoReplaceSvg&&Qt.dom.i2svg({node:u})};Object.defineProperty(Qt,"config",{get:function(){return M},set:function(t){z(t)}}),g&&function(t){try{t()}catch($t){if(!x)throw $t}}((function(){var t;m&&(f.FontAwesome||(f.FontAwesome=Qt),t=function(){Object.keys(P.styles).length>0&&Jt(),M.observeMutations&&"function"==typeof MutationObserver&&function(t){if(d){var e=t.treeCallback,n=t.nodeCallback,a=t.pseudoElementsCallback;yt=new d((function(t){ht||Z(t).forEach((function(t){if("childList"===t.type&&t.addedNodes.length>0&&!gt(t.addedNodes[0])&&(M.searchPseudoElements&&a(t.target),e(t.target)),"attributes"===t.type&&t.target.parentNode&&M.searchPseudoElements&&a(t.target.parentNode),"attributes"===t.type&>(t.target)&&~A.indexOf(t.attributeName))if("class"===t.attributeName){var r=ut(U(t.target)),i=r.prefix,o=r.iconName;i&&t.target.setAttribute("data-prefix",i),o&&t.target.setAttribute("data-icon",o)}else n(t.target)}))})),g&&yt.observe(u.getElementsByTagName("body")[0],{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}({treeCallback:Rt,nodeCallback:Ft,pseudoElementsCallback:It})},g&&(I?setTimeout(t,0):L.push(t))),P.hooks=j({},P.hooks,{addPack:function(t,e){P.styles[t]=j({},P.styles[t]||{},e),lt(),Jt()},addShims:function(t){var e;(e=P.shims).push.apply(e,N(t)),lt(),Jt()}})}));e.ZP=Qt},982:function(t,e,n){"use strict";function a(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function r(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?a(Object(n),!0).forEach((function(e){s(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function o(t,e){for(var n=0;n<e.length;n++){var a=e[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,a.key,a)}}function s(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function c(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null==n)return;var a,r,i=[],o=!0,s=!1;try{for(n=n.call(t);!(o=(a=n.next()).done)&&(i.push(a.value),!e||i.length!==e);o=!0);}catch(c){s=!0,r=c}finally{try{o||null==n.return||n.return()}finally{if(s)throw r}}return i}(t,e)||f(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(t){return function(t){if(Array.isArray(t))return u(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||f(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function f(t,e){if(t){if("string"==typeof t)return u(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(t,e):void 0}}function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,a=new Array(e);n<e;n++)a[n]=t[n];return a}n.d(e,{G:function(){return Tn}});var d=function(){},p={},m={},g=null,b={mark:d,measure:d};try{"undefined"!=typeof window&&(p=window),"undefined"!=typeof document&&(m=document),"undefined"!=typeof MutationObserver&&(g=MutationObserver),"undefined"!=typeof performance&&(b=performance)}catch(Ln){}var v,h,y,x,k,w=(p.navigator||{}).userAgent,A=void 0===w?"":w,E=p,O=m,j=g,N=b,_=(E.document,!!O.documentElement&&!!O.head&&"function"==typeof O.addEventListener&&"function"==typeof O.createElement),C=~A.indexOf("MSIE")||~A.indexOf("Trident/"),S="svg-inline--fa",M="data-fa-i2svg",z="data-fa-pseudo-element",T="data-prefix",P="data-icon",L="fontawesome-i2svg",I=["HTML","HEAD","STYLE","SCRIPT"],R=function(){try{return!0}catch(Ln){return!1}}(),F="classic",K="sharp",D=[F,K];function B(t){return new Proxy(t,{get:function(t,e){return e in t?t[e]:t.classic}})}var Z=B((s(v={},F,{fa:"solid",fas:"solid","fa-solid":"solid",far:"regular","fa-regular":"regular",fal:"light","fa-light":"light",fat:"thin","fa-thin":"thin",fad:"duotone","fa-duotone":"duotone",fab:"brands","fa-brands":"brands",fak:"kit","fa-kit":"kit"}),s(v,K,{fa:"solid",fass:"solid","fa-solid":"solid"}),v)),U=B((s(h={},F,{solid:"fas",regular:"far",light:"fal",thin:"fat",duotone:"fad",brands:"fab",kit:"fak"}),s(h,K,{solid:"fass"}),h)),W=B((s(y={},F,{fab:"fa-brands",fad:"fa-duotone",fak:"fa-kit",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"}),s(y,K,{fass:"fa-solid"}),y)),X=B((s(x={},F,{"fa-brands":"fab","fa-duotone":"fad","fa-kit":"fak","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"}),s(x,K,{"fa-solid":"fass"}),x)),V=/fa(s|r|l|t|d|b|k|ss)?[\-\ ]/,Y="fa-layers-text",H=/Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp|Kit)?.*/i,q=B((s(k={},F,{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"}),s(k,K,{900:"fass"}),k)),G=[1,2,3,4,5,6,7,8,9,10],Q=G.concat([11,12,13,14,15,16,17,18,19,20]),J=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],$="duotone-group",tt="swap-opacity",et="primary",nt="secondary",at=new Set;Object.keys(U.classic).map(at.add.bind(at)),Object.keys(U.sharp).map(at.add.bind(at));var rt=[].concat(D,l(at),["2xs","xs","sm","lg","xl","2xl","beat","border","fade","beat-fade","bounce","flip-both","flip-horizontal","flip-vertical","flip","fw","inverse","layers-counter","layers-text","layers","li","pull-left","pull-right","pulse","rotate-180","rotate-270","rotate-90","rotate-by","shake","spin-pulse","spin-reverse","spin","stack-1x","stack-2x","stack","ul",$,tt,et,nt]).concat(G.map((function(t){return"".concat(t,"x")}))).concat(Q.map((function(t){return"w-".concat(t)}))),it=E.FontAwesomeConfig||{};if(O&&"function"==typeof O.querySelector){[["data-family-prefix","familyPrefix"],["data-css-prefix","cssPrefix"],["data-family-default","familyDefault"],["data-style-default","styleDefault"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]].forEach((function(t){var e=c(t,2),n=e[0],a=e[1],r=function(t){return""===t||"false"!==t&&("true"===t||t)}(function(t){var e=O.querySelector("script["+t+"]");if(e)return e.getAttribute(t)}(n));null!=r&&(it[a]=r)}))}var ot={styleDefault:"solid",familyDefault:"classic",cssPrefix:"fa",replacementClass:S,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0};it.familyPrefix&&(it.cssPrefix=it.familyPrefix);var st=r(r({},ot),it);st.autoReplaceSvg||(st.observeMutations=!1);var ct={};Object.keys(ot).forEach((function(t){Object.defineProperty(ct,t,{enumerable:!0,set:function(e){st[t]=e,lt.forEach((function(t){return t(ct)}))},get:function(){return st[t]}})})),Object.defineProperty(ct,"familyPrefix",{enumerable:!0,set:function(t){st.cssPrefix=t,lt.forEach((function(t){return t(ct)}))},get:function(){return st.cssPrefix}}),E.FontAwesomeConfig=ct;var lt=[];var ft=16,ut={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function dt(){for(var t=12,e="";t-- >0;)e+="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[62*Math.random()|0];return e}function pt(t){for(var e=[],n=(t||[]).length>>>0;n--;)e[n]=t[n];return e}function mt(t){return t.classList?pt(t.classList):(t.getAttribute("class")||"").split(" ").filter((function(t){return t}))}function gt(t){return"".concat(t).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">")}function bt(t){return Object.keys(t||{}).reduce((function(e,n){return e+"".concat(n,": ").concat(t[n].trim(),";")}),"")}function vt(t){return t.size!==ut.size||t.x!==ut.x||t.y!==ut.y||t.rotate!==ut.rotate||t.flipX||t.flipY}function ht(){var t="fa",e=S,n=ct.cssPrefix,a=ct.replacementClass,r=':root, :host {\n --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Solid";\n --fa-font-regular: normal 400 1em/1 "Font Awesome 6 Regular";\n --fa-font-light: normal 300 1em/1 "Font Awesome 6 Light";\n --fa-font-thin: normal 100 1em/1 "Font Awesome 6 Thin";\n --fa-font-duotone: normal 900 1em/1 "Font Awesome 6 Duotone";\n --fa-font-sharp-solid: normal 900 1em/1 "Font Awesome 6 Sharp";\n --fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands";\n}\n\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\n overflow: visible;\n box-sizing: content-box;\n}\n\n.svg-inline--fa {\n display: var(--fa-display, inline-block);\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n}\n.svg-inline--fa.fa-2xs {\n vertical-align: 0.1em;\n}\n.svg-inline--fa.fa-xs {\n vertical-align: 0em;\n}\n.svg-inline--fa.fa-sm {\n vertical-align: -0.0714285705em;\n}\n.svg-inline--fa.fa-lg {\n vertical-align: -0.2em;\n}\n.svg-inline--fa.fa-xl {\n vertical-align: -0.25em;\n}\n.svg-inline--fa.fa-2xl {\n vertical-align: -0.3125em;\n}\n.svg-inline--fa.fa-pull-left {\n margin-right: var(--fa-pull-margin, 0.3em);\n width: auto;\n}\n.svg-inline--fa.fa-pull-right {\n margin-left: var(--fa-pull-margin, 0.3em);\n width: auto;\n}\n.svg-inline--fa.fa-li {\n width: var(--fa-li-width, 2em);\n top: 0.25em;\n}\n.svg-inline--fa.fa-fw {\n width: var(--fa-fw-width, 1.25em);\n}\n\n.fa-layers svg.svg-inline--fa {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.fa-layers-counter, .fa-layers-text {\n display: inline-block;\n position: absolute;\n text-align: center;\n}\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -0.125em;\n width: 1em;\n}\n.fa-layers svg.svg-inline--fa {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter {\n background-color: var(--fa-counter-background-color, #ff253a);\n border-radius: var(--fa-counter-border-radius, 1em);\n box-sizing: border-box;\n color: var(--fa-inverse, #fff);\n line-height: var(--fa-counter-line-height, 1);\n max-width: var(--fa-counter-max-width, 5em);\n min-width: var(--fa-counter-min-width, 1.5em);\n overflow: hidden;\n padding: var(--fa-counter-padding, 0.25em 0.5em);\n right: var(--fa-right, 0);\n text-overflow: ellipsis;\n top: var(--fa-top, 0);\n -webkit-transform: scale(var(--fa-counter-scale, 0.25));\n transform: scale(var(--fa-counter-scale, 0.25));\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n bottom: var(--fa-bottom, 0);\n right: var(--fa-right, 0);\n top: auto;\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: bottom right;\n transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n bottom: var(--fa-bottom, 0);\n left: var(--fa-left, 0);\n right: auto;\n top: auto;\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: bottom left;\n transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n top: var(--fa-top, 0);\n right: var(--fa-right, 0);\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-top-left {\n left: var(--fa-left, 0);\n right: auto;\n top: var(--fa-top, 0);\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: top left;\n transform-origin: top left;\n}\n\n.fa-1x {\n font-size: 1em;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-6x {\n font-size: 6em;\n}\n\n.fa-7x {\n font-size: 7em;\n}\n\n.fa-8x {\n font-size: 8em;\n}\n\n.fa-9x {\n font-size: 9em;\n}\n\n.fa-10x {\n font-size: 10em;\n}\n\n.fa-2xs {\n font-size: 0.625em;\n line-height: 0.1em;\n vertical-align: 0.225em;\n}\n\n.fa-xs {\n font-size: 0.75em;\n line-height: 0.0833333337em;\n vertical-align: 0.125em;\n}\n\n.fa-sm {\n font-size: 0.875em;\n line-height: 0.0714285718em;\n vertical-align: 0.0535714295em;\n}\n\n.fa-lg {\n font-size: 1.25em;\n line-height: 0.05em;\n vertical-align: -0.075em;\n}\n\n.fa-xl {\n font-size: 1.5em;\n line-height: 0.0416666682em;\n vertical-align: -0.125em;\n}\n\n.fa-2xl {\n font-size: 2em;\n line-height: 0.03125em;\n vertical-align: -0.1875em;\n}\n\n.fa-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.fa-ul {\n list-style-type: none;\n margin-left: var(--fa-li-margin, 2.5em);\n padding-left: 0;\n}\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n left: calc(var(--fa-li-width, 2em) * -1);\n position: absolute;\n text-align: center;\n width: var(--fa-li-width, 2em);\n line-height: inherit;\n}\n\n.fa-border {\n border-color: var(--fa-border-color, #eee);\n border-radius: var(--fa-border-radius, 0.1em);\n border-style: var(--fa-border-style, solid);\n border-width: var(--fa-border-width, 0.08em);\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\n}\n\n.fa-pull-left {\n float: left;\n margin-right: var(--fa-pull-margin, 0.3em);\n}\n\n.fa-pull-right {\n float: right;\n margin-left: var(--fa-pull-margin, 0.3em);\n}\n\n.fa-beat {\n -webkit-animation-name: fa-beat;\n animation-name: fa-beat;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\n}\n\n.fa-bounce {\n -webkit-animation-name: fa-bounce;\n animation-name: fa-bounce;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\n}\n\n.fa-fade {\n -webkit-animation-name: fa-fade;\n animation-name: fa-fade;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n}\n\n.fa-beat-fade {\n -webkit-animation-name: fa-beat-fade;\n animation-name: fa-beat-fade;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n}\n\n.fa-flip {\n -webkit-animation-name: fa-flip;\n animation-name: fa-flip;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\n}\n\n.fa-shake {\n -webkit-animation-name: fa-shake;\n animation-name: fa-shake;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\n animation-timing-function: var(--fa-animation-timing, linear);\n}\n\n.fa-spin {\n -webkit-animation-name: fa-spin;\n animation-name: fa-spin;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 2s);\n animation-duration: var(--fa-animation-duration, 2s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\n animation-timing-function: var(--fa-animation-timing, linear);\n}\n\n.fa-spin-reverse {\n --fa-animation-direction: reverse;\n}\n\n.fa-pulse,\n.fa-spin-pulse {\n -webkit-animation-name: fa-spin;\n animation-name: fa-spin;\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));\n animation-timing-function: var(--fa-animation-timing, steps(8));\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fa-beat,\n.fa-bounce,\n.fa-fade,\n.fa-beat-fade,\n.fa-flip,\n.fa-pulse,\n.fa-shake,\n.fa-spin,\n.fa-spin-pulse {\n -webkit-animation-delay: -1ms;\n animation-delay: -1ms;\n -webkit-animation-duration: 1ms;\n animation-duration: 1ms;\n -webkit-animation-iteration-count: 1;\n animation-iteration-count: 1;\n transition-delay: 0s;\n transition-duration: 0s;\n }\n}\n@-webkit-keyframes fa-beat {\n 0%, 90% {\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 45% {\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\n transform: scale(var(--fa-beat-scale, 1.25));\n }\n}\n@keyframes fa-beat {\n 0%, 90% {\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 45% {\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\n transform: scale(var(--fa-beat-scale, 1.25));\n }\n}\n@-webkit-keyframes fa-bounce {\n 0% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 10% {\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n }\n 30% {\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n }\n 50% {\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n }\n 57% {\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n }\n 64% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 100% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n}\n@keyframes fa-bounce {\n 0% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 10% {\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n }\n 30% {\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n }\n 50% {\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n }\n 57% {\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n }\n 64% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 100% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n}\n@-webkit-keyframes fa-fade {\n 50% {\n opacity: var(--fa-fade-opacity, 0.4);\n }\n}\n@keyframes fa-fade {\n 50% {\n opacity: var(--fa-fade-opacity, 0.4);\n }\n}\n@-webkit-keyframes fa-beat-fade {\n 0%, 100% {\n opacity: var(--fa-beat-fade-opacity, 0.4);\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 50% {\n opacity: 1;\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\n transform: scale(var(--fa-beat-fade-scale, 1.125));\n }\n}\n@keyframes fa-beat-fade {\n 0%, 100% {\n opacity: var(--fa-beat-fade-opacity, 0.4);\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 50% {\n opacity: 1;\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\n transform: scale(var(--fa-beat-fade-scale, 1.125));\n }\n}\n@-webkit-keyframes fa-flip {\n 50% {\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n }\n}\n@keyframes fa-flip {\n 50% {\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n }\n}\n@-webkit-keyframes fa-shake {\n 0% {\n -webkit-transform: rotate(-15deg);\n transform: rotate(-15deg);\n }\n 4% {\n -webkit-transform: rotate(15deg);\n transform: rotate(15deg);\n }\n 8%, 24% {\n -webkit-transform: rotate(-18deg);\n transform: rotate(-18deg);\n }\n 12%, 28% {\n -webkit-transform: rotate(18deg);\n transform: rotate(18deg);\n }\n 16% {\n -webkit-transform: rotate(-22deg);\n transform: rotate(-22deg);\n }\n 20% {\n -webkit-transform: rotate(22deg);\n transform: rotate(22deg);\n }\n 32% {\n -webkit-transform: rotate(-12deg);\n transform: rotate(-12deg);\n }\n 36% {\n -webkit-transform: rotate(12deg);\n transform: rotate(12deg);\n }\n 40%, 100% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n}\n@keyframes fa-shake {\n 0% {\n -webkit-transform: rotate(-15deg);\n transform: rotate(-15deg);\n }\n 4% {\n -webkit-transform: rotate(15deg);\n transform: rotate(15deg);\n }\n 8%, 24% {\n -webkit-transform: rotate(-18deg);\n transform: rotate(-18deg);\n }\n 12%, 28% {\n -webkit-transform: rotate(18deg);\n transform: rotate(18deg);\n }\n 16% {\n -webkit-transform: rotate(-22deg);\n transform: rotate(-22deg);\n }\n 20% {\n -webkit-transform: rotate(22deg);\n transform: rotate(22deg);\n }\n 32% {\n -webkit-transform: rotate(-12deg);\n transform: rotate(-12deg);\n }\n 36% {\n -webkit-transform: rotate(12deg);\n transform: rotate(12deg);\n }\n 40%, 100% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n}\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.fa-rotate-90 {\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1);\n}\n\n.fa-flip-both,\n.fa-flip-horizontal.fa-flip-vertical {\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1);\n}\n\n.fa-rotate-by {\n -webkit-transform: rotate(var(--fa-rotate-angle, none));\n transform: rotate(var(--fa-rotate-angle, none));\n}\n\n.fa-stack {\n display: inline-block;\n vertical-align: middle;\n height: 2em;\n position: relative;\n width: 2.5em;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n z-index: var(--fa-stack-z-index, auto);\n}\n\n.svg-inline--fa.fa-stack-1x {\n height: 1em;\n width: 1.25em;\n}\n.svg-inline--fa.fa-stack-2x {\n height: 2em;\n width: 2.5em;\n}\n\n.fa-inverse {\n color: var(--fa-inverse, #fff);\n}\n\n.sr-only,\n.fa-sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n.sr-only-focusable:not(:focus),\n.fa-sr-only-focusable:not(:focus) {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n.svg-inline--fa .fa-primary {\n fill: var(--fa-primary-color, currentColor);\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n fill: var(--fa-secondary-color, currentColor);\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n fill: black;\n}\n\n.fad.fa-inverse,\n.fa-duotone.fa-inverse {\n color: var(--fa-inverse, #fff);\n}';if(n!==t||a!==e){var i=new RegExp("\\.".concat(t,"\\-"),"g"),o=new RegExp("\\--".concat(t,"\\-"),"g"),s=new RegExp("\\.".concat(e),"g");r=r.replace(i,".".concat(n,"-")).replace(o,"--".concat(n,"-")).replace(s,".".concat(a))}return r}var yt=!1;function xt(){ct.autoAddCss&&!yt&&(!function(t){if(t&&_){var e=O.createElement("style");e.setAttribute("type","text/css"),e.innerHTML=t;for(var n=O.head.childNodes,a=null,r=n.length-1;r>-1;r--){var i=n[r],o=(i.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(o)>-1&&(a=i)}O.head.insertBefore(e,a)}}(ht()),yt=!0)}var kt={mixout:function(){return{dom:{css:ht,insertCss:xt}}},hooks:function(){return{beforeDOMElementCreation:function(){xt()},beforeI2svg:function(){xt()}}}},wt=E||{};wt.___FONT_AWESOME___||(wt.___FONT_AWESOME___={}),wt.___FONT_AWESOME___.styles||(wt.___FONT_AWESOME___.styles={}),wt.___FONT_AWESOME___.hooks||(wt.___FONT_AWESOME___.hooks={}),wt.___FONT_AWESOME___.shims||(wt.___FONT_AWESOME___.shims=[]);var At=wt.___FONT_AWESOME___,Et=[],Ot=!1;function jt(t){_&&(Ot?setTimeout(t,0):Et.push(t))}function Nt(t){var e=t.tag,n=t.attributes,a=void 0===n?{}:n,r=t.children,i=void 0===r?[]:r;return"string"==typeof t?gt(t):"<".concat(e," ").concat(function(t){return Object.keys(t||{}).reduce((function(e,n){return e+"".concat(n,'="').concat(gt(t[n]),'" ')}),"").trim()}(a),">").concat(i.map(Nt).join(""),"</").concat(e,">")}function _t(t,e,n){if(t&&t[e]&&t[e][n])return{prefix:e,iconName:n,icon:t[e][n]}}_&&((Ot=(O.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(O.readyState))||O.addEventListener("DOMContentLoaded",(function t(){O.removeEventListener("DOMContentLoaded",t),Ot=1,Et.map((function(t){return t()}))})));var Ct=function(t,e,n,a){var r,i,o,s=Object.keys(t),c=s.length,l=void 0!==a?function(t,e){return function(n,a,r,i){return t.call(e,n,a,r,i)}}(e,a):e;for(void 0===n?(r=1,o=t[s[0]]):(r=0,o=n);r<c;r++)o=l(o,t[i=s[r]],i,t);return o};function St(t){var e=function(t){for(var e=[],n=0,a=t.length;n<a;){var r=t.charCodeAt(n++);if(r>=55296&&r<=56319&&n<a){var i=t.charCodeAt(n++);56320==(64512&i)?e.push(((1023&r)<<10)+(1023&i)+65536):(e.push(r),n--)}else e.push(r)}return e}(t);return 1===e.length?e[0].toString(16):null}function Mt(t){return Object.keys(t).reduce((function(e,n){var a=t[n];return!!a.icon?e[a.iconName]=a.icon:e[n]=a,e}),{})}function zt(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=n.skipHooks,i=void 0!==a&&a,o=Mt(e);"function"!=typeof At.hooks.addPack||i?At.styles[t]=r(r({},At.styles[t]||{}),o):At.hooks.addPack(t,Mt(e)),"fas"===t&&zt("fa",e)}var Tt,Pt,Lt,It=At.styles,Rt=At.shims,Ft=(s(Tt={},F,Object.values(W.classic)),s(Tt,K,Object.values(W.sharp)),Tt),Kt=null,Dt={},Bt={},Zt={},Ut={},Wt={},Xt=(s(Pt={},F,Object.keys(Z.classic)),s(Pt,K,Object.keys(Z.sharp)),Pt);function Vt(t,e){var n,a=e.split("-"),r=a[0],i=a.slice(1).join("-");return r!==t||""===i||(n=i,~rt.indexOf(n))?null:i}var Yt,Ht=function(){var t=function(t){return Ct(It,(function(e,n,a){return e[a]=Ct(n,t,{}),e}),{})};Dt=t((function(t,e,n){(e[3]&&(t[e[3]]=n),e[2])&&e[2].filter((function(t){return"number"==typeof t})).forEach((function(e){t[e.toString(16)]=n}));return t})),Bt=t((function(t,e,n){(t[n]=n,e[2])&&e[2].filter((function(t){return"string"==typeof t})).forEach((function(e){t[e]=n}));return t})),Wt=t((function(t,e,n){var a=e[2];return t[n]=n,a.forEach((function(e){t[e]=n})),t}));var e="far"in It||ct.autoFetchSvg,n=Ct(Rt,(function(t,n){var a=n[0],r=n[1],i=n[2];return"far"!==r||e||(r="fas"),"string"==typeof a&&(t.names[a]={prefix:r,iconName:i}),"number"==typeof a&&(t.unicodes[a.toString(16)]={prefix:r,iconName:i}),t}),{names:{},unicodes:{}});Zt=n.names,Ut=n.unicodes,Kt=$t(ct.styleDefault,{family:ct.familyDefault})};function qt(t,e){return(Dt[t]||{})[e]}function Gt(t,e){return(Wt[t]||{})[e]}function Qt(t){return Zt[t]||{prefix:null,iconName:null}}function Jt(){return Kt}Yt=function(t){Kt=$t(t.styleDefault,{family:ct.familyDefault})},lt.push(Yt),Ht();function $t(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.family,a=void 0===n?F:n,r=Z[a][t],i=U[a][t]||U[a][r],o=t in At.styles?t:null;return i||o||null}var te=(s(Lt={},F,Object.keys(W.classic)),s(Lt,K,Object.keys(W.sharp)),Lt);function ee(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=n.skipLookups,r=void 0!==a&&a,i=(s(e={},F,"".concat(ct.cssPrefix,"-").concat(F)),s(e,K,"".concat(ct.cssPrefix,"-").concat(K)),e),o=null,c=F;(t.includes(i.classic)||t.some((function(t){return te.classic.includes(t)})))&&(c=F),(t.includes(i.sharp)||t.some((function(t){return te.sharp.includes(t)})))&&(c=K);var l=t.reduce((function(t,e){var n=Vt(ct.cssPrefix,e);if(It[e]?(e=Ft[c].includes(e)?X[c][e]:e,o=e,t.prefix=e):Xt[c].indexOf(e)>-1?(o=e,t.prefix=$t(e,{family:c})):n?t.iconName=n:e!==ct.replacementClass&&e!==i.classic&&e!==i.sharp&&t.rest.push(e),!r&&t.prefix&&t.iconName){var a="fa"===o?Qt(t.iconName):{},s=Gt(t.prefix,t.iconName);a.prefix&&(o=null),t.iconName=a.iconName||s||t.iconName,t.prefix=a.prefix||t.prefix,"far"!==t.prefix||It.far||!It.fas||ct.autoFetchSvg||(t.prefix="fas")}return t}),{prefix:null,iconName:null,rest:[]});return(t.includes("fa-brands")||t.includes("fab"))&&(l.prefix="fab"),(t.includes("fa-duotone")||t.includes("fad"))&&(l.prefix="fad"),l.prefix||c!==K||!It.fass&&!ct.autoFetchSvg||(l.prefix="fass",l.iconName=Gt(l.prefix,l.iconName)||l.iconName),"fa"!==l.prefix&&"fa"!==o||(l.prefix=Jt()||"fas"),l}var ne=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.definitions={}}var e,n,a;return e=t,n=[{key:"add",value:function(){for(var t=this,e=arguments.length,n=new Array(e),a=0;a<e;a++)n[a]=arguments[a];var i=n.reduce(this._pullDefinitions,{});Object.keys(i).forEach((function(e){t.definitions[e]=r(r({},t.definitions[e]||{}),i[e]),zt(e,i[e]);var n=W.classic[e];n&&zt(n,i[e]),Ht()}))}},{key:"reset",value:function(){this.definitions={}}},{key:"_pullDefinitions",value:function(t,e){var n=e.prefix&&e.iconName&&e.icon?{0:e}:e;return Object.keys(n).map((function(e){var a=n[e],r=a.prefix,i=a.iconName,o=a.icon,s=o[2];t[r]||(t[r]={}),s.length>0&&s.forEach((function(e){"string"==typeof e&&(t[r][e]=o)})),t[r][i]=o})),t}}],n&&o(e.prototype,n),a&&o(e,a),Object.defineProperty(e,"prototype",{writable:!1}),t}(),ae=[],re={},ie={},oe=Object.keys(ie);function se(t,e){for(var n=arguments.length,a=new Array(n>2?n-2:0),r=2;r<n;r++)a[r-2]=arguments[r];var i=re[t]||[];return i.forEach((function(t){e=t.apply(null,[e].concat(a))})),e}function ce(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),a=1;a<e;a++)n[a-1]=arguments[a];var r=re[t]||[];r.forEach((function(t){t.apply(null,n)}))}function le(){var t=arguments[0],e=Array.prototype.slice.call(arguments,1);return ie[t]?ie[t].apply(null,e):void 0}function fe(t){"fa"===t.prefix&&(t.prefix="fas");var e=t.iconName,n=t.prefix||Jt();if(e)return e=Gt(n,e)||e,_t(ue.definitions,n,e)||_t(At.styles,n,e)}var ue=new ne,de={i2svg:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return _?(ce("beforeI2svg",t),le("pseudoElements2svg",t),le("i2svg",t)):Promise.reject("Operation requires a DOM of some kind.")},watch:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.autoReplaceSvgRoot;!1===ct.autoReplaceSvg&&(ct.autoReplaceSvg=!0),ct.observeMutations=!0,jt((function(){me({autoReplaceSvgRoot:e}),ce("watch",t)}))}},pe={noAuto:function(){ct.autoReplaceSvg=!1,ct.observeMutations=!1,ce("noAuto")},config:ct,dom:de,parse:{icon:function(t){if(null===t)return null;if("object"===i(t)&&t.prefix&&t.iconName)return{prefix:t.prefix,iconName:Gt(t.prefix,t.iconName)||t.iconName};if(Array.isArray(t)&&2===t.length){var e=0===t[1].indexOf("fa-")?t[1].slice(3):t[1],n=$t(t[0]);return{prefix:n,iconName:Gt(n,e)||e}}if("string"==typeof t&&(t.indexOf("".concat(ct.cssPrefix,"-"))>-1||t.match(V))){var a=ee(t.split(" "),{skipLookups:!0});return{prefix:a.prefix||Jt(),iconName:Gt(a.prefix,a.iconName)||a.iconName}}if("string"==typeof t){var r=Jt();return{prefix:r,iconName:Gt(r,t)||t}}}},library:ue,findIconDefinition:fe,toHtml:Nt},me=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.autoReplaceSvgRoot,n=void 0===e?O:e;(Object.keys(At.styles).length>0||ct.autoFetchSvg)&&_&&ct.autoReplaceSvg&&pe.dom.i2svg({node:n})};function ge(t,e){return Object.defineProperty(t,"abstract",{get:e}),Object.defineProperty(t,"html",{get:function(){return t.abstract.map((function(t){return Nt(t)}))}}),Object.defineProperty(t,"node",{get:function(){if(_){var e=O.createElement("div");return e.innerHTML=t.html,e.children}}}),t}function be(t){var e=t.icons,n=e.main,a=e.mask,i=t.prefix,o=t.iconName,s=t.transform,c=t.symbol,l=t.title,f=t.maskId,u=t.titleId,d=t.extra,p=t.watchable,m=void 0!==p&&p,g=a.found?a:n,b=g.width,v=g.height,h="fak"===i,y=[ct.replacementClass,o?"".concat(ct.cssPrefix,"-").concat(o):""].filter((function(t){return-1===d.classes.indexOf(t)})).filter((function(t){return""!==t||!!t})).concat(d.classes).join(" "),x={children:[],attributes:r(r({},d.attributes),{},{"data-prefix":i,"data-icon":o,class:y,role:d.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(b," ").concat(v)})},k=h&&!~d.classes.indexOf("fa-fw")?{width:"".concat(b/v*16*.0625,"em")}:{};m&&(x.attributes[M]=""),l&&(x.children.push({tag:"title",attributes:{id:x.attributes["aria-labelledby"]||"title-".concat(u||dt())},children:[l]}),delete x.attributes.title);var w=r(r({},x),{},{prefix:i,iconName:o,main:n,mask:a,maskId:f,transform:s,symbol:c,styles:r(r({},k),d.styles)}),A=a.found&&n.found?le("generateAbstractMask",w)||{children:[],attributes:{}}:le("generateAbstractIcon",w)||{children:[],attributes:{}},E=A.children,O=A.attributes;return w.children=E,w.attributes=O,c?function(t){var e=t.prefix,n=t.iconName,a=t.children,i=t.attributes,o=t.symbol,s=!0===o?"".concat(e,"-").concat(ct.cssPrefix,"-").concat(n):o;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:r(r({},i),{},{id:s}),children:a}]}]}(w):function(t){var e=t.children,n=t.main,a=t.mask,i=t.attributes,o=t.styles,s=t.transform;if(vt(s)&&n.found&&!a.found){var c={x:n.width/n.height/2,y:.5};i.style=bt(r(r({},o),{},{"transform-origin":"".concat(c.x+s.x/16,"em ").concat(c.y+s.y/16,"em")}))}return[{tag:"svg",attributes:i,children:e}]}(w)}function ve(t){var e=t.content,n=t.width,a=t.height,i=t.transform,o=t.title,s=t.extra,c=t.watchable,l=void 0!==c&&c,f=r(r(r({},s.attributes),o?{title:o}:{}),{},{class:s.classes.join(" ")});l&&(f[M]="");var u=r({},s.styles);vt(i)&&(u.transform=function(t){var e=t.transform,n=t.width,a=void 0===n?16:n,r=t.height,i=void 0===r?16:r,o=t.startCentered,s=void 0!==o&&o,c="";return c+=s&&C?"translate(".concat(e.x/ft-a/2,"em, ").concat(e.y/ft-i/2,"em) "):s?"translate(calc(-50% + ".concat(e.x/ft,"em), calc(-50% + ").concat(e.y/ft,"em)) "):"translate(".concat(e.x/ft,"em, ").concat(e.y/ft,"em) "),c+="scale(".concat(e.size/ft*(e.flipX?-1:1),", ").concat(e.size/ft*(e.flipY?-1:1),") "),c+"rotate(".concat(e.rotate,"deg) ")}({transform:i,startCentered:!0,width:n,height:a}),u["-webkit-transform"]=u.transform);var d=bt(u);d.length>0&&(f.style=d);var p=[];return p.push({tag:"span",attributes:f,children:[e]}),o&&p.push({tag:"span",attributes:{class:"sr-only"},children:[o]}),p}function he(t){var e=t.content,n=t.title,a=t.extra,i=r(r(r({},a.attributes),n?{title:n}:{}),{},{class:a.classes.join(" ")}),o=bt(a.styles);o.length>0&&(i.style=o);var s=[];return s.push({tag:"span",attributes:i,children:[e]}),n&&s.push({tag:"span",attributes:{class:"sr-only"},children:[n]}),s}var ye=At.styles;function xe(t){var e=t[0],n=t[1],a=c(t.slice(4),1)[0];return{found:!0,width:e,height:n,icon:Array.isArray(a)?{tag:"g",attributes:{class:"".concat(ct.cssPrefix,"-").concat($)},children:[{tag:"path",attributes:{class:"".concat(ct.cssPrefix,"-").concat(nt),fill:"currentColor",d:a[0]}},{tag:"path",attributes:{class:"".concat(ct.cssPrefix,"-").concat(et),fill:"currentColor",d:a[1]}}]}:{tag:"path",attributes:{fill:"currentColor",d:a}}}}var ke={found:!1,width:512,height:512};function we(t,e){var n=e;return"fa"===e&&null!==ct.styleDefault&&(e=Jt()),new Promise((function(a,i){le("missingIconAbstract");if("fa"===n){var o=Qt(t)||{};t=o.iconName||t,e=o.prefix||e}if(t&&e&&ye[e]&&ye[e][t])return a(xe(ye[e][t]));!function(t,e){R||ct.showMissingIcons||!t||console.error('Icon with name "'.concat(t,'" and prefix "').concat(e,'" is missing.'))}(t,e),a(r(r({},ke),{},{icon:ct.showMissingIcons&&t&&le("missingIconAbstract")||{}}))}))}var Ae=function(){},Ee=ct.measurePerformance&&N&&N.mark&&N.measure?N:{mark:Ae,measure:Ae},Oe='FA "6.2.0"',je=function(t){Ee.mark("".concat(Oe," ").concat(t," ends")),Ee.measure("".concat(Oe," ").concat(t),"".concat(Oe," ").concat(t," begins"),"".concat(Oe," ").concat(t," ends"))},Ne=function(t){return Ee.mark("".concat(Oe," ").concat(t," begins")),function(){return je(t)}},_e=function(){};function Ce(t){return"string"==typeof(t.getAttribute?t.getAttribute(M):null)}function Se(t){return O.createElementNS("http://www.w3.org/2000/svg",t)}function Me(t){return O.createElement(t)}function ze(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.ceFn,a=void 0===n?"svg"===t.tag?Se:Me:n;if("string"==typeof t)return O.createTextNode(t);var r=a(t.tag);Object.keys(t.attributes||[]).forEach((function(e){r.setAttribute(e,t.attributes[e])}));var i=t.children||[];return i.forEach((function(t){r.appendChild(ze(t,{ceFn:a}))})),r}var Te={replace:function(t){var e=t[0];if(e.parentNode)if(t[1].forEach((function(t){e.parentNode.insertBefore(ze(t),e)})),null===e.getAttribute(M)&&ct.keepOriginalSource){var n=O.createComment(function(t){var e=" ".concat(t.outerHTML," ");return"".concat(e,"Font Awesome fontawesome.com ")}(e));e.parentNode.replaceChild(n,e)}else e.remove()},nest:function(t){var e=t[0],n=t[1];if(~mt(e).indexOf(ct.replacementClass))return Te.replace(t);var a=new RegExp("".concat(ct.cssPrefix,"-.*"));if(delete n[0].attributes.id,n[0].attributes.class){var r=n[0].attributes.class.split(" ").reduce((function(t,e){return e===ct.replacementClass||e.match(a)?t.toSvg.push(e):t.toNode.push(e),t}),{toNode:[],toSvg:[]});n[0].attributes.class=r.toSvg.join(" "),0===r.toNode.length?e.removeAttribute("class"):e.setAttribute("class",r.toNode.join(" "))}var i=n.map((function(t){return Nt(t)})).join("\n");e.setAttribute(M,""),e.innerHTML=i}};function Pe(t){t()}function Le(t,e){var n="function"==typeof e?e:_e;if(0===t.length)n();else{var a=Pe;"async"===ct.mutateApproach&&(a=E.requestAnimationFrame||Pe),a((function(){var e=!0===ct.autoReplaceSvg?Te.replace:Te[ct.autoReplaceSvg]||Te.replace,a=Ne("mutate");t.map(e),a(),n()}))}}var Ie=!1;function Re(){Ie=!0}function Fe(){Ie=!1}var Ke=null;function De(t){if(j&&ct.observeMutations){var e=t.treeCallback,n=void 0===e?_e:e,a=t.nodeCallback,r=void 0===a?_e:a,i=t.pseudoElementsCallback,o=void 0===i?_e:i,s=t.observeMutationsRoot,c=void 0===s?O:s;Ke=new j((function(t){if(!Ie){var e=Jt();pt(t).forEach((function(t){if("childList"===t.type&&t.addedNodes.length>0&&!Ce(t.addedNodes[0])&&(ct.searchPseudoElements&&o(t.target),n(t.target)),"attributes"===t.type&&t.target.parentNode&&ct.searchPseudoElements&&o(t.target.parentNode),"attributes"===t.type&&Ce(t.target)&&~J.indexOf(t.attributeName))if("class"===t.attributeName&&function(t){var e=t.getAttribute?t.getAttribute(T):null,n=t.getAttribute?t.getAttribute(P):null;return e&&n}(t.target)){var a=ee(mt(t.target)),i=a.prefix,s=a.iconName;t.target.setAttribute(T,i||e),s&&t.target.setAttribute(P,s)}else(c=t.target)&&c.classList&&c.classList.contains&&c.classList.contains(ct.replacementClass)&&r(t.target);var c}))}})),_&&Ke.observe(c,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}function Be(t){var e=t.getAttribute("style"),n=[];return e&&(n=e.split(";").reduce((function(t,e){var n=e.split(":"),a=n[0],r=n.slice(1);return a&&r.length>0&&(t[a]=r.join(":").trim()),t}),{})),n}function Ze(t){var e,n,a=t.getAttribute("data-prefix"),r=t.getAttribute("data-icon"),i=void 0!==t.innerText?t.innerText.trim():"",o=ee(mt(t));return o.prefix||(o.prefix=Jt()),a&&r&&(o.prefix=a,o.iconName=r),o.iconName&&o.prefix||(o.prefix&&i.length>0&&(o.iconName=(e=o.prefix,n=t.innerText,(Bt[e]||{})[n]||qt(o.prefix,St(t.innerText)))),!o.iconName&&ct.autoFetchSvg&&t.firstChild&&t.firstChild.nodeType===Node.TEXT_NODE&&(o.iconName=t.firstChild.data)),o}function Ue(t){var e=pt(t.attributes).reduce((function(t,e){return"class"!==t.name&&"style"!==t.name&&(t[e.name]=e.value),t}),{}),n=t.getAttribute("title"),a=t.getAttribute("data-fa-title-id");return ct.autoA11y&&(n?e["aria-labelledby"]="".concat(ct.replacementClass,"-title-").concat(a||dt()):(e["aria-hidden"]="true",e.focusable="false")),e}function We(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{styleParser:!0},n=Ze(t),a=n.iconName,i=n.prefix,o=n.rest,s=Ue(t),c=se("parseNodeAttributes",{},t),l=e.styleParser?Be(t):[];return r({iconName:a,title:t.getAttribute("title"),titleId:t.getAttribute("data-fa-title-id"),prefix:i,transform:ut,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:o,styles:l,attributes:s}},c)}var Xe=At.styles;function Ve(t){var e="nest"===ct.autoReplaceSvg?We(t,{styleParser:!1}):We(t);return~e.extra.classes.indexOf(Y)?le("generateLayersText",t,e):le("generateSvgReplacementMutation",t,e)}var Ye=new Set;function He(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!_)return Promise.resolve();var n=O.documentElement.classList,a=function(t){return n.add("".concat(L,"-").concat(t))},r=function(t){return n.remove("".concat(L,"-").concat(t))},i=ct.autoFetchSvg?Ye:D.map((function(t){return"fa-".concat(t)})).concat(Object.keys(Xe));i.includes("fa")||i.push("fa");var o=[".".concat(Y,":not([").concat(M,"])")].concat(i.map((function(t){return".".concat(t,":not([").concat(M,"])")}))).join(", ");if(0===o.length)return Promise.resolve();var s=[];try{s=pt(t.querySelectorAll(o))}catch(Ln){}if(!(s.length>0))return Promise.resolve();a("pending"),r("complete");var c=Ne("onTree"),l=s.reduce((function(t,e){try{var n=Ve(e);n&&t.push(n)}catch(Ln){R||"MissingIcon"===Ln.name&&console.error(Ln)}return t}),[]);return new Promise((function(t,n){Promise.all(l).then((function(n){Le(n,(function(){a("active"),a("complete"),r("pending"),"function"==typeof e&&e(),c(),t()}))})).catch((function(t){c(),n(t)}))}))}function qe(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;Ve(t).then((function(t){t&&Le([t],e)}))}D.map((function(t){Ye.add("fa-".concat(t))})),Object.keys(Z.classic).map(Ye.add.bind(Ye)),Object.keys(Z.sharp).map(Ye.add.bind(Ye)),Ye=l(Ye);var Ge=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.transform,a=void 0===n?ut:n,i=e.symbol,o=void 0!==i&&i,s=e.mask,c=void 0===s?null:s,l=e.maskId,f=void 0===l?null:l,u=e.title,d=void 0===u?null:u,p=e.titleId,m=void 0===p?null:p,g=e.classes,b=void 0===g?[]:g,v=e.attributes,h=void 0===v?{}:v,y=e.styles,x=void 0===y?{}:y;if(t){var k=t.prefix,w=t.iconName,A=t.icon;return ge(r({type:"icon"},t),(function(){return ce("beforeDOMElementCreation",{iconDefinition:t,params:e}),ct.autoA11y&&(d?h["aria-labelledby"]="".concat(ct.replacementClass,"-title-").concat(m||dt()):(h["aria-hidden"]="true",h.focusable="false")),be({icons:{main:xe(A),mask:c?xe(c.icon):{found:!1,width:null,height:null,icon:{}}},prefix:k,iconName:w,transform:r(r({},ut),a),symbol:o,title:d,maskId:f,titleId:m,extra:{attributes:h,styles:x,classes:b}})}))}},Qe={mixout:function(){return{icon:(t=Ge,function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=(e||{}).icon?e:fe(e||{}),i=n.mask;return i&&(i=(i||{}).icon?i:fe(i||{})),t(a,r(r({},n),{},{mask:i}))})};var t},hooks:function(){return{mutationObserverCallbacks:function(t){return t.treeCallback=He,t.nodeCallback=qe,t}}},provides:function(t){t.i2svg=function(t){var e=t.node,n=void 0===e?O:e,a=t.callback;return He(n,void 0===a?function(){}:a)},t.generateSvgReplacementMutation=function(t,e){var n=e.iconName,a=e.title,r=e.titleId,i=e.prefix,o=e.transform,s=e.symbol,l=e.mask,f=e.maskId,u=e.extra;return new Promise((function(e,d){Promise.all([we(n,i),l.iconName?we(l.iconName,l.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then((function(l){var d=c(l,2),p=d[0],m=d[1];e([t,be({icons:{main:p,mask:m},prefix:i,iconName:n,transform:o,symbol:s,maskId:f,title:a,titleId:r,extra:u,watchable:!0})])})).catch(d)}))},t.generateAbstractIcon=function(t){var e,n=t.children,a=t.attributes,r=t.main,i=t.transform,o=bt(t.styles);return o.length>0&&(a.style=o),vt(i)&&(e=le("generateAbstractTransformGrouping",{main:r,transform:i,containerWidth:r.width,iconWidth:r.width})),n.push(e||r.icon),{children:n,attributes:a}}}},Je={mixout:function(){return{layer:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.classes,a=void 0===n?[]:n;return ge({type:"layer"},(function(){ce("beforeDOMElementCreation",{assembler:t,params:e});var n=[];return t((function(t){Array.isArray(t)?t.map((function(t){n=n.concat(t.abstract)})):n=n.concat(t.abstract)})),[{tag:"span",attributes:{class:["".concat(ct.cssPrefix,"-layers")].concat(l(a)).join(" ")},children:n}]}))}}}},$e={mixout:function(){return{counter:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.title,a=void 0===n?null:n,r=e.classes,i=void 0===r?[]:r,o=e.attributes,s=void 0===o?{}:o,c=e.styles,f=void 0===c?{}:c;return ge({type:"counter",content:t},(function(){return ce("beforeDOMElementCreation",{content:t,params:e}),he({content:t.toString(),title:a,extra:{attributes:s,styles:f,classes:["".concat(ct.cssPrefix,"-layers-counter")].concat(l(i))}})}))}}}},tn={mixout:function(){return{text:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.transform,a=void 0===n?ut:n,i=e.title,o=void 0===i?null:i,s=e.classes,c=void 0===s?[]:s,f=e.attributes,u=void 0===f?{}:f,d=e.styles,p=void 0===d?{}:d;return ge({type:"text",content:t},(function(){return ce("beforeDOMElementCreation",{content:t,params:e}),ve({content:t,transform:r(r({},ut),a),title:o,extra:{attributes:u,styles:p,classes:["".concat(ct.cssPrefix,"-layers-text")].concat(l(c))}})}))}}},provides:function(t){t.generateLayersText=function(t,e){var n=e.title,a=e.transform,r=e.extra,i=null,o=null;if(C){var s=parseInt(getComputedStyle(t).fontSize,10),c=t.getBoundingClientRect();i=c.width/s,o=c.height/s}return ct.autoA11y&&!n&&(r.attributes["aria-hidden"]="true"),Promise.resolve([t,ve({content:t.innerHTML,width:i,height:o,transform:a,title:n,extra:r,watchable:!0})])}}},en=new RegExp('"',"ug"),nn=[1105920,1112319];function an(t,e){var n="".concat("data-fa-pseudo-element-pending").concat(e.replace(":","-"));return new Promise((function(a,i){if(null!==t.getAttribute(n))return a();var o,s,c,l=pt(t.children).filter((function(t){return t.getAttribute(z)===e}))[0],f=E.getComputedStyle(t,e),u=f.getPropertyValue("font-family").match(H),d=f.getPropertyValue("font-weight"),p=f.getPropertyValue("content");if(l&&!u)return t.removeChild(l),a();if(u&&"none"!==p&&""!==p){var m=f.getPropertyValue("content"),g=~["Sharp"].indexOf(u[2])?K:F,b=~["Solid","Regular","Light","Thin","Duotone","Brands","Kit"].indexOf(u[2])?U[g][u[2].toLowerCase()]:q[g][d],v=function(t){var e,n,a,r,i,o=t.replace(en,""),s=(n=0,r=(e=o).length,(i=e.charCodeAt(n))>=55296&&i<=56319&&r>n+1&&(a=e.charCodeAt(n+1))>=56320&&a<=57343?1024*(i-55296)+a-56320+65536:i),c=s>=nn[0]&&s<=nn[1],l=2===o.length&&o[0]===o[1];return{value:St(l?o[0]:o),isSecondary:c||l}}(m),h=v.value,y=v.isSecondary,x=u[0].startsWith("FontAwesome"),k=qt(b,h),w=k;if(x){var A=(s=Ut[o=h],c=qt("fas",o),s||(c?{prefix:"fas",iconName:c}:null)||{prefix:null,iconName:null});A.iconName&&A.prefix&&(k=A.iconName,b=A.prefix)}if(!k||y||l&&l.getAttribute(T)===b&&l.getAttribute(P)===w)a();else{t.setAttribute(n,w),l&&t.removeChild(l);var j={iconName:null,title:null,titleId:null,prefix:null,transform:ut,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}},N=j.extra;N.attributes[z]=e,we(k,b).then((function(i){var o=be(r(r({},j),{},{icons:{main:i,mask:{prefix:null,iconName:null,rest:[]}},prefix:b,iconName:w,extra:N,watchable:!0})),s=O.createElement("svg");"::before"===e?t.insertBefore(s,t.firstChild):t.appendChild(s),s.outerHTML=o.map((function(t){return Nt(t)})).join("\n"),t.removeAttribute(n),a()})).catch(i)}}else a()}))}function rn(t){return Promise.all([an(t,"::before"),an(t,"::after")])}function on(t){return!(t.parentNode===document.head||~I.indexOf(t.tagName.toUpperCase())||t.getAttribute(z)||t.parentNode&&"svg"===t.parentNode.tagName)}function sn(t){if(_)return new Promise((function(e,n){var a=pt(t.querySelectorAll("*")).filter(on).map(rn),r=Ne("searchPseudoElements");Re(),Promise.all(a).then((function(){r(),Fe(),e()})).catch((function(){r(),Fe(),n()}))}))}var cn=!1,ln=function(t){return t.toLowerCase().split(" ").reduce((function(t,e){var n=e.toLowerCase().split("-"),a=n[0],r=n.slice(1).join("-");if(a&&"h"===r)return t.flipX=!0,t;if(a&&"v"===r)return t.flipY=!0,t;if(r=parseFloat(r),isNaN(r))return t;switch(a){case"grow":t.size=t.size+r;break;case"shrink":t.size=t.size-r;break;case"left":t.x=t.x-r;break;case"right":t.x=t.x+r;break;case"up":t.y=t.y-r;break;case"down":t.y=t.y+r;break;case"rotate":t.rotate=t.rotate+r}return t}),{size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0})},fn={mixout:function(){return{parse:{transform:function(t){return ln(t)}}}},hooks:function(){return{parseNodeAttributes:function(t,e){var n=e.getAttribute("data-fa-transform");return n&&(t.transform=ln(n)),t}}},provides:function(t){t.generateAbstractTransformGrouping=function(t){var e=t.main,n=t.transform,a=t.containerWidth,i=t.iconWidth,o={transform:"translate(".concat(a/2," 256)")},s="translate(".concat(32*n.x,", ").concat(32*n.y,") "),c="scale(".concat(n.size/16*(n.flipX?-1:1),", ").concat(n.size/16*(n.flipY?-1:1),") "),l="rotate(".concat(n.rotate," 0 0)"),f={outer:o,inner:{transform:"".concat(s," ").concat(c," ").concat(l)},path:{transform:"translate(".concat(i/2*-1," -256)")}};return{tag:"g",attributes:r({},f.outer),children:[{tag:"g",attributes:r({},f.inner),children:[{tag:e.icon.tag,children:e.icon.children,attributes:r(r({},e.icon.attributes),f.path)}]}]}}}},un={x:0,y:0,width:"100%",height:"100%"};function dn(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return t.attributes&&(t.attributes.fill||e)&&(t.attributes.fill="black"),t}var pn={hooks:function(){return{parseNodeAttributes:function(t,e){var n=e.getAttribute("data-fa-mask"),a=n?ee(n.split(" ").map((function(t){return t.trim()}))):{prefix:null,iconName:null,rest:[]};return a.prefix||(a.prefix=Jt()),t.mask=a,t.maskId=e.getAttribute("data-fa-mask-id"),t}}},provides:function(t){t.generateAbstractMask=function(t){var e,n=t.children,a=t.attributes,i=t.main,o=t.mask,s=t.maskId,c=t.transform,l=i.width,f=i.icon,u=o.width,d=o.icon,p=function(t){var e=t.transform,n=t.containerWidth,a=t.iconWidth,r={transform:"translate(".concat(n/2," 256)")},i="translate(".concat(32*e.x,", ").concat(32*e.y,") "),o="scale(".concat(e.size/16*(e.flipX?-1:1),", ").concat(e.size/16*(e.flipY?-1:1),") "),s="rotate(".concat(e.rotate," 0 0)");return{outer:r,inner:{transform:"".concat(i," ").concat(o," ").concat(s)},path:{transform:"translate(".concat(a/2*-1," -256)")}}}({transform:c,containerWidth:u,iconWidth:l}),m={tag:"rect",attributes:r(r({},un),{},{fill:"white"})},g=f.children?{children:f.children.map(dn)}:{},b={tag:"g",attributes:r({},p.inner),children:[dn(r({tag:f.tag,attributes:r(r({},f.attributes),p.path)},g))]},v={tag:"g",attributes:r({},p.outer),children:[b]},h="mask-".concat(s||dt()),y="clip-".concat(s||dt()),x={tag:"mask",attributes:r(r({},un),{},{id:h,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[m,v]},k={tag:"defs",children:[{tag:"clipPath",attributes:{id:y},children:(e=d,"g"===e.tag?e.children:[e])},x]};return n.push(k,{tag:"rect",attributes:r({fill:"currentColor","clip-path":"url(#".concat(y,")"),mask:"url(#".concat(h,")")},un)}),{children:n,attributes:a}}}},mn={provides:function(t){var e=!1;E.matchMedia&&(e=E.matchMedia("(prefers-reduced-motion: reduce)").matches),t.missingIconAbstract=function(){var t=[],n={fill:"currentColor"},a={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};t.push({tag:"path",attributes:r(r({},n),{},{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})});var i=r(r({},a),{},{attributeName:"opacity"}),o={tag:"circle",attributes:r(r({},n),{},{cx:"256",cy:"364",r:"28"}),children:[]};return e||o.children.push({tag:"animate",attributes:r(r({},a),{},{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:r(r({},i),{},{values:"1;0;1;1;0;1;"})}),t.push(o),t.push({tag:"path",attributes:r(r({},n),{},{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:e?[]:[{tag:"animate",attributes:r(r({},i),{},{values:"1;0;0;0;0;1;"})}]}),e||t.push({tag:"path",attributes:r(r({},n),{},{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:r(r({},i),{},{values:"0;0;1;1;0;0;"})}]}),{tag:"g",attributes:{class:"missing"},children:t}}}};!function(t,e){var n=e.mixoutsTo;ae=t,re={},Object.keys(ie).forEach((function(t){-1===oe.indexOf(t)&&delete ie[t]})),ae.forEach((function(t){var e=t.mixout?t.mixout():{};if(Object.keys(e).forEach((function(t){"function"==typeof e[t]&&(n[t]=e[t]),"object"===i(e[t])&&Object.keys(e[t]).forEach((function(a){n[t]||(n[t]={}),n[t][a]=e[t][a]}))})),t.hooks){var a=t.hooks();Object.keys(a).forEach((function(t){re[t]||(re[t]=[]),re[t].push(a[t])}))}t.provides&&t.provides(ie)}))}([kt,Qe,Je,$e,tn,{hooks:function(){return{mutationObserverCallbacks:function(t){return t.pseudoElementsCallback=sn,t}}},provides:function(t){t.pseudoElements2svg=function(t){var e=t.node,n=void 0===e?O:e;ct.searchPseudoElements&&sn(n)}}},{mixout:function(){return{dom:{unwatch:function(){Re(),cn=!0}}}},hooks:function(){return{bootstrap:function(){De(se("mutationObserverCallbacks",{}))},noAuto:function(){Ke&&Ke.disconnect()},watch:function(t){var e=t.observeMutationsRoot;cn?Fe():De(se("mutationObserverCallbacks",{observeMutationsRoot:e}))}}}},fn,pn,mn,{hooks:function(){return{parseNodeAttributes:function(t,e){var n=e.getAttribute("data-fa-symbol"),a=null!==n&&(""===n||n);return t.symbol=a,t}}}}],{mixoutsTo:pe});var gn=pe.parse,bn=pe.icon,vn=n(5697),hn=n.n(vn),yn=n(7294);function xn(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function kn(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?xn(Object(n),!0).forEach((function(e){An(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):xn(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function wn(t){return wn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},wn(t)}function An(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function En(t,e){if(null==t)return{};var n,a,r=function(t,e){if(null==t)return{};var n,a,r={},i=Object.keys(t);for(a=0;a<i.length;a++)n=i[a],e.indexOf(n)>=0||(r[n]=t[n]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(a=0;a<i.length;a++)n=i[a],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}function On(t){return function(t){if(Array.isArray(t))return jn(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return jn(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return jn(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function jn(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,a=new Array(e);n<e;n++)a[n]=t[n];return a}function Nn(t){return e=t,(e-=0)==e?t:(t=t.replace(/[\-_\s]+(.)?/g,(function(t,e){return e?e.toUpperCase():""}))).substr(0,1).toLowerCase()+t.substr(1);var e}var _n=["style"];function Cn(t){return t.split(";").map((function(t){return t.trim()})).filter((function(t){return t})).reduce((function(t,e){var n,a=e.indexOf(":"),r=Nn(e.slice(0,a)),i=e.slice(a+1).trim();return r.startsWith("webkit")?t[(n=r,n.charAt(0).toUpperCase()+n.slice(1))]=i:t[r]=i,t}),{})}var Sn=!1;try{Sn=!0}catch(Ln){}function Mn(t){return t&&"object"===wn(t)&&t.prefix&&t.iconName&&t.icon?t:gn.icon?gn.icon(t):null===t?null:t&&"object"===wn(t)&&t.prefix&&t.iconName?t:Array.isArray(t)&&2===t.length?{prefix:t[0],iconName:t[1]}:"string"==typeof t?{prefix:"fas",iconName:t}:void 0}function zn(t,e){return Array.isArray(e)&&e.length>0||!Array.isArray(e)&&e?An({},t,e):{}}var Tn=yn.forwardRef((function(t,e){var n=t.icon,a=t.mask,r=t.symbol,i=t.className,o=t.title,s=t.titleId,c=t.maskId,l=Mn(n),f=zn("classes",[].concat(On(function(t){var e,n=t.beat,a=t.fade,r=t.beatFade,i=t.bounce,o=t.shake,s=t.flash,c=t.spin,l=t.spinPulse,f=t.spinReverse,u=t.pulse,d=t.fixedWidth,p=t.inverse,m=t.border,g=t.listItem,b=t.flip,v=t.size,h=t.rotation,y=t.pull,x=(An(e={"fa-beat":n,"fa-fade":a,"fa-beat-fade":r,"fa-bounce":i,"fa-shake":o,"fa-flash":s,"fa-spin":c,"fa-spin-reverse":f,"fa-spin-pulse":l,"fa-pulse":u,"fa-fw":d,"fa-inverse":p,"fa-border":m,"fa-li":g,"fa-flip":!0===b,"fa-flip-horizontal":"horizontal"===b||"both"===b,"fa-flip-vertical":"vertical"===b||"both"===b},"fa-".concat(v),null!=v),An(e,"fa-rotate-".concat(h),null!=h&&0!==h),An(e,"fa-pull-".concat(y),null!=y),An(e,"fa-swap-opacity",t.swapOpacity),e);return Object.keys(x).map((function(t){return x[t]?t:null})).filter((function(t){return t}))}(t)),On(i.split(" ")))),u=zn("transform","string"==typeof t.transform?gn.transform(t.transform):t.transform),d=zn("mask",Mn(a)),p=bn(l,kn(kn(kn(kn({},f),u),d),{},{symbol:r,title:o,titleId:s,maskId:c}));if(!p)return function(){var t;!Sn&&console&&"function"==typeof console.error&&(t=console).error.apply(t,arguments)}("Could not find icon",l),null;var m=p.abstract,g={ref:e};return Object.keys(t).forEach((function(e){Tn.defaultProps.hasOwnProperty(e)||(g[e]=t[e])})),Pn(m[0],g)}));Tn.displayName="FontAwesomeIcon",Tn.propTypes={beat:hn().bool,border:hn().bool,beatFade:hn().bool,bounce:hn().bool,className:hn().string,fade:hn().bool,flash:hn().bool,mask:hn().oneOfType([hn().object,hn().array,hn().string]),maskId:hn().string,fixedWidth:hn().bool,inverse:hn().bool,flip:hn().oneOf([!0,!1,"horizontal","vertical","both"]),icon:hn().oneOfType([hn().object,hn().array,hn().string]),listItem:hn().bool,pull:hn().oneOf(["right","left"]),pulse:hn().bool,rotation:hn().oneOf([0,90,180,270]),shake:hn().bool,size:hn().oneOf(["2xs","xs","sm","lg","xl","2xl","1x","2x","3x","4x","5x","6x","7x","8x","9x","10x"]),spin:hn().bool,spinPulse:hn().bool,spinReverse:hn().bool,symbol:hn().oneOfType([hn().bool,hn().string]),title:hn().string,titleId:hn().string,transform:hn().oneOfType([hn().string,hn().object]),swapOpacity:hn().bool},Tn.defaultProps={border:!1,className:"",mask:null,maskId:null,fixedWidth:!1,inverse:!1,flip:!1,icon:null,listItem:!1,pull:null,pulse:!1,rotation:null,size:null,spin:!1,spinPulse:!1,spinReverse:!1,beat:!1,fade:!1,beatFade:!1,bounce:!1,shake:!1,symbol:!1,title:"",titleId:null,transform:null,swapOpacity:!1};var Pn=function t(e,n){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if("string"==typeof n)return n;var r=(n.children||[]).map((function(n){return t(e,n)})),i=Object.keys(n.attributes||{}).reduce((function(t,e){var a=n.attributes[e];switch(e){case"class":t.attrs.className=a,delete n.attributes.class;break;case"style":t.attrs.style=Cn(a);break;default:0===e.indexOf("aria-")||0===e.indexOf("data-")?t.attrs[e.toLowerCase()]=a:t.attrs[Nn(e)]=a}return t}),{attrs:{}}),o=a.style,s=void 0===o?{}:o,c=En(a,_n);return i.attrs.style=kn(kn({},i.attrs.style),s),e.apply(void 0,[n.tag,kn(kn({},i.attrs),c)].concat(On(r)))}.bind(null,yn.createElement)},4184:function(t,e){var n;!function(){"use strict";var a={}.hasOwnProperty;function r(){for(var t=[],e=0;e<arguments.length;e++){var n=arguments[e];if(n){var i=typeof n;if("string"===i||"number"===i)t.push(n);else if(Array.isArray(n)){if(n.length){var o=r.apply(null,n);o&&t.push(o)}}else if("object"===i)if(n.toString===Object.prototype.toString)for(var s in n)a.call(n,s)&&n[s]&&t.push(s);else t.push(n.toString())}}return t.join(" ")}t.exports?(r.default=r,t.exports=r):void 0===(n=function(){return r}.apply(e,[]))||(t.exports=n)}()},8141:function(t,e,n){"use strict";var a=n(4836);e.__esModule=!0,e.default=function(t,e){t.classList?t.classList.add(e):(0,r.default)(t,e)||("string"==typeof t.className?t.className=t.className+" "+e:t.setAttribute("class",(t.className&&t.className.baseVal||"")+" "+e))};var r=a(n(404));t.exports=e.default},404:function(t,e){"use strict";e.__esModule=!0,e.default=function(t,e){return t.classList?!!e&&t.classList.contains(e):-1!==(" "+(t.className.baseVal||t.className)+" ").indexOf(" "+e+" ")},t.exports=e.default},602:function(t){"use strict";function e(t,e){return t.replace(new RegExp("(^|\\s)"+e+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}t.exports=function(t,n){t.classList?t.classList.remove(n):"string"==typeof t.className?t.className=e(t.className,n):t.setAttribute("class",e(t.className&&t.className.baseVal||"",n))}},9712:function(t,e){e.polyfill=t=>t},1210:function(t,e,n){"use strict";n.d(e,{Z:function(){return lt}});var a=n(7294),r=n(8595),i=n(267),o=n(1252),s=n(4578),c=n(7118),l=n(7462),f=n(3366),u=n(5697),d=n.n(u),p=n(4184),m=n.n(p),g=n(3663),b=["className","cssModule","active","tag"],v={tag:g.iC,active:d().bool,className:d().string,cssModule:d().object},h=function(t){var e=t.className,n=t.cssModule,r=t.active,i=t.tag,o=(0,f.Z)(t,b),s=(0,g.mx)(m()(e,"nav-item",!!r&&"active"),n);return a.createElement(i,(0,l.Z)({},o,{className:s}))};h.propTypes=v,h.defaultProps={tag:"li"};var y=h,x=n(7326),k=["className","cssModule","active","tag","innerRef"],w={tag:g.iC,innerRef:d().oneOfType([d().object,d().func,d().string]),disabled:d().bool,active:d().bool,className:d().string,cssModule:d().object,onClick:d().func,href:d().any},A=function(t){function e(e){var n;return(n=t.call(this,e)||this).onClick=n.onClick.bind((0,x.Z)(n)),n}(0,s.Z)(e,t);var n=e.prototype;return n.onClick=function(t){this.props.disabled?t.preventDefault():("#"===this.props.href&&t.preventDefault(),this.props.onClick&&this.props.onClick(t))},n.render=function(){var t=this.props,e=t.className,n=t.cssModule,r=t.active,i=t.tag,o=t.innerRef,s=(0,f.Z)(t,k),c=(0,g.mx)(m()(e,"nav-link",{disabled:s.disabled,active:r}),n);return a.createElement(i,(0,l.Z)({},s,{ref:o,onClick:this.onClick,className:c}))},e}(a.Component);A.propTypes=w,A.defaultProps={tag:"a"};var E=A,O=["expand","className","cssModule","light","dark","fixed","sticky","color","tag"],j={light:d().bool,dark:d().bool,full:d().bool,fixed:d().string,sticky:d().string,color:d().string,role:d().string,tag:g.iC,className:d().string,cssModule:d().object,expand:d().oneOfType([d().bool,d().string])},N=function(t){var e,n=t.expand,r=t.className,i=t.cssModule,o=t.light,s=t.dark,c=t.fixed,u=t.sticky,d=t.color,p=t.tag,b=(0,f.Z)(t,O),v=(0,g.mx)(m()(r,"navbar",function(t){return!1!==t&&(!0===t||"xs"===t?"navbar-expand":"navbar-expand-"+t)}(n),((e={"navbar-light":o,"navbar-dark":s})["bg-"+d]=d,e["fixed-"+c]=c,e["sticky-"+u]=u,e)),i);return a.createElement(p,(0,l.Z)({},b,{className:v}))};N.propTypes=j,N.defaultProps={tag:"nav",expand:!1};var _=N,C=["className","cssModule","tag"],S={tag:g.iC,className:d().string,cssModule:d().object},M=function(t){var e=t.className,n=t.cssModule,r=t.tag,i=(0,f.Z)(t,C),o=(0,g.mx)(m()(e,"navbar-brand"),n);return a.createElement(r,(0,l.Z)({},i,{className:o}))};M.propTypes=S,M.defaultProps={tag:"a"};var z=M,T=["className","cssModule","children","tag"],P={tag:g.iC,type:d().string,className:d().string,cssModule:d().object,children:d().node},L=function(t){var e=t.className,n=t.cssModule,r=t.children,i=t.tag,o=(0,f.Z)(t,T),s=(0,g.mx)(m()(e,"navbar-toggler"),n);return a.createElement(i,(0,l.Z)({"aria-label":"Toggle navigation"},o,{className:s}),r||a.createElement("span",{className:(0,g.mx)("navbar-toggler-icon",n)}))};L.propTypes=P,L.defaultProps={tag:"button",type:"button"};var I=L;function R(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var F,K=n(4317),D=["tag","isOpen","className","navbar","cssModule","children","innerRef"];function B(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function Z(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?B(Object(n),!0).forEach((function(e){R(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):B(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}var U=Z(Z({},K.Transition.propTypes),{},{isOpen:d().bool,children:d().oneOfType([d().arrayOf(d().node),d().node]),tag:g.iC,className:d().node,navbar:d().bool,cssModule:d().object,innerRef:d().oneOfType([d().func,d().string,d().object])}),W=Z(Z({},K.Transition.defaultProps),{},{isOpen:!1,appear:!1,enter:!0,exit:!0,tag:"div",timeout:g.wF.Collapse}),X=((F={})[g.E5.ENTERING]="collapsing",F[g.E5.ENTERED]="collapse show",F[g.E5.EXITING]="collapsing",F[g.E5.EXITED]="collapse",F);function V(t){return t.scrollHeight}var Y=function(t){function e(e){var n;return(n=t.call(this,e)||this).state={height:null},["onEntering","onEntered","onExit","onExiting","onExited"].forEach((function(t){n[t]=n[t].bind((0,x.Z)(n))})),n}(0,s.Z)(e,t);var n=e.prototype;return n.onEntering=function(t,e){this.setState({height:V(t)}),this.props.onEntering(t,e)},n.onEntered=function(t,e){this.setState({height:null}),this.props.onEntered(t,e)},n.onExit=function(t){this.setState({height:V(t)}),this.props.onExit(t)},n.onExiting=function(t){t.offsetHeight;this.setState({height:0}),this.props.onExiting(t)},n.onExited=function(t){this.setState({height:null}),this.props.onExited(t)},n.render=function(){var t=this,e=this.props,n=e.tag,r=e.isOpen,i=e.className,o=e.navbar,s=e.cssModule,c=e.children,u=(e.innerRef,(0,f.Z)(e,D)),d=this.state.height,p=(0,g.ei)(u,g.rb),b=(0,g.CE)(u,g.rb);return a.createElement(K.Transition,(0,l.Z)({},p,{in:r,onEntering:this.onEntering,onEntered:this.onEntered,onExit:this.onExit,onExiting:this.onExiting,onExited:this.onExited}),(function(e){var r=function(t){return X[t]||"collapse"}(e),f=(0,g.mx)(m()(i,r,o&&"navbar-collapse"),s),u=null===d?null:{height:d};return a.createElement(n,(0,l.Z)({},b,{style:Z(Z({},b.style),u),className:f,ref:t.props.innerRef}),c)}))},e}(a.Component);Y.propTypes=U,Y.defaultProps=W;var H=Y,q=["className","cssModule","tabs","pills","vertical","horizontal","justified","fill","navbar","card","tag"],G={tabs:d().bool,pills:d().bool,vertical:d().oneOfType([d().bool,d().string]),horizontal:d().string,justified:d().bool,fill:d().bool,navbar:d().bool,card:d().bool,tag:g.iC,className:d().string,cssModule:d().object},Q=function(t){var e=t.className,n=t.cssModule,r=t.tabs,i=t.pills,o=t.vertical,s=t.horizontal,c=t.justified,u=t.fill,d=t.navbar,p=t.card,b=t.tag,v=(0,f.Z)(t,q),h=(0,g.mx)(m()(e,d?"navbar-nav":"nav",!!s&&"justify-content-"+s,function(t){return!1!==t&&(!0===t||"xs"===t?"flex-column":"flex-"+t+"-column")}(o),{"nav-tabs":r,"card-header-tabs":p&&r,"nav-pills":i,"card-header-pills":p&&i,"nav-justified":c,"nav-fill":u}),n);return a.createElement(b,(0,l.Z)({},v,{className:h}))};Q.propTypes=G,Q.defaultProps={tag:"ul",vertical:!1};var J=Q;const $=t=>{let{to:e,children:n}=t;return a.createElement(y,null,a.createElement(E,{className:"link-item",tag:t=>a.createElement(c.rU,Object.assign({},t,{to:e,activeClassName:"active"}),n)}))};var tt=function(t){function e(e){var n;return(n=t.call(this,e)||this).toggle=()=>{n.setState((t=>({collapsed:!t.collapsed})))},n.state={collapsed:!1},n}return(0,s.Z)(e,t),e.prototype.render=function(){return a.createElement(_,{color:"light",light:!0,expand:"sm"},a.createElement(r.Z,null,a.createElement(z,{to:"/",tag:t=>a.createElement(c.rU,t)},"Java User Group Görlitz"),a.createElement(I,{onClick:this.toggle}),a.createElement(H,{isOpen:this.state.collapsed,navbar:!0},a.createElement(J,{className:"ml-auto",navbar:!0},a.createElement($,{to:"/"},"Aktuell"),a.createElement($,{to:"/talks"},"Vorträge"),a.createElement($,{to:"/posters"},"Plakate"),a.createElement($,{to:"/unterstuetzer"},"Unterstützer"),a.createElement($,{to:"/about"},"About"),a.createElement($,{to:"/mitmachen"},"Mitmachen")))))},e}(a.Component),et=n(4854);var nt=()=>a.createElement("footer",{className:"container footer"},a.createElement("p",null,a.createElement(et.Link,{to:"/impressum"},"Impressum")," | ",a.createElement(et.Link,{to:"/datenschutz"},"Datenschutz"))),at=n(982),rt=JSON.parse('{"K":[{"id":"javaland_2024","imageName":"javaland_2024_banner.jpg","linkTarget":"https://www.javaland.eu/","altText":"Banner für JavaLand 2024"}]}'),it=n(3024),ot=n(9417);var st=()=>a.createElement("div",{className:"sidebar"},a.createElement("div",null,a.createElement(i.Z,null,a.createElement(o.Z,{sm:"6",xs:"12",md:"12"},a.createElement("img",{alt:"Logo der JUG Görlitz",src:n(5921).default})),a.createElement(o.Z,{sm:"6",xs:"12",md:"12"},a.createElement("strong",null,"Organisiert vom ",a.createElement("br",null),a.createElement("a",{href:"https://digitale-oberlausitz.eu"},"Digitale Oberlausitz e.V.")),a.createElement("p",null,"Wir sind Mitglied im",a.createElement("br",null),a.createElement("a",{href:"http://www.ijug.eu/"},"iJUG Verband")),a.createElement("p",null,"Links:"),a.createElement("ul",{className:"list-unstyled"},a.createElement("li",null,a.createElement("a",{href:"https://ijug.social/@Juggr"},a.createElement(at.G,{icon:it.kyk})," Mastodon")),a.createElement("li",null,a.createElement("a",{href:"https://twitter.com/jug_gr"},a.createElement(at.G,{icon:it.mdU})," Twitter")),a.createElement("li",null,a.createElement("a",{href:"https://www.facebook.com/juggr"},a.createElement(at.G,{icon:it.neY})," Facebook")),a.createElement("li",null,a.createElement("a",{href:"https://groups.google.com/d/forum/juggr"},a.createElement(at.G,{icon:ot.FU$})," Mailing-List")),a.createElement("li",null,a.createElement("a",{href:"https://github.com/juggr"},a.createElement(at.G,{icon:it.zhw})," Github")),a.createElement("li",null,a.createElement("a",{href:"/jug-goerlitz.ics"},a.createElement(at.G,{icon:ot.IV4})," Kalender (ICAL)")),a.createElement("li",null,a.createElement(at.G,{icon:ot.Fwd})," Feeds:",a.createElement("ul",null,a.createElement("li",null,a.createElement("a",{href:"/atom.xml"},"Atom")),a.createElement("li",null,a.createElement("a",{href:"/rss.xml"},"RSS")),a.createElement("li",null,a.createElement("a",{href:"/feed.json"},"JSON")))))))),a.createElement("br",null),rt.K.map((t=>a.createElement("div",{key:t.id,className:"banner"},a.createElement("a",{href:t.linkTarget},a.createElement("img",{alt:t.altText,src:n(8697)(`./${t.imageName}`).default})))))),ct=n(7904);ct.ZP.config={...ct.ZP.config,autoAddCss:!1};var lt=t=>{let{children:e}=t;return a.createElement(a.Fragment,null,a.createElement(tt,null),a.createElement(r.Z,{style:{marginTop:"1em"}},a.createElement(i.Z,null,a.createElement(o.Z,{md:"9"},e),a.createElement(o.Z,{md:"3"},a.createElement(st,null)))),a.createElement(nt,null))}},129:function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;!function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var a=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(t,n):{};a.get||a.set?Object.defineProperty(e,n,a):e[n]=t[n]}e.default=t}(n(5697));var a=s(n(8141)),r=s(n(602)),i=s(n(7294)),o=s(n(644));n(4726);function s(t){return t&&t.__esModule?t:{default:t}}function c(){return c=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(t[a]=n[a])}return t},c.apply(this,arguments)}var l=function(t,e){return t&&e&&e.split(" ").forEach((function(e){return(0,a.default)(t,e)}))},f=function(t,e){return t&&e&&e.split(" ").forEach((function(e){return(0,r.default)(t,e)}))},u=function(t){var e,n;function a(){for(var e,n=arguments.length,a=new Array(n),r=0;r<n;r++)a[r]=arguments[r];return(e=t.call.apply(t,[this].concat(a))||this).onEnter=function(t,n){var a=e.getClassNames(n?"appear":"enter").className;e.removeClasses(t,"exit"),l(t,a),e.props.onEnter&&e.props.onEnter(t,n)},e.onEntering=function(t,n){var a=e.getClassNames(n?"appear":"enter").activeClassName;e.reflowAndAddClass(t,a),e.props.onEntering&&e.props.onEntering(t,n)},e.onEntered=function(t,n){var a=e.getClassNames("appear").doneClassName,r=e.getClassNames("enter").doneClassName,i=n?a+" "+r:r;e.removeClasses(t,n?"appear":"enter"),l(t,i),e.props.onEntered&&e.props.onEntered(t,n)},e.onExit=function(t){var n=e.getClassNames("exit").className;e.removeClasses(t,"appear"),e.removeClasses(t,"enter"),l(t,n),e.props.onExit&&e.props.onExit(t)},e.onExiting=function(t){var n=e.getClassNames("exit").activeClassName;e.reflowAndAddClass(t,n),e.props.onExiting&&e.props.onExiting(t)},e.onExited=function(t){var n=e.getClassNames("exit").doneClassName;e.removeClasses(t,"exit"),l(t,n),e.props.onExited&&e.props.onExited(t)},e.getClassNames=function(t){var n=e.props.classNames,a="string"==typeof n,r=a?(a&&n?n+"-":"")+t:n[t];return{className:r,activeClassName:a?r+"-active":n[t+"Active"],doneClassName:a?r+"-done":n[t+"Done"]}},e}n=t,(e=a).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n;var r=a.prototype;return r.removeClasses=function(t,e){var n=this.getClassNames(e),a=n.className,r=n.activeClassName,i=n.doneClassName;a&&f(t,a),r&&f(t,r),i&&f(t,i)},r.reflowAndAddClass=function(t,e){e&&(t&&t.scrollTop,l(t,e))},r.render=function(){var t=c({},this.props);return delete t.classNames,i.default.createElement(o.default,c({},t,{onEnter:this.onEnter,onEntered:this.onEntered,onEntering:this.onEntering,onExit:this.onExit,onExiting:this.onExiting,onExited:this.onExited}))},a}(i.default.Component);u.defaultProps={classNames:""},u.propTypes={};var d=u;e.default=d,t.exports=e.default},6093:function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;o(n(5697));var a=o(n(7294)),r=n(3935),i=o(n(2381));function o(t){return t&&t.__esModule?t:{default:t}}var s=function(t){var e,n;function o(){for(var e,n=arguments.length,a=new Array(n),r=0;r<n;r++)a[r]=arguments[r];return(e=t.call.apply(t,[this].concat(a))||this).handleEnter=function(){for(var t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return e.handleLifecycle("onEnter",0,n)},e.handleEntering=function(){for(var t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return e.handleLifecycle("onEntering",0,n)},e.handleEntered=function(){for(var t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return e.handleLifecycle("onEntered",0,n)},e.handleExit=function(){for(var t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return e.handleLifecycle("onExit",1,n)},e.handleExiting=function(){for(var t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return e.handleLifecycle("onExiting",1,n)},e.handleExited=function(){for(var t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return e.handleLifecycle("onExited",1,n)},e}n=t,(e=o).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n;var s=o.prototype;return s.handleLifecycle=function(t,e,n){var i,o=this.props.children,s=a.default.Children.toArray(o)[e];s.props[t]&&(i=s.props)[t].apply(i,n),this.props[t]&&this.props[t]((0,r.findDOMNode)(this))},s.render=function(){var t=this.props,e=t.children,n=t.in,r=function(t,e){if(null==t)return{};var n,a,r={},i=Object.keys(t);for(a=0;a<i.length;a++)n=i[a],e.indexOf(n)>=0||(r[n]=t[n]);return r}(t,["children","in"]),o=a.default.Children.toArray(e),s=o[0],c=o[1];return delete r.onEnter,delete r.onEntering,delete r.onEntered,delete r.onExit,delete r.onExiting,delete r.onExited,a.default.createElement(i.default,r,n?a.default.cloneElement(s,{key:"first",onEnter:this.handleEnter,onEntering:this.handleEntering,onEntered:this.handleEntered}):a.default.cloneElement(c,{key:"second",onEnter:this.handleExit,onEntering:this.handleExiting,onEntered:this.handleExited}))},o}(a.default.Component);s.propTypes={};var c=s;e.default=c,t.exports=e.default},644:function(t,e,n){"use strict";e.__esModule=!0,e.default=e.EXITING=e.ENTERED=e.ENTERING=e.EXITED=e.UNMOUNTED=void 0;!function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var a=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(t,n):{};a.get||a.set?Object.defineProperty(e,n,a):e[n]=t[n]}e.default=t}(n(5697));var a=s(n(7294)),r=s(n(3935)),i=n(9712),o=(n(4726),s(n(7882)));function s(t){return t&&t.__esModule?t:{default:t}}var c="unmounted";e.UNMOUNTED=c;var l="exited";e.EXITED=l;var f="entering";e.ENTERING=f;var u="entered";e.ENTERED=u;var d="exiting";e.EXITING=d;var p=function(t){var e,n;function i(e,n){var a;a=t.call(this,e,n)||this;var r,i=n&&!n.isMounting?e.enter:e.appear;return a.appearStatus=null,e.in?i?(r=l,a.appearStatus=f):r=u:r=e.unmountOnExit||e.mountOnEnter?c:l,a.state={status:r},a.nextCallback=null,a}n=t,(e=i).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n,i.getDerivedStateFromProps=function(t,e){return t.in&&e.status===c?{status:l}:null};var s=i.prototype;return s.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},s.componentDidUpdate=function(t){var e=null;if(t!==this.props){var n=this.state.status;this.props.in?n!==f&&n!==u&&(e=f):n!==f&&n!==u||(e=d)}this.updateStatus(!1,e)},s.componentWillUnmount=function(){this.cancelNextCallback()},s.getTimeouts=function(){var t,e,n,a=this.props.timeout;return t=e=n=a,null!=a&&"number"!=typeof a&&(t=a.exit,e=a.enter,n=void 0!==a.appear?a.appear:e),{exit:t,enter:e,appear:n}},s.updateStatus=function(t,e){if(void 0===t&&(t=!1),null!==e){this.cancelNextCallback();var n=r.default.findDOMNode(this);e===f?this.performEnter(n,t):this.performExit(n)}else this.props.unmountOnExit&&this.state.status===l&&this.setState({status:c})},s.performEnter=function(t,e){var n=this,a=this.props.enter,r=this.context?this.context.isMounting:e,i=this.getTimeouts(),o=r?i.appear:i.enter;e||a?(this.props.onEnter(t,r),this.safeSetState({status:f},(function(){n.props.onEntering(t,r),n.onTransitionEnd(t,o,(function(){n.safeSetState({status:u},(function(){n.props.onEntered(t,r)}))}))}))):this.safeSetState({status:u},(function(){n.props.onEntered(t)}))},s.performExit=function(t){var e=this,n=this.props.exit,a=this.getTimeouts();n?(this.props.onExit(t),this.safeSetState({status:d},(function(){e.props.onExiting(t),e.onTransitionEnd(t,a.exit,(function(){e.safeSetState({status:l},(function(){e.props.onExited(t)}))}))}))):this.safeSetState({status:l},(function(){e.props.onExited(t)}))},s.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},s.safeSetState=function(t,e){e=this.setNextCallback(e),this.setState(t,e)},s.setNextCallback=function(t){var e=this,n=!0;return this.nextCallback=function(a){n&&(n=!1,e.nextCallback=null,t(a))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},s.onTransitionEnd=function(t,e,n){this.setNextCallback(n);var a=null==e&&!this.props.addEndListener;t&&!a?(this.props.addEndListener&&this.props.addEndListener(t,this.nextCallback),null!=e&&setTimeout(this.nextCallback,e)):setTimeout(this.nextCallback,0)},s.render=function(){var t=this.state.status;if(t===c)return null;var e=this.props,n=e.children,r=function(t,e){if(null==t)return{};var n,a,r={},i=Object.keys(t);for(a=0;a<i.length;a++)n=i[a],e.indexOf(n)>=0||(r[n]=t[n]);return r}(e,["children"]);if(delete r.in,delete r.mountOnEnter,delete r.unmountOnExit,delete r.appear,delete r.enter,delete r.exit,delete r.timeout,delete r.addEndListener,delete r.onEnter,delete r.onEntering,delete r.onEntered,delete r.onExit,delete r.onExiting,delete r.onExited,"function"==typeof n)return a.default.createElement(o.default.Provider,{value:null},n(t,r));var i=a.default.Children.only(n);return a.default.createElement(o.default.Provider,{value:null},a.default.cloneElement(i,r))},i}(a.default.Component);function m(){}p.contextType=o.default,p.propTypes={},p.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:m,onEntering:m,onEntered:m,onExit:m,onExiting:m,onExited:m},p.UNMOUNTED=0,p.EXITED=1,p.ENTERING=2,p.ENTERED=3,p.EXITING=4;var g=(0,i.polyfill)(p);e.default=g},2381:function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;s(n(5697));var a=s(n(7294)),r=n(9712),i=s(n(7882)),o=n(537);function s(t){return t&&t.__esModule?t:{default:t}}function c(){return c=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(t[a]=n[a])}return t},c.apply(this,arguments)}function l(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}var f=Object.values||function(t){return Object.keys(t).map((function(e){return t[e]}))},u=function(t){var e,n;function r(e,n){var a,r=(a=t.call(this,e,n)||this).handleExited.bind(l(l(a)));return a.state={contextValue:{isMounting:!0},handleExited:r,firstRender:!0},a}n=t,(e=r).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n;var s=r.prototype;return s.componentDidMount=function(){this.mounted=!0,this.setState({contextValue:{isMounting:!1}})},s.componentWillUnmount=function(){this.mounted=!1},r.getDerivedStateFromProps=function(t,e){var n=e.children,a=e.handleExited;return{children:e.firstRender?(0,o.getInitialChildMapping)(t,a):(0,o.getNextChildMapping)(t,n,a),firstRender:!1}},s.handleExited=function(t,e){var n=(0,o.getChildMapping)(this.props.children);t.key in n||(t.props.onExited&&t.props.onExited(e),this.mounted&&this.setState((function(e){var n=c({},e.children);return delete n[t.key],{children:n}})))},s.render=function(){var t=this.props,e=t.component,n=t.childFactory,r=function(t,e){if(null==t)return{};var n,a,r={},i=Object.keys(t);for(a=0;a<i.length;a++)n=i[a],e.indexOf(n)>=0||(r[n]=t[n]);return r}(t,["component","childFactory"]),o=this.state.contextValue,s=f(this.state.children).map(n);return delete r.appear,delete r.enter,delete r.exit,null===e?a.default.createElement(i.default.Provider,{value:o},s):a.default.createElement(i.default.Provider,{value:o},a.default.createElement(e,r,s))},r}(a.default.Component);u.propTypes={},u.defaultProps={component:"div",childFactory:function(t){return t}};var d=(0,r.polyfill)(u);e.default=d,t.exports=e.default},7882:function(t,e,n){"use strict";var a;e.__esModule=!0,e.default=void 0;var r=((a=n(7294))&&a.__esModule?a:{default:a}).default.createContext(null);e.default=r,t.exports=e.default},4317:function(t,e,n){"use strict";var a=s(n(129)),r=s(n(6093)),i=s(n(2381)),o=s(n(644));function s(t){return t&&t.__esModule?t:{default:t}}t.exports={Transition:o.default,TransitionGroup:i.default,ReplaceTransition:r.default,CSSTransition:a.default}},537:function(t,e,n){"use strict";e.__esModule=!0,e.getChildMapping=r,e.mergeChildMappings=i,e.getInitialChildMapping=function(t,e){return r(t.children,(function(n){return(0,a.cloneElement)(n,{onExited:e.bind(null,n),in:!0,appear:o(n,"appear",t),enter:o(n,"enter",t),exit:o(n,"exit",t)})}))},e.getNextChildMapping=function(t,e,n){var s=r(t.children),c=i(e,s);return Object.keys(c).forEach((function(r){var i=c[r];if((0,a.isValidElement)(i)){var l=r in e,f=r in s,u=e[r],d=(0,a.isValidElement)(u)&&!u.props.in;!f||l&&!d?f||!l||d?f&&l&&(0,a.isValidElement)(u)&&(c[r]=(0,a.cloneElement)(i,{onExited:n.bind(null,i),in:u.props.in,exit:o(i,"exit",t),enter:o(i,"enter",t)})):c[r]=(0,a.cloneElement)(i,{in:!1}):c[r]=(0,a.cloneElement)(i,{onExited:n.bind(null,i),in:!0,exit:o(i,"exit",t),enter:o(i,"enter",t)})}})),c};var a=n(7294);function r(t,e){var n=Object.create(null);return t&&a.Children.map(t,(function(t){return t})).forEach((function(t){n[t.key]=function(t){return e&&(0,a.isValidElement)(t)?e(t):t}(t)})),n}function i(t,e){function n(n){return n in e?e[n]:t[n]}t=t||{},e=e||{};var a,r=Object.create(null),i=[];for(var o in t)o in e?i.length&&(r[o]=i,i=[]):i.push(o);var s={};for(var c in e){if(r[c])for(a=0;a<r[c].length;a++){var l=r[c][a];s[r[c][a]]=n(l)}s[c]=n(c)}for(a=0;a<i.length;a++)s[i[a]]=n(i[a]);return s}function o(t,e,n){return null!=n[e]?n[e]:t.props[e]}},4726:function(t,e,n){"use strict";e.__esModule=!0,e.classNamesShape=e.timeoutsShape=void 0;var a;(a=n(5697))&&a.__esModule;e.timeoutsShape=null;e.classNamesShape=null},1252:function(t,e,n){"use strict";var a=n(7462),r=n(3366),i=n(7294),o=n(5697),s=n.n(o),c=n(4184),l=n.n(c),f=n(3663),u=["className","cssModule","widths","tag"],d=s().oneOfType([s().number,s().string]),p=s().oneOfType([s().bool,s().number,s().string,s().shape({size:s().oneOfType([s().bool,s().number,s().string]),order:d,offset:d})]),m={tag:f.iC,xs:p,sm:p,md:p,lg:p,xl:p,className:s().string,cssModule:s().object,widths:s().array},g={tag:"div",widths:["xs","sm","md","lg","xl"]},b=function(t,e,n){return!0===n||""===n?t?"col":"col-"+e:"auto"===n?t?"col-auto":"col-"+e+"-auto":t?"col-"+n:"col-"+e+"-"+n},v=function(t){var e=t.className,n=t.cssModule,o=t.widths,s=t.tag,c=(0,r.Z)(t,u),d=[];o.forEach((function(e,a){var r=t[e];if(delete c[e],r||""===r){var i=!a;if((0,f.Kn)(r)){var o,s=i?"-":"-"+e+"-",u=b(i,e,r.size);d.push((0,f.mx)(l()(((o={})[u]=r.size||""===r.size,o["order"+s+r.order]=r.order||0===r.order,o["offset"+s+r.offset]=r.offset||0===r.offset,o)),n))}else{var p=b(i,e,r);d.push(p)}}})),d.length||d.push("col");var p=(0,f.mx)(l()(e,d),n);return i.createElement(s,(0,a.Z)({},c,{className:p}))};v.propTypes=m,v.defaultProps=g,e.Z=v},8595:function(t,e,n){"use strict";var a=n(7462),r=n(3366),i=n(7294),o=n(5697),s=n.n(o),c=n(4184),l=n.n(c),f=n(3663),u=["className","cssModule","fluid","tag"],d={tag:f.iC,fluid:s().oneOfType([s().bool,s().string]),className:s().string,cssModule:s().object},p=function(t){var e=t.className,n=t.cssModule,o=t.fluid,s=t.tag,c=(0,r.Z)(t,u),d="container";!0===o?d="container-fluid":o&&(d="container-"+o);var p=(0,f.mx)(l()(e,d),n);return i.createElement(s,(0,a.Z)({},c,{className:p}))};p.propTypes=d,p.defaultProps={tag:"div"},e.Z=p},267:function(t,e,n){"use strict";var a=n(7462),r=n(3366),i=n(7294),o=n(5697),s=n.n(o),c=n(4184),l=n.n(c),f=n(3663),u=["className","cssModule","noGutters","tag","form","widths"],d=s().oneOfType([s().number,s().string]),p={tag:f.iC,noGutters:s().bool,className:s().string,cssModule:s().object,form:s().bool,xs:d,sm:d,md:d,lg:d,xl:d},m={tag:"div",widths:["xs","sm","md","lg","xl"]},g=function(t){var e=t.className,n=t.cssModule,o=t.noGutters,s=t.tag,c=t.form,d=t.widths,p=(0,r.Z)(t,u),m=[];d.forEach((function(e,n){var a=t[e];if(delete p[e],a){var r=!n;m.push(r?"row-cols-"+a:"row-cols-"+e+"-"+a)}}));var g=(0,f.mx)(l()(e,o?"no-gutters":null,c?"form-row":"row",m),n);return i.createElement(s,(0,a.Z)({},p,{className:g}))};g.propTypes=p,g.defaultProps=m,e.Z=g},3663:function(t,e,n){"use strict";n.d(e,{CE:function(){return s},E5:function(){return p},Kn:function(){return m},ei:function(){return c},iC:function(){return f},mx:function(){return o},rb:function(){return d},wF:function(){return u}});var a,r=n(5697),i=n.n(r);function o(t,e){return void 0===t&&(t=""),void 0===e&&(e=a),e?t.split(" ").map((function(t){return e[t]||t})).join(" "):t}function s(t,e){var n={};return Object.keys(t).forEach((function(a){-1===e.indexOf(a)&&(n[a]=t[a])})),n}function c(t,e){for(var n,a=Array.isArray(e)?e:[e],r=a.length,i={};r>0;)i[n=a[r-=1]]=t[n];return i}var l="object"==typeof window&&window.Element||function(){};i().oneOfType([i().string,i().func,function(t,e,n){if(!(t[e]instanceof l))return new Error("Invalid prop `"+e+"` supplied to `"+n+"`. Expected prop to be an instance of Element. Validation failed.")},i().shape({current:i().any})]);var f=i().oneOfType([i().func,i().string,i().shape({$$typeof:i().symbol,render:i().func}),i().arrayOf(i().oneOfType([i().func,i().string,i().shape({$$typeof:i().symbol,render:i().func})]))]),u={Fade:150,Collapse:350,Modal:300,Carousel:600},d=["in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","onEnter","onEntering","onEntered","onExit","onExiting","onExited"],p={ENTERING:"entering",ENTERED:"entered",EXITING:"exiting",EXITED:"exited"};"undefined"==typeof window||!window.document||window.document.createElement;function m(t){var e=typeof t;return null!=t&&("object"===e||"function"===e)}},8700:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/35c3-congress-everywhere-c6d1ad94c430954d27dc3c4f9347a364.png"},6724:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/WJAX_2019_266x145-55e9387b7bc7109fb516e61b64516677.jpg"},4366:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/banner_javaland_2023-bbf849f85a3eda8be541845b1f92ef96.jpg"},9101:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/banner_jax_2023-bc5c6880e35452bd858c7ef22bd3e1cc.jpg"},9438:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/banner_jug_saxony_day_2022-34f9a0dd801252b721484ceda6443ff4.png"},8337:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/banner_wjax_2022-22f85ce5d6858bea82b6b48da9316ec5.jpg"},8799:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/entwickler_tutorials_logo-d1aef911fdec3b2ac40683f00947db5a.jpg"},4661:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/grillen-0c716ec2dd81bef5ed8583454d2defbf.jpg"},9435:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/icon-83fc2d3536f1fb90c67ad3e83e89d25f.png"},4652:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/javaland_2019_banner-089cf335f7276dc79077402b7302112f.jpg"},8735:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/javaland_2020_banner-c3150179ad8ff882658bab7c381512bf.jpg"},6365:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/javaland_2022_banner-2b21bf73ef9d13468083f1c54cd4ee44.jpg"},2295:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/javaland_2024_banner-5b59695001cca42ff6a67f0eae6c1923.jpg"},4059:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/javaland_2024_banner_big-e42472f5949df5b70f614cdd2fcfa716.jpg"},1974:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/jax19_banner-7156748b7a4266599c288d2d16cc1edf.jpg"},6846:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/jax20_banner-eeedb179c6845ef6e8745456dcc55f6d.jpg"},2713:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/jax21_banner-663509eac051c7c0b71a7ec4fb437dee.jpg"},7425:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/jax22_banner-5841054a4c1366fdb4078210ccadd02e.jpg"},6956:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/jax_banner-eaf76932797b8cdfbc49630ac9ae5ec3.png"},6331:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/jdd_2022_banner-cc247ae146c29aa7fc10b7b5167aba5f.png"},8618:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/jdd_2023_banner-3c34056264fdd0f4b44386abfb3f6422.jpg"},2607:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/kickerking_logo-56e0c6abf8c0d609c15ca2da730a33ee.jpg"},6462:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/lernfabrik-efe6c92d2c437c2f636b8556a6997d04.png"},5921:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/logo-1d738a22f39c568c148bd4f6433b2ff4.png"},2377:function(t,e,n){"use strict";n.r(e),e.default="data:image/jpeg;base64,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"},3087:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/mitp_logo_gross-6e7375d19fabf502c174d0ad5c5e8bea.png"},2186:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/christian_kuemmel-0347c7fb7d78824aa63e233f88dffd44.jpg"},9429:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/christoph_menzel-b4b6a917ca643c903f625caafb618b50.png"},4160:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/damian_dudziec-30f60ff25d6e0a6722a507b94aafe3d2.png"},2779:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/daniel_fesenmeyer-6f6477e2c7049f9abfbfd082fff388fb.jpg"},2258:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/daniel_sulyok-eeee198794fffc1d559c61993cf9d5fd.jpg"},9880:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/denny.israel-c4d6c7197b3f4945e6589cd7a084bf38.jpg"},650:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/gerrit_grunwald-d23d6f6ff244d911d3b7f020ee11a394.jpg"},3887:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/gregor_trefs-825faee3a18b040f9509c18b4568f760.png"},8807:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/hannes_kretschmer-c9cb2402d5c4f5daa47eda2433057a93.jpg"},7883:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/hendrik_ebbers-2ed57b5c4e2c1d1fd234f9c41f5c420e.png"},6775:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/jens_leuschner-48076ed40eef2f9361651fb1f947ecf2.jpg"},9284:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/joerg_laessig-eb39f697b764842bbeca75e4ccbfeffc.jpg"},1266:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/lars_roewekamp-b3ea86bde9c25bb281593ce876b4dc99.png"},6459:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/maik_wagner-89df35798ec379960b97c1c0931fd742.jpg"},3022:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/manuel_mauky-a216cd990743c6e5169525d5ad73d4e0.jpg"},1096:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/marco_gotthans-c39f9f81f98ae3b9195d297e3cb4cd99.png"},1226:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/mariusz_zienkiewicz-b5c53411e3d6cb7fa6979441ee4ee402.jpg"},258:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/markus_kett-bdd63f175e217c2cbd7092ad5c98f837.png"},9773:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/markus_ullrich-e802330df6a22f6444fed84b5e04b1c2.jpg"},3545:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/markus_weiland-6b6225ccdec6091cce482b79a2978750.jpg"},1905:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/marlene_knoche-eebdcba4bf110a0be3150bfcca614a99.jpg"},8662:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/max_wielsch-9e0e7d64ad8f1d33cdf8c3cf983a4a74.jpg"},8294:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/michael_hunger-99b6a2ea0ee3b58a67d50570e5b82639.png"},6371:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/michael_simons-d64a89b53c50eb414d0812c291f6034e.jpg"},3030:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/nico_foerster-67056fb35ac3744a13faece5302e6b79.jpg"},6664:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/oliver_drotbohm-388d8f59a5e927511121e4138277e4b6.png"},6345:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/patryk_lewandowski-4546bdb44e6a627571416b678b3ba8a8.jpg"},7102:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/pawel_adaszewski-3d03250d6e6c2c7f91c1888aae864c93.jpg"},369:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/roland_weisleder-df413237239aecefd7d0743224f4d121.jpg"},3955:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/sergej_tihonov-e06adf34f9ec9680fa9bc80594bfe8b0.jpg"},2947:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/simon_roloff-a3c56d1d0c1b361c98d7ae20fd453aa3.png"},3017:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/stefan_bley-fdea1a834e82acc998437adc03cb264b.jpg"},7489:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/stefan_zoerner-de8ec4c8f9fcaeb93430ac5e3bcb9c11.jpg"},5267:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/stefan_zoerner_2-b7e42e02c946884aa386a5f2d8f48d13.jpg"},1946:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/stephan_strehler-4a163d44cae1a55852c570c2378fb7ae.jpg"},8576:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/sven_hoffmann-e26687caf9bd0601eae888558eb65150.jpg"},1626:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/thilo_frotscher-3c8f640270ed0f5cc7568af5b1d1c2c0.jpg"},4984:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/uwe_manteuffel-8114dc136d03e15e9601c2262df2f0c1.jpg"},4189:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/wolfgang_weigend-d8102173c06904bfddaf28fcfce91e19.jpg"},1941:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2016_01-d966621696c2b1c19dbe9b66378b1fea.png"},2601:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2016_03-7a057c1c415a722e539905543aa25254.png"},6337:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2016_05-033bee59571b15df5df146a1b6fb64a4.png"},6223:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2016_09-dea570ddfd68d92913587725dca3de3e.png"},3895:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2016_11-03b6d7da4bd7c67f0b2af9f9ef722486.png"},7738:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2017_01-9139600192a183f0e227415c38a3a0c1.png"},9474:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2017_02-79fae7d293949c9f22d118c8cfc2a79b.png"},6059:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2017_03-b5b1d0b94001a2fe20f7204603857151.png"},4076:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2017_04-ede659ffb71c073c02473ee425c031f4.png"},4087:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2017_05-9db3e7ead6eb46db91a6d1a3ab90eef6.png"},2195:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2017_07-73f719582646f6a79c80b1c23c68e785.png"},7189:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2017_10-671ebe33d4c06ae3ed85b430792d8fc4.png"},4092:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2017_11-6f8a316b573a05fe0d75803c55e9f682.png"},1584:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2018_01-a3b57b49681719103100c434c462a40f.png"},4466:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2018_02-159b14fa302afb2b6d58c0b2e7da74d5.png"},1440:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2018_03-1cc45da49f0c4722ce031504e9f464d9.png"},3211:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2018_04-4f511f39b86be771fad22e5844350f7e.png"},9378:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2018_05-23d6d639a541e033911bcd0ce28c07a6.png"},2757:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2018_06-b986bed18b94821c4effba69f8418d40.png"},4566:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2018_09-e686dd9a4dd09e9273ee9330abbc5a1b.png"},6686:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2018_11-5285241fc6482f5c399ce71128d436a4.png"},4633:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2019_01-9d0fe3cddd74fe102b73fe2ed600814e.png"},3019:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2019_02-db09d0b46fe10650ce99a55cf45dd761.png"},4843:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2019_03-8aa66165d15f5467aa29d75d6c714b19.png"},3792:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2019_04-928b54e2c9fdc98e3a8c2f07af460a28.png"},9108:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2019_05-b3ffd0d83022f50c00137c387b1e5198.png"},56:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2019_06-8df07980c71663696909e4508b42a113.png"},5172:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2019_11-3c93d7cda2405a7a1c36c2154da1aed4.png"},6619:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2020-01-62c3fbe04afc6d77091b7197e74940d1.png"},6328:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2020_04-e8cfc3c64fc8cdcc823625f91d832f1c.png"},3302:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2020_07-dbc06d58631a1697651ae157d44b7d09.png"},6436:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2020_11-cdcfef5b2674d29f1a08c9b7cf0ebad0.png"},6807:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2021_01-08228b1141fc72ec0d867d08ce89e14f.png"},2318:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2021_06-c0638a51678741cace9ec84a9dc907c9.png"},4884:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2022_06-510beda12016fc41e12ee29961cb5fe6.png"},4832:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2022_10-44c9c932fdf813596036a584b4798eb2.png"},5646:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2022_11-6c0f7d8395ba77bb26ab83224867e54a.png"},8325:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2023_01-faaef47c50c0892c4dff9bef2b2d1425.png"},1461:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2023_02-8e9d416e7f80cec11420d8ba550623ea.png"},9750:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2023_03-cc5b88f0a7dcf4a1bdf40ca0bbb74d56.png"},7035:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2023_04-4bcd6edf02f22ddb9377f65606c7ad51.png"},9907:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2023_05-5a5385953c33a10a67e4285d5777a21a.png"},509:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2023_06-b66f0d9df73973330992646d28f9fa74.png"},5871:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2023_09-166049e8b21b32600dbab5da6d7a1a70.png"},4881:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2023_10-e7c85fc8de82208879733a49c119aa9b.png"},2820:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/plakat_2023_11-70c9a4a049551c4e7d406192b58232cf.png"},6702:function(t,e,n){"use strict";n.r(e),e.default="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAN4AAABPCAYAAACEXXtRAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAEmZJREFUeNrsXT9MG1ka/yWKdISGOVHMyU4O0zgdTIpDotgwJEqXCCMdW0WyLa3EboWdK0ECJFIeJtKuNkgrYUupwkkMgg4lDEmBlC0y0MXNmgu2zgVa0xC6XDFvYBi/N/Nsz4zt5P2kEcIeP78Zf7/v3/veN9e+fPkCAQGBcHFd3AIBAUE8AYFvAtc6YhbTSwqAJABgdS5rez0FYBjAJlbndPFz1d23GIAEgDGszk2KG9KZoIVzN9okMNKFwJh/JfKOk1wxABkAGUwv1QBoADYB6Fidq32jZFMAqERRKUKsuxM3QhQYSztPEMFpFBKAFDmA6SU7CUtfOdlUct8SRBkJCOK1TWAS5ACmlwwABQDaV0FC0yOw3ztJiKogXjMuZNBQyJHD9FKJuKQFrM4ZXUa2hI1sAoJ4XRVz0OPC1TmtA8lmud8iXhPE4xIYu1Xr5JjjMi6cXgIukzNa25IzlxlcEa+FhIgcXXC8pFeqZd32fuwid3CJfKVaLrWXeKZmtmIOtYtjDisuXMP0km4jYSlgsiVEvNZWzFNe0x1e0jzl/TYQz9TMlsB8jW6QSo4cSc7ovsWFXRavReSoCmCX8bZRqZbvNvnZlUq1nBW89yLepWZWvzE3SCFHhiRn9IbjwtaXS9rtkjPvTUSOSpVqueaiwNzuqwCVeCbZkhCZNLvbYcWFtQsS0uLCy3hN7XIh85q7SuJjGsa+gt+8hvrijVqwxANmulBDh2kJrLgwCWDcRjo3F6vbUXJ4PGMuxFNdPtcVXlOlWjau/LYhQBRJCwDAgOP/Ao87SeI7OzSK9yDgGeMJfMvutR06rmb5WHGek3h7MNdQuUDS+DPE1VUdbp5BXPy8S3xpH8ty+51jGZyfzTlezhJLaFcyVqJRYrjnBjkK9uUKYfEEuNxMhtCoXvFdpVrWnLEREWqasC8A+IMQVaW4+Cohwx+sMcg4UkSObgD4wBiLJ/a2vs9+SJTrz3jE8wrJD+xG5OhuRI5K3xTxpN4eqPEBQSF+KI44DZRkw5hT4B1CrjMsjEQhSw70tTUWKXZp5CNz2EVnJgZVihVtzdVUbstQbsmI9UsYvi1DuvkXuuo8OcXRySlqn89hfKrCOK6idnYeyFWmRoeQHB2iEk47KGLT+Ij8/mF7/bn+PnLv/oaB/j7E+vuY5+4V/2tK8fH/UDo5hfGpGqiuok3BQSzVwwJucrqXKsUdNQBMVqrlEiFTxkFMiQixMwGyRrE+JRKj6rZ5zvtwj0oA8gCOyHyd7u8E5bpSANItES/W34eZByNIDN9xFRjP2Z+cYnD2Z/9U9W0Za8nHUG7JzHMSw3EkhuOYf3QPky/WgxbiOutrKQW3OdapS4oCufvstzDmXuOM88YocSHLmtrfm6F837g1Lvm7EJGjww5LpkbkaMwq4yIWMEEh8LgjJtQjcrRl4lWq5TwhHgt6RI6eOklOFI3eMPGk3h7kph4iNTrkm9b3k3S7T59AutnD/d27T59gfPllKOTLPBjB/KPvuOfn+Vv4NA5FMOw4IIKmR+QozX3SKBavZk9EeFhTJ1lYyZMC5VzVJvxJymcmeRIxAULnta43vAR748cpX8niJ9aSjxsWRummqUjGl18GauX8VFZthOYQ/jEAGnEHFYa12wP/8gMASIzXYx6vOV1MI8iiZsd1xMhcFIdi4U4s3PCyDkFoWb9iOpbrphePsFf8L5KjQ1SlocYHoNyWA7N6a8nHSAzHv4aky57T3WsivvOqbEmhfmcAb/KC5iIHSbgEsWhKq2Nd99OahImZByPU1/P7hxhffomF7bdmTHRcZcR9dwJzL7uMdColTmLFbQqxdrzxnd9oW3kaycRuwKfSQKrFSyhxrnR86eQUhf1D6MUjasYy1t+HWL908XeYZEN9ie8Y42TXdy5V4Nk5nr9+j7Xk49B+oPlH33lnLz6fQzOK2Dz4CONTFaWTU2ZyRY0PoK/3L77dtwaSK6hUy0ZEjtYc7pTqIGvJw8WTOOKiPc65lRzzlEIiXQz0wgDNioltrmaqaeIlR4c9BWdx+x1WXr/3JCZNqFpW0QyloBeP6sgfxPe7ub9eXkJ+/xDZ9R3PZRW9eHTlb4Do4yCG3d2ccInvnORwxmI0d9CoVMsLTczbcCgAJcB7lKC8tuicN4lVuYh3nS7Yf3f9ULqw5Um6TkGYiaExDy9BOygiXdgKbC2zWefBgzh7lJjMLb5jWj+S+XSSL+VW4eGCTUqSJhPQPZIYCsm/GC/W3+eqtY3jKjSj2JEkU27LFOs9xLiO/4VO8sXttx2vqChuo5eAeQqgg1gaRah3iTvXCPIUEucCIl+NIzZuLcaL9bsrn07Q1iz3S7pplopZ76vxAapbasVYYSPMhftG9IUHEWlxnt1NrHFaVYugWdS3wFBg1mQ6YyYrblIAbNpdu0q1XIvI0SzM6hUn+eZtSaKYD/dIQ33513xEjg7ArGQpke9pfTmBrdWljpAW47hKTTjMP/oO+vKRuQb50z+pn33++ve2zDmhxDvRW4hxCl6Kw91jWQc4CDMOs8ZSosRSCU7XEpVqOU8W+XOOsST4uMeUlLLlKfcg1eyY12nWwMudyjBS+WGiwKi7VOMDyDwYYa5B1j6fY+VNe+LT+Uf3IPV27hKNi9u4x3s+o4IlRjlnEO4lWLykyAO468dYHt+TBrAIn9YLbzTjDuWmHmKgvw+L2+/a5nrm9w+Z5Vi5qYfMz03++p/A5uyVQVVumSVu2Vc7YWQreTHOYa00WtLEZc/ZuFfChbioaeIuqrYkzzA537qZBswlC8MjLk2T8ayxJJqSYMzZoMzZoHzPQkSOrqB+zx8rLjTA2A9IdTW1g6LnInDm/ghSo0MX61Fhu1DmGt3vXOtmFtKFrUAFfq945FkmZpFPLx5drIGGueTRAHmcJNH9HNMxtgZ2a4lmrkdv8DPc12c7V29lnjfoMdB7ruoL6aZZeW8Jm1WqpRePQtHoK2/eY+bBP7gqbNKFrcC3BeX3D5H7/iHXfOyJn9LJKbl3R20nokA4oBJPLx5xWT2WMM3ju4txNg+KyO8fBuLe1c7M7KSblal9Pke6sOVpkaXeHl/mmC5sYePHqQYTVn1XFFjp5BTawUcU9g87NRMq0CKuuwkQq86xESLmph7iz+V/YS352PfF7LXkY64dADrZVOqG1OgQ/syZ80wo8aaTIJphLpK3glh/HzL3R/Bh9gfsPn0idtN/S8SrnZ1jfPmlbxnA1OgQPsz94NtWmd2nT7jGkm72YPfpE8/zxuIDF67zxo9T+HP5X9j4aaqpueX3DzH5Yt0zQ8yrvHafPsHGT1OdnhEV8IN4Fvmyr3YwvvzSl5hNutnDbaW8LF0jVkC5JXsWStPK5FgtLXgt3+DsL2bm1wcCJobj5hJJSOSLyNFERI7mSNOeLy7Hh4gc3RVU8pF49phvfPklBmd/xsqb9y0H/40Sx46FR/eaIq49hqoTaiVOTYjscbioXoprYfstBmd/MePMg9YyvzwKxCfC/QFzC0wG3mlzBaIhcjDEs1A6OUX21Q4GZ3/G4OzPyK7vNC1MzQhQrL+PuXxQ+3yOu89+c50Pi/ATjL15fmVma2fnpvv56zr++vTfmHyxjvz+YVMKLDEcp9ak+kS6NUK4mKBGsGi6oW3p5BQrr99f7FJIKHFMDN9hWg8aiRrdBT7/6B7zPauPSrqwBWX2B2YiZ+Onf17puSL19iChxKlEDmJJxMrEWlnWWH8fEsodzNwf4U4+zdwfaTmBwyBdivVzk8NZwWJtTBVEDYt4tJhGM4rIrvcgc3+Ea2E7MXynIeLRCAIAi9vvLsapnZ1j8sU6s2TMSrYMzv6C2tk5MvdHqOeF1QrQrsDU+ABX9tdvi0daGtBIZ8DsqKwLqnQo8ZxxjXbwER9mf3A9d6CB5QWVZB1pyO9fLWg3PlWRfbXDdGct8qULW5h58A/qOc/bsN9QLx7h7rPfsPv0ieuO8wB2o9Mar2qVanmyBTKrjthPJ53LJFwtESuRekvn52MwC6bHcLX8y7K8GmtnBOMJrzpNgUTkaMphsa/MhzGWZe33vMYPjXh24V958x6Z+yOu7mYjxKN+zzG9dUJ+/xCxfolpeZVbMlMxNBt/+aW4sq92uJZAfLJ2CsVVrIHRiLUBqLja6m4gIkeTNELAVuBMiLkG9+7QKZjbf54zdq/H4P0UWAtJ1HfEznOMBcfn5sn2qecwH8hZ8y250ij2Qigbc6s2Wdh+25TL2O4NqyEXUNMEPB9Af8oUPLbRECXwB/hasktE2Nc6yIOUCEl3vXbVB0o85dbf3K3icfDlUI1W4Cxuv2t7rWTIfUxpnbs2w75mm6WTKImdRXLkQW8dsRDydA0yl0WGFVW8yBeYqyn19jDbLlg48kHAeRIN48svPeMmSxG0a6+eHTMe+x1DsIhGUA4KzF0Ie7jcKmQRKYP6/i95sg/OTtBFmJtoYw43Lx9WQ1tnwsn28BTFQb4MgIXQLJ7UayYvvDS3ZnzklwRGjxSrzMvLHZ38dR3dgMyDEde4GAA2D3zdgqU6XwiwDfpgpVpOV6rlfKVa1slh2GItJ0mzlLlZFpDHZQ4F5H6NU6xxsiGL9+XF7EWvzAPS95FHy5pV9sNcW3Ua3f7iVuic+/4hjOMqc2kiNTqE3PcPOVxj+eLZCs3sVFh4dA/J0aGL+2ZeY83zOqXeHiSG45h5MOJplc1+MR/bqhwoLdwB7/6a8MhCOhM8zKwlafngjO0mAKy0k3ykPUTGTgkStxrcriatUZD1uC3g8hFc1uOmrMa13Lba1niWN4mS3z+kWjdreWBx+52pMD5VL9q0N7IwbSdfurDV1JacGLkfieH4xfYoy421yGwcVyHd7DE7uvX2NLQ88Pz1737HoAYa70mpoP7574sst4rnttEiEY/PlNB5z1s/YFwbP/FYbp0fW1SaFerF7bfMyhjrYST+JIVk358qZCdXs/dQOyhiwf+Ma41igdQuWDTvROKVGEpKCyXG8yJds1UhVq2oL3eIPDDTTcm4laiFDavWM6REioLOh+SlQDpIQaBtxLOqMlotxcrvH5rdmFvYaqMdFHH32W9mLMcYxziu+l4P2ZQ5+nyO7PpOkHOhdRBLhn2ZzTgRHAokbCgdQzy9eIR0YctXt816IlCjaXVre9Pkr+uonZnxKo18xnG16QSLb2ry5BTZ9R0Mzv4SaLv8SrWsUQRfCbAdOm0OBuiPNmYldxROyx02JijXRnXZqTHetR+fXXnO+RjZJKrclrmzlUE37rFIo9yWLx5zTIudrOwsq3+JNY71OOfa5/Pms5rbb7Hy5v3FXKzEE08CxSp9s+5byL1WnqO+LCpHspcrIT1lVcPVyhbFJdacZ1yDmwVNRuTolWshxeG+xIak5lN12gjW+TfcBNvrx5d6zcxcOxvymPPc8YXEa8nHWNx+25Klq52dh9ZlzUeLsxCRoxMUV2ke5uK0TiyKpUWDaAKziPrW7huk76ZOujkrZE4Jx2dX7EsZpO28c/wYgA8ROVqyuYVSsy6lbXyJWLoU45oaIx6vkBmd9eSblq6lWxbZA4LVVp3mxqkIeJc5IZbzWQiS9T+FSHYXkybgeQoZYj5ZuBzHOWm3dc3rEBDAleoL39qUNzGHPIDJBr5fAzDOcIV5rqMGnxrpOsZM07Y6+WbxgjA8ggJtJ5/VpjwFs4BadXHJdJhZuwOKAJfQRLflSrWsEdc2BTO7qjDIUnBbayQWdJBYJ9Vm6WrESm4SqxhzXF+zSRqdjKnx1Ixew/TSLtrbrMa6CRpW5+ovenpJIfNLor3rSzpW58Zt81JRX70RtpLSAGxidU4TaiMYkA29zt95vJECgy9fvnSExavZtQNW59ytnElGA8AKppdihIQTaGNRbBtRsrQ9VUkJdA1uhCwwey1p59W5EnEP8phekhwklL7S38gAUCAWV5BNEK/NAmNaSo0caeL6WSSMdfnvohGPQCfKRkAQzzPm2ONyIf0nok5c2CyJCxOEiEoX/A41B9lqQjQF8XhcyE0i+J2By7hwgcSFCZgZuk6KCzvz3gl0LPF0XCZGOt8NMue4AjM5IzlIGHZcaMAtgyvQiSihfoG+FAbx2utC+h8X5smRxvSS5Y6qAcaF9nsn4rUuA1mTWwjL4hnEsn3daWszw6oBsNYLrR6LrcSFX4+iEgjF1fy2NfNlXAhbXGhZQx53RIdYzBZogHhZACWhmT3jwhjFsq1ALGYLNIFrtHIWAQGBYCF2JwgICOIJCAjiCQgICOIJCAjiCQgICOIJCAjiCQgIeOD/AwDI01I+Fnp+ZwAAAABJRU5ErkJggg=="},3155:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/saxsys_logo-9586022129a4e22597f0771c68d11d42.jpg"},2753:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/wjax21_banner-7ccb9feb88e112d9494f555db2c363d0.jpg"},2398:function(t,e,n){"use strict";n.r(e),e.default=n.p+"static/zeiss-logo-rgb-7d623d17dbef71d31522f884205cdece.png"},7462:function(t,e,n){"use strict";function a(){return a=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(t[a]=n[a])}return t},a.apply(this,arguments)}n.d(e,{Z:function(){return a}})},3366:function(t,e,n){"use strict";function a(t,e){if(null==t)return{};var n,a,r={},i=Object.keys(t);for(a=0;a<i.length;a++)n=i[a],e.indexOf(n)>=0||(r[n]=t[n]);return r}n.d(e,{Z:function(){return a}})}}]); -//# sourceMappingURL=commons-f537f61ffd60a999026d.js.map \ No newline at end of file diff --git a/commons-f537f61ffd60a999026d.js.map b/commons-f537f61ffd60a999026d.js.map deleted file mode 100644 index 1973537f5..000000000 --- a/commons-f537f61ffd60a999026d.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"commons-f537f61ffd60a999026d.js","mappings":"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,IAA0B,6GCAzC,UAAe,IAA0B,6GCAzC,UAAe,IAA0B,6GCAzC,UAAe,IAA0B,6GCAzC,UAAe,IAA0B,iHCAzC,UAAe,IAA0B,qGCAzC,UAAe,IAA0B,qGCAzC,UAAe,IAA0B,qGCAzC,UAAe,IAA0B,qGCAzC,UAAe,IAA0B,mGCAzC,UAAe,IAA0B,wGCAzC,UAAe,IAA0B,wGCAzC,UAAe,IAA0B,wGCAzC,UAAe,IAA0B,mGCAzC,UAAe,IAA0B,6FCAzC,kzKCAA,UAAe,IAA0B,wGCAzC,UAAe,IAA0B,0GCAzC,UAAe,IAA0B,yGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,0GCAzC,UAAe,IAA0B,sGCAzC,UAAe,IAA0B,oGCAzC,UAAe,IAA0B,wGCAzC,UAAe,IAA0B,qGCAzC,UAAe,IAA0B,0GCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,sGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,oGCAzC,UAAe,IAA0B,qGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,2GCAzC,UAAe,IAA0B,oGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,oGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,sGCAzC,UAAe,IAA0B,wGCAzC,UAAe,IAA0B,2GCAzC,UAAe,IAA0B,wGCAzC,UAAe,IAA0B,yGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,qGCAzC,UAAe,IAA0B,oGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,yGCAzC,UAAe,IAA0B,yGCAzC,UAAe,IAA0B,sGCAzC,UAAe,IAA0B,wGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,yGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,qGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,sGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,UAAe,IAA0B,uGCAzC,y0TCAA,UAAe,IAA0B,oGCAzC,UAAe,IAA0B,sGCAzC,UAAe,IAA0B,gGCA1B,SAASxW,IAYtB,OAXAA,EAAWzD,OAAO0D,OAAS1D,OAAO0D,OAAOic,OAAS,SAAUhd,GAC1D,IAAK,IAAIE,EAAI,EAAGA,EAAIc,UAAUb,OAAQD,IAAK,CACzC,IAAIe,EAASD,UAAUd,GACvB,IAAK,IAAIO,KAAOQ,EACV5D,OAAOwD,UAAUK,eAAeC,KAAKF,EAAQR,KAC/CT,EAAOS,GAAOQ,EAAOR,GAG3B,CACA,OAAOT,CACT,EACOc,EAAS0Y,MAAMxI,KAAMhQ,UAC9B,oECbe,SAASipB,EAA8BhpB,EAAQ8oB,GAC5D,GAAc,MAAV9oB,EAAgB,MAAO,CAAC,EAC5B,IAEIR,EAAKP,EAFLF,EAAS,CAAC,EACVgqB,EAAa3sB,OAAOD,KAAK6D,GAE7B,IAAKf,EAAI,EAAGA,EAAI8pB,EAAW7pB,OAAQD,IACjCO,EAAMupB,EAAW9pB,GACb6pB,EAAS5qB,QAAQsB,IAAQ,IAC7BT,EAAOS,GAAOQ,EAAOR,IAEvB,OAAOT,CACT","sources":["webpack://jug-goerlitz/./content/images/ sync ^\\.\\/.*$","webpack://jug-goerlitz/./node_modules/@fortawesome/fontawesome/index.es.js","webpack://jug-goerlitz/./node_modules/@fortawesome/fontawesome-svg-core/index.mjs","webpack://jug-goerlitz/./node_modules/@fortawesome/react-fontawesome/index.es.js","webpack://jug-goerlitz/./node_modules/classnames/index.js","webpack://jug-goerlitz/./node_modules/dom-helpers/class/addClass.js","webpack://jug-goerlitz/./node_modules/dom-helpers/class/hasClass.js","webpack://jug-goerlitz/./node_modules/dom-helpers/class/removeClass.js","webpack://jug-goerlitz/./.cache/react-lifecycles-compat.js","webpack://jug-goerlitz/./node_modules/reactstrap/es/NavItem.js","webpack://jug-goerlitz/./node_modules/reactstrap/es/NavLink.js","webpack://jug-goerlitz/./node_modules/reactstrap/es/Navbar.js","webpack://jug-goerlitz/./node_modules/reactstrap/es/NavbarBrand.js","webpack://jug-goerlitz/./node_modules/reactstrap/es/NavbarToggler.js","webpack://jug-goerlitz/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://jug-goerlitz/./node_modules/reactstrap/es/Collapse.js","webpack://jug-goerlitz/./node_modules/reactstrap/es/Nav.js","webpack://jug-goerlitz/./src/components/page-header.tsx","webpack://jug-goerlitz/./src/components/page-footer.tsx","webpack://jug-goerlitz/./src/components/sidebar.tsx","webpack://jug-goerlitz/./src/components/layout.tsx","webpack://jug-goerlitz/./node_modules/react-transition-group/CSSTransition.js","webpack://jug-goerlitz/./node_modules/react-transition-group/ReplaceTransition.js","webpack://jug-goerlitz/./node_modules/react-transition-group/Transition.js","webpack://jug-goerlitz/./node_modules/react-transition-group/TransitionGroup.js","webpack://jug-goerlitz/./node_modules/react-transition-group/TransitionGroupContext.js","webpack://jug-goerlitz/./node_modules/react-transition-group/index.js","webpack://jug-goerlitz/./node_modules/react-transition-group/utils/ChildMapping.js","webpack://jug-goerlitz/./node_modules/react-transition-group/utils/PropTypes.js","webpack://jug-goerlitz/./node_modules/reactstrap/es/Col.js","webpack://jug-goerlitz/./node_modules/reactstrap/es/Container.js","webpack://jug-goerlitz/./node_modules/reactstrap/es/Row.js","webpack://jug-goerlitz/./node_modules/reactstrap/es/utils.js","webpack://jug-goerlitz/./content/images/35c3-congress-everywhere.png","webpack://jug-goerlitz/./content/images/WJAX_2019_266x145.jpg","webpack://jug-goerlitz/./content/images/banner_javaland_2023.jpg","webpack://jug-goerlitz/./content/images/banner_jax_2023.jpg","webpack://jug-goerlitz/./content/images/banner_jug_saxony_day_2022.png","webpack://jug-goerlitz/./content/images/banner_wjax_2022.jpg","webpack://jug-goerlitz/./content/images/entwickler_tutorials_logo.jpg","webpack://jug-goerlitz/./content/images/grillen.jpg","webpack://jug-goerlitz/./content/images/icon.png","webpack://jug-goerlitz/./content/images/javaland_2019_banner.jpg","webpack://jug-goerlitz/./content/images/javaland_2020_banner.jpg","webpack://jug-goerlitz/./content/images/javaland_2022_banner.jpg","webpack://jug-goerlitz/./content/images/javaland_2024_banner.jpg","webpack://jug-goerlitz/./content/images/javaland_2024_banner_big.jpg","webpack://jug-goerlitz/./content/images/jax19_banner.jpg","webpack://jug-goerlitz/./content/images/jax20_banner.jpg","webpack://jug-goerlitz/./content/images/jax21_banner.jpg","webpack://jug-goerlitz/./content/images/jax22_banner.jpg","webpack://jug-goerlitz/./content/images/jax_banner.png","webpack://jug-goerlitz/./content/images/jdd_2022_banner.png","webpack://jug-goerlitz/./content/images/jdd_2023_banner.jpg","webpack://jug-goerlitz/./content/images/kickerking_logo.jpg","webpack://jug-goerlitz/./content/images/lernfabrik.png","webpack://jug-goerlitz/./content/images/logo.png","webpack://jug-goerlitz/./content/images/mitp_logo.jpeg","webpack://jug-goerlitz/./content/images/mitp_logo_gross.png","webpack://jug-goerlitz/./content/images/persons/christian_kuemmel.jpg","webpack://jug-goerlitz/./content/images/persons/christoph_menzel.png","webpack://jug-goerlitz/./content/images/persons/damian_dudziec.png","webpack://jug-goerlitz/./content/images/persons/daniel_fesenmeyer.jpg","webpack://jug-goerlitz/./content/images/persons/daniel_sulyok.jpg","webpack://jug-goerlitz/./content/images/persons/denny.israel.jpg","webpack://jug-goerlitz/./content/images/persons/gerrit_grunwald.jpg","webpack://jug-goerlitz/./content/images/persons/gregor_trefs.png","webpack://jug-goerlitz/./content/images/persons/hannes_kretschmer.jpg","webpack://jug-goerlitz/./content/images/persons/hendrik_ebbers.png","webpack://jug-goerlitz/./content/images/persons/jens_leuschner.jpg","webpack://jug-goerlitz/./content/images/persons/joerg_laessig.jpg","webpack://jug-goerlitz/./content/images/persons/lars_roewekamp.png","webpack://jug-goerlitz/./content/images/persons/maik_wagner.jpg","webpack://jug-goerlitz/./content/images/persons/manuel_mauky.jpg","webpack://jug-goerlitz/./content/images/persons/marco_gotthans.png","webpack://jug-goerlitz/./content/images/persons/mariusz_zienkiewicz.jpg","webpack://jug-goerlitz/./content/images/persons/markus_kett.png","webpack://jug-goerlitz/./content/images/persons/markus_ullrich.jpg","webpack://jug-goerlitz/./content/images/persons/markus_weiland.jpg","webpack://jug-goerlitz/./content/images/persons/marlene_knoche.jpg","webpack://jug-goerlitz/./content/images/persons/max_wielsch.jpg","webpack://jug-goerlitz/./content/images/persons/michael_hunger.png","webpack://jug-goerlitz/./content/images/persons/michael_simons.jpg","webpack://jug-goerlitz/./content/images/persons/nico_foerster.jpg","webpack://jug-goerlitz/./content/images/persons/oliver_drotbohm.png","webpack://jug-goerlitz/./content/images/persons/patryk_lewandowski.jpg","webpack://jug-goerlitz/./content/images/persons/pawel_adaszewski.jpg","webpack://jug-goerlitz/./content/images/persons/roland_weisleder.jpg","webpack://jug-goerlitz/./content/images/persons/sergej_tihonov.jpg","webpack://jug-goerlitz/./content/images/persons/simon_roloff.png","webpack://jug-goerlitz/./content/images/persons/stefan_bley.jpg","webpack://jug-goerlitz/./content/images/persons/stefan_zoerner.jpg","webpack://jug-goerlitz/./content/images/persons/stefan_zoerner_2.jpg","webpack://jug-goerlitz/./content/images/persons/stephan_strehler.jpg","webpack://jug-goerlitz/./content/images/persons/sven_hoffmann.jpg","webpack://jug-goerlitz/./content/images/persons/thilo_frotscher.jpg","webpack://jug-goerlitz/./content/images/persons/uwe_manteuffel.jpg","webpack://jug-goerlitz/./content/images/persons/wolfgang_weigend.jpg","webpack://jug-goerlitz/./content/images/posters/plakat_2016_01.png","webpack://jug-goerlitz/./content/images/posters/plakat_2016_03.png","webpack://jug-goerlitz/./content/images/posters/plakat_2016_05.png","webpack://jug-goerlitz/./content/images/posters/plakat_2016_09.png","webpack://jug-goerlitz/./content/images/posters/plakat_2016_11.png","webpack://jug-goerlitz/./content/images/posters/plakat_2017_01.png","webpack://jug-goerlitz/./content/images/posters/plakat_2017_02.png","webpack://jug-goerlitz/./content/images/posters/plakat_2017_03.png","webpack://jug-goerlitz/./content/images/posters/plakat_2017_04.png","webpack://jug-goerlitz/./content/images/posters/plakat_2017_05.png","webpack://jug-goerlitz/./content/images/posters/plakat_2017_07.png","webpack://jug-goerlitz/./content/images/posters/plakat_2017_10.png","webpack://jug-goerlitz/./content/images/posters/plakat_2017_11.png","webpack://jug-goerlitz/./content/images/posters/plakat_2018_01.png","webpack://jug-goerlitz/./content/images/posters/plakat_2018_02.png","webpack://jug-goerlitz/./content/images/posters/plakat_2018_03.png","webpack://jug-goerlitz/./content/images/posters/plakat_2018_04.png","webpack://jug-goerlitz/./content/images/posters/plakat_2018_05.png","webpack://jug-goerlitz/./content/images/posters/plakat_2018_06.png","webpack://jug-goerlitz/./content/images/posters/plakat_2018_09.png","webpack://jug-goerlitz/./content/images/posters/plakat_2018_11.png","webpack://jug-goerlitz/./content/images/posters/plakat_2019_01.png","webpack://jug-goerlitz/./content/images/posters/plakat_2019_02.png","webpack://jug-goerlitz/./content/images/posters/plakat_2019_03.png","webpack://jug-goerlitz/./content/images/posters/plakat_2019_04.png","webpack://jug-goerlitz/./content/images/posters/plakat_2019_05.png","webpack://jug-goerlitz/./content/images/posters/plakat_2019_06.png","webpack://jug-goerlitz/./content/images/posters/plakat_2019_11.png","webpack://jug-goerlitz/./content/images/posters/plakat_2020-01.png","webpack://jug-goerlitz/./content/images/posters/plakat_2020_04.png","webpack://jug-goerlitz/./content/images/posters/plakat_2020_07.png","webpack://jug-goerlitz/./content/images/posters/plakat_2020_11.png","webpack://jug-goerlitz/./content/images/posters/plakat_2021_01.png","webpack://jug-goerlitz/./content/images/posters/plakat_2021_06.png","webpack://jug-goerlitz/./content/images/posters/plakat_2022_06.png","webpack://jug-goerlitz/./content/images/posters/plakat_2022_10.png","webpack://jug-goerlitz/./content/images/posters/plakat_2022_11.png","webpack://jug-goerlitz/./content/images/posters/plakat_2023_01.png","webpack://jug-goerlitz/./content/images/posters/plakat_2023_02.png","webpack://jug-goerlitz/./content/images/posters/plakat_2023_03.png","webpack://jug-goerlitz/./content/images/posters/plakat_2023_04.png","webpack://jug-goerlitz/./content/images/posters/plakat_2023_05.png","webpack://jug-goerlitz/./content/images/posters/plakat_2023_06.png","webpack://jug-goerlitz/./content/images/posters/plakat_2023_09.png","webpack://jug-goerlitz/./content/images/posters/plakat_2023_10.png","webpack://jug-goerlitz/./content/images/posters/plakat_2023_11.png","webpack://jug-goerlitz/./content/images/sands_logo.png","webpack://jug-goerlitz/./content/images/saxsys_logo.jpg","webpack://jug-goerlitz/./content/images/wjax21_banner.jpg","webpack://jug-goerlitz/./content/images/zeiss-logo-rgb.png","webpack://jug-goerlitz/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://jug-goerlitz/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"],"sourcesContent":["var map = {\n\t\"./35c3-congress-everywhere.png\": 8700,\n\t\"./WJAX_2019_266x145.jpg\": 6724,\n\t\"./banner_javaland_2023.jpg\": 4366,\n\t\"./banner_jax_2023.jpg\": 9101,\n\t\"./banner_jug_saxony_day_2022.png\": 9438,\n\t\"./banner_wjax_2022.jpg\": 8337,\n\t\"./entwickler_tutorials_logo.jpg\": 8799,\n\t\"./grillen.jpg\": 4661,\n\t\"./icon.png\": 9435,\n\t\"./javaland_2019_banner.jpg\": 4652,\n\t\"./javaland_2020_banner.jpg\": 8735,\n\t\"./javaland_2022_banner.jpg\": 6365,\n\t\"./javaland_2024_banner.jpg\": 2295,\n\t\"./javaland_2024_banner_big.jpg\": 4059,\n\t\"./jax19_banner.jpg\": 1974,\n\t\"./jax20_banner.jpg\": 6846,\n\t\"./jax21_banner.jpg\": 2713,\n\t\"./jax22_banner.jpg\": 7425,\n\t\"./jax_banner.png\": 6956,\n\t\"./jdd_2022_banner.png\": 6331,\n\t\"./jdd_2023_banner.jpg\": 8618,\n\t\"./kickerking_logo.jpg\": 2607,\n\t\"./lernfabrik.png\": 6462,\n\t\"./logo.png\": 5921,\n\t\"./mitp_logo.jpeg\": 2377,\n\t\"./mitp_logo_gross.png\": 3087,\n\t\"./persons/christian_kuemmel.jpg\": 2186,\n\t\"./persons/christoph_menzel.png\": 9429,\n\t\"./persons/damian_dudziec.png\": 4160,\n\t\"./persons/daniel_fesenmeyer.jpg\": 2779,\n\t\"./persons/daniel_sulyok.jpg\": 2258,\n\t\"./persons/denny.israel.jpg\": 9880,\n\t\"./persons/gerrit_grunwald.jpg\": 650,\n\t\"./persons/gregor_trefs.png\": 3887,\n\t\"./persons/hannes_kretschmer.jpg\": 8807,\n\t\"./persons/hendrik_ebbers.png\": 7883,\n\t\"./persons/jens_leuschner.jpg\": 6775,\n\t\"./persons/joerg_laessig.jpg\": 9284,\n\t\"./persons/lars_roewekamp.png\": 1266,\n\t\"./persons/maik_wagner.jpg\": 6459,\n\t\"./persons/manuel_mauky.jpg\": 3022,\n\t\"./persons/marco_gotthans.png\": 1096,\n\t\"./persons/mariusz_zienkiewicz.jpg\": 1226,\n\t\"./persons/markus_kett.png\": 258,\n\t\"./persons/markus_ullrich.jpg\": 9773,\n\t\"./persons/markus_weiland.jpg\": 3545,\n\t\"./persons/marlene_knoche.jpg\": 1905,\n\t\"./persons/max_wielsch.jpg\": 8662,\n\t\"./persons/michael_hunger.png\": 8294,\n\t\"./persons/michael_simons.jpg\": 6371,\n\t\"./persons/nico_foerster.jpg\": 3030,\n\t\"./persons/oliver_drotbohm.png\": 6664,\n\t\"./persons/patryk_lewandowski.jpg\": 6345,\n\t\"./persons/pawel_adaszewski.jpg\": 7102,\n\t\"./persons/roland_weisleder.jpg\": 369,\n\t\"./persons/sergej_tihonov.jpg\": 3955,\n\t\"./persons/simon_roloff.png\": 2947,\n\t\"./persons/stefan_bley.jpg\": 3017,\n\t\"./persons/stefan_zoerner.jpg\": 7489,\n\t\"./persons/stefan_zoerner_2.jpg\": 5267,\n\t\"./persons/stephan_strehler.jpg\": 1946,\n\t\"./persons/sven_hoffmann.jpg\": 8576,\n\t\"./persons/thilo_frotscher.jpg\": 1626,\n\t\"./persons/uwe_manteuffel.jpg\": 4984,\n\t\"./persons/wolfgang_weigend.jpg\": 4189,\n\t\"./posters/plakat_2016_01.png\": 1941,\n\t\"./posters/plakat_2016_03.png\": 2601,\n\t\"./posters/plakat_2016_05.png\": 6337,\n\t\"./posters/plakat_2016_09.png\": 6223,\n\t\"./posters/plakat_2016_11.png\": 3895,\n\t\"./posters/plakat_2017_01.png\": 7738,\n\t\"./posters/plakat_2017_02.png\": 9474,\n\t\"./posters/plakat_2017_03.png\": 6059,\n\t\"./posters/plakat_2017_04.png\": 4076,\n\t\"./posters/plakat_2017_05.png\": 4087,\n\t\"./posters/plakat_2017_07.png\": 2195,\n\t\"./posters/plakat_2017_10.png\": 7189,\n\t\"./posters/plakat_2017_11.png\": 4092,\n\t\"./posters/plakat_2018_01.png\": 1584,\n\t\"./posters/plakat_2018_02.png\": 4466,\n\t\"./posters/plakat_2018_03.png\": 1440,\n\t\"./posters/plakat_2018_04.png\": 3211,\n\t\"./posters/plakat_2018_05.png\": 9378,\n\t\"./posters/plakat_2018_06.png\": 2757,\n\t\"./posters/plakat_2018_09.png\": 4566,\n\t\"./posters/plakat_2018_11.png\": 6686,\n\t\"./posters/plakat_2019_01.png\": 4633,\n\t\"./posters/plakat_2019_02.png\": 3019,\n\t\"./posters/plakat_2019_03.png\": 4843,\n\t\"./posters/plakat_2019_04.png\": 3792,\n\t\"./posters/plakat_2019_05.png\": 9108,\n\t\"./posters/plakat_2019_06.png\": 56,\n\t\"./posters/plakat_2019_11.png\": 5172,\n\t\"./posters/plakat_2020-01.png\": 6619,\n\t\"./posters/plakat_2020_04.png\": 6328,\n\t\"./posters/plakat_2020_07.png\": 3302,\n\t\"./posters/plakat_2020_11.png\": 6436,\n\t\"./posters/plakat_2021_01.png\": 6807,\n\t\"./posters/plakat_2021_06.png\": 2318,\n\t\"./posters/plakat_2022_06.png\": 4884,\n\t\"./posters/plakat_2022_10.png\": 4832,\n\t\"./posters/plakat_2022_11.png\": 5646,\n\t\"./posters/plakat_2023_01.png\": 8325,\n\t\"./posters/plakat_2023_02.png\": 1461,\n\t\"./posters/plakat_2023_03.png\": 9750,\n\t\"./posters/plakat_2023_04.png\": 7035,\n\t\"./posters/plakat_2023_05.png\": 9907,\n\t\"./posters/plakat_2023_06.png\": 509,\n\t\"./posters/plakat_2023_09.png\": 5871,\n\t\"./posters/plakat_2023_10.png\": 4881,\n\t\"./posters/plakat_2023_11.png\": 2820,\n\t\"./sands_logo.png\": 6702,\n\t\"./saxsys_logo.jpg\": 3155,\n\t\"./wjax21_banner.jpg\": 2753,\n\t\"./zeiss-logo-rgb.png\": 2398\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 8697;","/*!\n * Font Awesome Free 5.0.13 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\nvar noop = function noop() {};\n\nvar _WINDOW = {};\nvar _DOCUMENT = {};\nvar _MUTATION_OBSERVER$1 = null;\nvar _PERFORMANCE = { mark: noop, measure: noop };\n\ntry {\n if (typeof window !== 'undefined') _WINDOW = window;\n if (typeof document !== 'undefined') _DOCUMENT = document;\n if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER$1 = MutationObserver;\n if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\n\nvar _ref = _WINDOW.navigator || {};\nvar _ref$userAgent = _ref.userAgent;\nvar userAgent = _ref$userAgent === undefined ? '' : _ref$userAgent;\n\nvar WINDOW = _WINDOW;\nvar DOCUMENT = _DOCUMENT;\nvar MUTATION_OBSERVER = _MUTATION_OBSERVER$1;\nvar PERFORMANCE = _PERFORMANCE;\nvar IS_BROWSER = !!WINDOW.document;\nvar IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nvar IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_FAMILY_PREFIX = 'fa';\nvar DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nvar DATA_FA_I2SVG = 'data-fa-i2svg';\nvar DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nvar HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\n\nvar PRODUCTION = function () {\n try {\n return process.env.NODE_ENV === 'production';\n } catch (e) {\n return false;\n }\n}();\n\nvar oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);\n\nvar ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\n\nvar RESERVED_CLASSES = ['xs', 'sm', 'lg', 'fw', 'ul', 'li', 'border', 'pull-left', 'pull-right', 'spin', 'pulse', 'rotate-90', 'rotate-180', 'rotate-270', 'flip-horizontal', 'flip-vertical', 'stack', 'stack-1x', 'stack-2x', 'inverse', 'layers', 'layers-text', 'layers-counter'].concat(oneToTen.map(function (n) {\n return n + 'x';\n})).concat(oneToTwenty.map(function (n) {\n return 'w-' + n;\n}));\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\nvar initial = WINDOW.FontAwesomeConfig || {};\nvar initialKeys = Object.keys(initial);\n\nvar _default = _extends({\n familyPrefix: DEFAULT_FAMILY_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n}, initial);\n\nif (!_default.autoReplaceSvg) _default.observeMutations = false;\n\nvar config$1 = _extends({}, _default);\n\nWINDOW.FontAwesomeConfig = config$1;\n\nfunction update(newConfig) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$asNewDefault = params.asNewDefault,\n asNewDefault = _params$asNewDefault === undefined ? false : _params$asNewDefault;\n\n var validKeys = Object.keys(config$1);\n var ok = asNewDefault ? function (k) {\n return ~validKeys.indexOf(k) && !~initialKeys.indexOf(k);\n } : function (k) {\n return ~validKeys.indexOf(k);\n };\n\n Object.keys(newConfig).forEach(function (configKey) {\n if (ok(configKey)) config$1[configKey] = newConfig[configKey];\n });\n}\n\nfunction auto(value) {\n update({\n autoReplaceSvg: value,\n observeMutations: value\n });\n}\n\nvar w = WINDOW || {};\n\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\n\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nvar domready = function (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n};\n\nvar d = UNITS_IN_GRID;\n\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\n\nfunction bunker(fn) {\n try {\n fn();\n } catch (e) {\n if (!PRODUCTION) {\n throw e;\n }\n }\n}\n\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n\n return css;\n}\n\nvar _uniqueId = 0;\n\nfunction nextUniqueId() {\n _uniqueId++;\n\n return _uniqueId;\n}\n\nfunction toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\n\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\n\nfunction getIconName(familyPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\n\nfunction htmlEscape(str) {\n return ('' + str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(/</g, '<').replace(/>/g, '>');\n}\n\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + (attributeName + '=\"' + htmlEscape(attributes[attributeName]) + '\" ');\n }, '').trim();\n}\n\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + (styleName + ': ' + styles[styleName] + ';');\n }, '');\n}\n\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\n\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n\n var outer = {\n transform: 'translate(' + containerWidth / 2 + ' 256)'\n };\n var innerTranslate = 'translate(' + transform.x * 32 + ', ' + transform.y * 32 + ') ';\n var innerScale = 'scale(' + transform.size / 16 * (transform.flipX ? -1 : 1) + ', ' + transform.size / 16 * (transform.flipY ? -1 : 1) + ') ';\n var innerRotate = 'rotate(' + transform.rotate + ' 0 0)';\n var inner = {\n transform: innerTranslate + ' ' + innerScale + ' ' + innerRotate\n };\n var path = {\n transform: 'translate(' + iconWidth / 2 * -1 + ' -256)'\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\n\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === undefined ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === undefined ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === undefined ? false : _ref2$startCentered;\n\n var val = '';\n\n if (startCentered && IS_IE) {\n val += 'translate(' + (transform.x / d - width / 2) + 'em, ' + (transform.y / d - height / 2) + 'em) ';\n } else if (startCentered) {\n val += 'translate(calc(-50% + ' + transform.x / d + 'em), calc(-50% + ' + transform.y / d + 'em)) ';\n } else {\n val += 'translate(' + transform.x / d + 'em, ' + transform.y / d + 'em) ';\n }\n\n val += 'scale(' + transform.size / d * (transform.flipX ? -1 : 1) + ', ' + transform.size / d * (transform.flipY ? -1 : 1) + ') ';\n val += 'rotate(' + transform.rotate + 'deg) ';\n\n return val;\n}\n\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nvar makeIconMasking = function (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n\n\n var trans = transformForSvg({ transform: transform, containerWidth: maskWidth, iconWidth: mainWidth });\n\n var maskRect = {\n tag: 'rect',\n attributes: _extends({}, ALL_SPACE, {\n fill: 'white'\n })\n };\n var maskInnerGroup = {\n tag: 'g',\n attributes: _extends({}, trans.inner),\n children: [{ tag: 'path', attributes: _extends({}, mainPath.attributes, trans.path, { fill: 'black' }) }]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _extends({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = 'mask-' + nextUniqueId();\n var clipId = 'clip-' + nextUniqueId();\n var maskTag = {\n tag: 'mask',\n attributes: _extends({}, ALL_SPACE, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{ tag: 'clipPath', attributes: { id: clipId }, children: [maskPath] }, maskTag]\n };\n\n children.push(defs, { tag: 'rect', attributes: _extends({ fill: 'currentColor', 'clip-path': 'url(#' + clipId + ')', mask: 'url(#' + maskId + ')' }, ALL_SPACE) });\n\n return {\n children: children,\n attributes: attributes\n };\n};\n\nvar makeIconStandard = function (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n transform = _ref.transform,\n styles = _ref.styles;\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n if (transformIsMeaningful(transform)) {\n var trans = transformForSvg({ transform: transform, containerWidth: main.width, iconWidth: main.width });\n children.push({\n tag: 'g',\n attributes: _extends({}, trans.outer),\n children: [{\n tag: 'g',\n attributes: _extends({}, trans.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _extends({}, main.icon.attributes, trans.path)\n }]\n }]\n });\n } else {\n children.push(main.icon);\n }\n\n return {\n children: children,\n attributes: attributes\n };\n};\n\nvar asIcon = function (_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_extends({}, styles, {\n 'transform-origin': offset.x + transform.x / 16 + 'em ' + (offset.y + transform.y / 16) + 'em'\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n};\n\nvar asSymbol = function (_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n\n var id = symbol === true ? prefix + '-' + config$1.familyPrefix + '-' + iconName : symbol;\n\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _extends({}, attributes, { id: id }),\n children: children\n }]\n }];\n};\n\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === undefined ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var widthClass = 'fa-w-' + Math.ceil(width / height * 16);\n var attrClass = [config$1.replacementClass, iconName ? config$1.familyPrefix + '-' + iconName : '', widthClass].concat(extra.classes).join(' ');\n\n var content = {\n children: [],\n attributes: _extends({}, extra.attributes, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': '0 0 ' + width + ' ' + height\n })\n };\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) content.children.push({ tag: 'title', attributes: { id: content.attributes['aria-labelledby'] || 'title-' + nextUniqueId() }, children: [title] });\n\n var args = _extends({}, content, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n transform: transform,\n symbol: symbol,\n styles: extra.styles\n });\n\n var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\n\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === undefined ? false : _params$watchable2;\n\n\n var attributes = _extends({}, extra.attributes, title ? { 'title': title } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _extends({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({ transform: transform, startCentered: true, width: width, height: height });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({ tag: 'span', attributes: { class: 'sr-only' }, children: [title] });\n }\n\n return val;\n}\n\nvar noop$2 = function noop() {};\nvar p = config$1.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : { mark: noop$2, measure: noop$2 };\nvar preamble = 'FA \"5.0.13\"';\n\nvar begin = function begin(name) {\n p.mark(preamble + ' ' + name + ' begins');\n return function () {\n return end(name);\n };\n};\n\nvar end = function end(name) {\n p.mark(preamble + ' ' + name + ' ends');\n p.measure(preamble + ' ' + name, preamble + ' ' + name + ' begins', preamble + ' ' + name + ' ends');\n};\n\nvar perf = { begin: begin, end: end };\n\n'use strict';\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\nvar bindInternal4 = function bindInternal4 (func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n'use strict';\n\n\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\nvar reduce = function fastReduceObject (subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i, key, result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n }\n else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\nvar styles$2 = namespace.styles;\nvar shims = namespace.shims;\n\n\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\n\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles$2, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n acc[icon[3]] = iconName;\n\n return acc;\n });\n\n _byLigature = lookup(function (acc, icon, iconName) {\n var ligatures = icon[2];\n\n acc[iconName] = iconName;\n\n ligatures.forEach(function (ligature) {\n acc[ligature] = iconName;\n });\n\n return acc;\n });\n\n var hasRegular = 'far' in styles$2;\n\n _byOldName = reduce(shims, function (acc, shim) {\n var oldName = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n acc[oldName] = { prefix: prefix, iconName: iconName };\n\n return acc;\n }, {});\n};\n\nbuild();\n\nfunction byUnicode(prefix, unicode) {\n return _byUnicode[prefix][unicode];\n}\n\nfunction byLigature(prefix, ligature) {\n return _byLigature[prefix][ligature];\n}\n\nfunction byOldName(name) {\n return _byOldName[name] || { prefix: null, iconName: null };\n}\n\nvar styles$1 = namespace.styles;\n\n\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return { prefix: null, iconName: null, rest: [] };\n};\n\nfunction getCanonicalIcon(values) {\n return values.reduce(function (acc, cls) {\n var iconName = getIconName(config$1.familyPrefix, cls);\n\n if (styles$1[cls]) {\n acc.prefix = cls;\n } else if (iconName) {\n var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};\n\n acc.iconName = shim.iconName || iconName;\n acc.prefix = shim.prefix || acc.prefix;\n } else if (cls !== config$1.replacementClass && cls.indexOf('fa-w-') !== 0) {\n acc.rest.push(cls);\n }\n\n return acc;\n }, emptyCanonicalIcon());\n}\n\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === undefined ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === undefined ? [] : _abstractNodes$childr;\n\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return '<' + tag + ' ' + joinAttributes(attributes) + '>' + children.map(toHtml).join('') + '</' + tag + '>';\n }\n}\n\nvar noop$1 = function noop() {};\n\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n\n return typeof i2svg === 'string';\n}\n\nfunction getMutator() {\n if (config$1.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config$1.autoReplaceSvg];\n\n return mutator || mutators.replace;\n}\n\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n var abstract = mutation[1];\n var newOuterHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n\n if (node.parentNode && node.outerHTML) {\n node.outerHTML = newOuterHTML + (config$1.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? '<!-- ' + node.outerHTML + ' -->' : '');\n } else if (node.parentNode) {\n var newNode = document.createElement('span');\n node.parentNode.replaceChild(newNode, node);\n newNode.outerHTML = newOuterHTML;\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var abstract = mutation[1];\n\n // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n if (~classArray(node).indexOf(config$1.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(config$1.familyPrefix + '-.*');\n\n delete abstract[0].attributes.style;\n\n var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config$1.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, { toNode: [], toSvg: [] });\n\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n\n var newInnerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.setAttribute('class', splitClasses.toNode.join(' '));\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$1;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = WINDOW.requestAnimationFrame || function (op) {\n return op();\n };\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n\n mutations.map(mutator);\n\n mark();\n\n callbackFunction();\n });\n }\n}\n\nvar disabled = false;\n\nfunction disableObservation(operation) {\n disabled = true;\n operation();\n disabled = false;\n}\n\nvar mo = null;\n\nfunction observe(options) {\n if (!MUTATION_OBSERVER) return;\n\n var treeCallback = options.treeCallback,\n nodeCallback = options.nodeCallback,\n pseudoElementsCallback = options.pseudoElementsCallback;\n\n\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config$1.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config$1.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class') {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);\n if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);\n } else {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n\n if (!IS_DOM) return;\n\n mo.observe(DOCUMENT.getElementsByTagName('body')[0], {\n childList: true, attributes: true, characterData: true, subtree: true\n });\n}\n\nfunction disconnect() {\n if (!mo) return;\n\n mo.disconnect();\n}\n\nvar styleParser = function (node) {\n var style = node.getAttribute('style');\n\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n};\n\nfunction toHex(unicode) {\n var result = '';\n\n for (var i = 0; i < unicode.length; i++) {\n var hex = unicode.charCodeAt(i).toString(16);\n result += ('000' + hex).slice(-4);\n }\n\n return result;\n}\n\nvar classParser = function (node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n\n var val = getCanonicalIcon(classArray(node));\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.prefix && innerText.length > 1) {\n val.iconName = byLigature(val.prefix, node.innerText);\n } else if (val.prefix && innerText.length === 1) {\n val.iconName = byUnicode(val.prefix, toHex(node.innerText));\n }\n\n return val;\n};\n\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n\n if (!transformString) {\n return transform;\n } else {\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n case 'left':\n acc.x = acc.x - rest;\n break;\n case 'right':\n acc.x = acc.x + rest;\n break;\n case 'up':\n acc.y = acc.y - rest;\n break;\n case 'down':\n acc.y = acc.y + rest;\n break;\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n }\n};\n\nvar transformParser = function (node) {\n return parseTransformString(node.getAttribute('data-fa-transform'));\n};\n\nvar symbolParser = function (node) {\n var symbol = node.getAttribute('data-fa-symbol');\n\n return symbol === null ? false : symbol === '' ? true : symbol;\n};\n\nvar attributesParser = function (node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n return acc;\n }, {});\n\n var title = node.getAttribute('title');\n\n if (config$1.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = config$1.replacementClass + '-title-' + nextUniqueId();\n } else {\n extraAttributes['aria-hidden'] = 'true';\n }\n }\n\n return extraAttributes;\n};\n\nvar maskParser = function (node) {\n var mask = node.getAttribute('data-fa-mask');\n\n if (!mask) {\n return emptyCanonicalIcon();\n } else {\n return getCanonicalIcon(mask.split(' ').map(function (i) {\n return i.trim();\n }));\n }\n};\n\nfunction parseMeta(node) {\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraStyles = styleParser(node);\n var transform = transformParser(node);\n var symbol = symbolParser(node);\n var extraAttributes = attributesParser(node);\n var mask = maskParser(node);\n\n return {\n iconName: iconName,\n title: node.getAttribute('title'),\n prefix: prefix,\n transform: transform,\n symbol: symbol,\n mask: mask,\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n };\n}\n\nfunction MissingIcon(error) {\n this.name = 'MissingIcon';\n this.message = error || 'Icon unavailable';\n this.stack = new Error().stack;\n}\n\nMissingIcon.prototype = Object.create(Error.prototype);\nMissingIcon.prototype.constructor = MissingIcon;\n\nvar FILL = { fill: 'currentColor' };\nvar ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n};\nvar RING = {\n tag: 'path',\n attributes: _extends({}, FILL, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n};\nvar OPACITY_ANIMATE = _extends({}, ANIMATION_BASE, {\n attributeName: 'opacity'\n});\nvar DOT = {\n tag: 'circle',\n attributes: _extends({}, FILL, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: [{ tag: 'animate', attributes: _extends({}, ANIMATION_BASE, { attributeName: 'r', values: '28;14;28;28;14;28;' }) }, { tag: 'animate', attributes: _extends({}, OPACITY_ANIMATE, { values: '1;0;1;1;0;1;' }) }]\n};\nvar QUESTION = {\n tag: 'path',\n attributes: _extends({}, FILL, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: [{ tag: 'animate', attributes: _extends({}, OPACITY_ANIMATE, { values: '1;0;0;0;0;1;' }) }]\n};\nvar EXCLAMATION = {\n tag: 'path',\n attributes: _extends({}, FILL, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{ tag: 'animate', attributes: _extends({}, OPACITY_ANIMATE, { values: '0;0;1;1;0;0;' }) }]\n};\n\nvar missing = { tag: 'g', children: [RING, DOT, QUESTION, EXCLAMATION] };\n\nvar styles = namespace.styles;\n\nvar LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nvar FONT_FAMILY_PATTERN = /Font Awesome 5 (Solid|Regular|Light|Brands)/;\nvar STYLE_TO_PREFIX = {\n 'Solid': 'fas',\n 'Regular': 'far',\n 'Light': 'fal',\n 'Brands': 'fab'\n};\n\nfunction findIcon(iconName, prefix) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: missing\n };\n\n if (iconName && prefix && styles[prefix] && styles[prefix][iconName]) {\n var icon = styles[prefix][iconName];\n var width = icon[0];\n var height = icon[1];\n var vectorData = icon.slice(4);\n\n val = {\n found: true,\n width: width,\n height: height,\n icon: { tag: 'path', attributes: { fill: 'currentColor', d: vectorData[0] } }\n };\n } else if (iconName && prefix && !config$1.showMissingIcons) {\n throw new MissingIcon('Icon is missing for prefix ' + prefix + ' with icon name ' + iconName);\n }\n\n return val;\n}\n\nfunction generateSvgReplacementMutation(node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n extra = nodeMeta.extra;\n\n\n return [node, makeInlineSvgAbstract({\n icons: {\n main: findIcon(iconName, prefix),\n mask: findIcon(mask.iconName, mask.prefix)\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n mask: mask,\n title: title,\n extra: extra,\n watchable: true\n })];\n}\n\nfunction generateLayersText(node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n\n\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config$1.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return [node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })];\n}\n\nfunction generateMutation(node) {\n var nodeMeta = parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return generateLayersText(node, nodeMeta);\n } else {\n return generateSvgReplacementMutation(node, nodeMeta);\n }\n}\n\nfunction remove(node) {\n if (typeof node.remove === 'function') {\n node.remove();\n } else if (node && node.parentNode) {\n node.parentNode.removeChild(node);\n }\n}\n\nfunction searchPseudoElements(root) {\n if (!IS_DOM) return;\n\n var end = perf.begin('searchPseudoElements');\n\n disableObservation(function () {\n toArray(root.querySelectorAll('*')).forEach(function (node) {\n [':before', ':after'].forEach(function (pos) {\n var styles = WINDOW.getComputedStyle(node, pos);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var children = toArray(node.children);\n var pseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === pos;\n })[0];\n\n if (pseudoElement) {\n if (pseudoElement.nextSibling && pseudoElement.nextSibling.textContent.indexOf(DATA_FA_PSEUDO_ELEMENT) > -1) {\n remove(pseudoElement.nextSibling);\n }\n remove(pseudoElement);\n pseudoElement = null;\n }\n\n if (fontFamily && !pseudoElement) {\n var content = styles.getPropertyValue('content');\n var i = DOCUMENT.createElement('i');\n i.setAttribute('class', '' + STYLE_TO_PREFIX[fontFamily[1]]);\n i.setAttribute(DATA_FA_PSEUDO_ELEMENT, pos);\n i.innerText = content.length === 3 ? content.substr(1, 1) : content;\n if (pos === ':before') {\n node.insertBefore(i, node.firstChild);\n } else {\n node.appendChild(i);\n }\n }\n });\n });\n });\n\n end();\n}\n\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (!IS_DOM) return;\n\n var htmlClassList = DOCUMENT.documentElement.classList;\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(HTML_CLASS_I2SVG_BASE_CLASS + '-' + suffix);\n };\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(HTML_CLASS_I2SVG_BASE_CLASS + '-' + suffix);\n };\n var prefixes = Object.keys(styles);\n var prefixesDomQuery = ['.' + LAYERS_TEXT_CLASSNAME + ':not([' + DATA_FA_I2SVG + '])'].concat(prefixes.map(function (p) {\n return '.' + p + ':not([' + DATA_FA_I2SVG + '])';\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return;\n }\n\n var candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return;\n }\n\n var mark = perf.begin('onTree');\n\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e instanceof MissingIcon) {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n\n mark();\n\n perform(mutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n\n if (typeof callback === 'function') callback();\n });\n}\n\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n var mutation = generateMutation(node);\n\n if (mutation) {\n perform([mutation], callback);\n }\n}\n\nvar baseStyles = \"svg:not(:root).svg-inline--fa {\\n overflow: visible; }\\n\\n.svg-inline--fa {\\n display: inline-block;\\n font-size: inherit;\\n height: 1em;\\n overflow: visible;\\n vertical-align: -.125em; }\\n .svg-inline--fa.fa-lg {\\n vertical-align: -.225em; }\\n .svg-inline--fa.fa-w-1 {\\n width: 0.0625em; }\\n .svg-inline--fa.fa-w-2 {\\n width: 0.125em; }\\n .svg-inline--fa.fa-w-3 {\\n width: 0.1875em; }\\n .svg-inline--fa.fa-w-4 {\\n width: 0.25em; }\\n .svg-inline--fa.fa-w-5 {\\n width: 0.3125em; }\\n .svg-inline--fa.fa-w-6 {\\n width: 0.375em; }\\n .svg-inline--fa.fa-w-7 {\\n width: 0.4375em; }\\n .svg-inline--fa.fa-w-8 {\\n width: 0.5em; }\\n .svg-inline--fa.fa-w-9 {\\n width: 0.5625em; }\\n .svg-inline--fa.fa-w-10 {\\n width: 0.625em; }\\n .svg-inline--fa.fa-w-11 {\\n width: 0.6875em; }\\n .svg-inline--fa.fa-w-12 {\\n width: 0.75em; }\\n .svg-inline--fa.fa-w-13 {\\n width: 0.8125em; }\\n .svg-inline--fa.fa-w-14 {\\n width: 0.875em; }\\n .svg-inline--fa.fa-w-15 {\\n width: 0.9375em; }\\n .svg-inline--fa.fa-w-16 {\\n width: 1em; }\\n .svg-inline--fa.fa-w-17 {\\n width: 1.0625em; }\\n .svg-inline--fa.fa-w-18 {\\n width: 1.125em; }\\n .svg-inline--fa.fa-w-19 {\\n width: 1.1875em; }\\n .svg-inline--fa.fa-w-20 {\\n width: 1.25em; }\\n .svg-inline--fa.fa-pull-left {\\n margin-right: .3em;\\n width: auto; }\\n .svg-inline--fa.fa-pull-right {\\n margin-left: .3em;\\n width: auto; }\\n .svg-inline--fa.fa-border {\\n height: 1.5em; }\\n .svg-inline--fa.fa-li {\\n width: 2em; }\\n .svg-inline--fa.fa-fw {\\n width: 1.25em; }\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0; }\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -.125em;\\n width: 1em; }\\n .fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center; }\\n\\n.fa-layers-text, .fa-layers-counter {\\n display: inline-block;\\n position: absolute;\\n text-align: center; }\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center; }\\n\\n.fa-layers-counter {\\n background-color: #ff253a;\\n border-radius: 1em;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n color: #fff;\\n height: 1.5em;\\n line-height: 1;\\n max-width: 5em;\\n min-width: 1.5em;\\n overflow: hidden;\\n padding: .25em;\\n right: 0;\\n text-overflow: ellipsis;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right; }\\n\\n.fa-layers-bottom-right {\\n bottom: 0;\\n right: 0;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right; }\\n\\n.fa-layers-bottom-left {\\n bottom: 0;\\n left: 0;\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left; }\\n\\n.fa-layers-top-right {\\n right: 0;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right; }\\n\\n.fa-layers-top-left {\\n left: 0;\\n right: auto;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top left;\\n transform-origin: top left; }\\n\\n.fa-lg {\\n font-size: 1.33333em;\\n line-height: 0.75em;\\n vertical-align: -.0667em; }\\n\\n.fa-xs {\\n font-size: .75em; }\\n\\n.fa-sm {\\n font-size: .875em; }\\n\\n.fa-1x {\\n font-size: 1em; }\\n\\n.fa-2x {\\n font-size: 2em; }\\n\\n.fa-3x {\\n font-size: 3em; }\\n\\n.fa-4x {\\n font-size: 4em; }\\n\\n.fa-5x {\\n font-size: 5em; }\\n\\n.fa-6x {\\n font-size: 6em; }\\n\\n.fa-7x {\\n font-size: 7em; }\\n\\n.fa-8x {\\n font-size: 8em; }\\n\\n.fa-9x {\\n font-size: 9em; }\\n\\n.fa-10x {\\n font-size: 10em; }\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em; }\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: 2.5em;\\n padding-left: 0; }\\n .fa-ul > li {\\n position: relative; }\\n\\n.fa-li {\\n left: -2em;\\n position: absolute;\\n text-align: center;\\n width: 2em;\\n line-height: inherit; }\\n\\n.fa-border {\\n border: solid 0.08em #eee;\\n border-radius: .1em;\\n padding: .2em .25em .15em; }\\n\\n.fa-pull-left {\\n float: left; }\\n\\n.fa-pull-right {\\n float: right; }\\n\\n.fa.fa-pull-left,\\n.fas.fa-pull-left,\\n.far.fa-pull-left,\\n.fal.fa-pull-left,\\n.fab.fa-pull-left {\\n margin-right: .3em; }\\n\\n.fa.fa-pull-right,\\n.fas.fa-pull-right,\\n.far.fa-pull-right,\\n.fal.fa-pull-right,\\n.fab.fa-pull-right {\\n margin-left: .3em; }\\n\\n.fa-spin {\\n -webkit-animation: fa-spin 2s infinite linear;\\n animation: fa-spin 2s infinite linear; }\\n\\n.fa-pulse {\\n -webkit-animation: fa-spin 1s infinite steps(8);\\n animation: fa-spin 1s infinite steps(8); }\\n\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg); }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg); } }\\n\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg); }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg); } }\\n\\n.fa-rotate-90 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg); }\\n\\n.fa-rotate-180 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg); }\\n\\n.fa-rotate-270 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg); }\\n\\n.fa-flip-horizontal {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1); }\\n\\n.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1); }\\n\\n.fa-flip-horizontal.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1); }\\n\\n:root .fa-rotate-90,\\n:root .fa-rotate-180,\\n:root .fa-rotate-270,\\n:root .fa-flip-horizontal,\\n:root .fa-flip-vertical {\\n -webkit-filter: none;\\n filter: none; }\\n\\n.fa-stack {\\n display: inline-block;\\n height: 2em;\\n position: relative;\\n width: 2em; }\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0; }\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1em; }\\n\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2em; }\\n\\n.fa-inverse {\\n color: #fff; }\\n\\n.sr-only {\\n border: 0;\\n clip: rect(0, 0, 0, 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px; }\\n\\n.sr-only-focusable:active, .sr-only-focusable:focus {\\n clip: auto;\\n height: auto;\\n margin: 0;\\n overflow: visible;\\n position: static;\\n width: auto; }\\n\";\n\nvar css = function () {\n var dfp = DEFAULT_FAMILY_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config$1.familyPrefix;\n var rc = config$1.replacementClass;\n var s = baseStyles;\n\n if (fp !== dfp || rc !== drc) {\n var dPatt = new RegExp('\\\\.' + dfp + '\\\\-', 'g');\n var rPatt = new RegExp('\\\\.' + drc, 'g');\n\n s = s.replace(dPatt, '.' + fp + '-').replace(rPatt, '.' + rc);\n }\n\n return s;\n};\n\nfunction define(prefix, icons) {\n var normalized = Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n return acc;\n }, {});\n\n if (typeof namespace.hooks.addPack === 'function') {\n namespace.hooks.addPack(prefix, normalized);\n } else {\n namespace.styles[prefix] = _extends({}, namespace.styles[prefix] || {}, normalized);\n }\n\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll easy the upgrade process for our users by automatically defining\n * this as well.\n */\n if (prefix === 'fas') {\n define('fa', icons);\n }\n}\n\nvar Library = function () {\n function Library() {\n classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n createClass(Library, [{\n key: 'add',\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _extends({}, _this.definitions[key] || {}, additions[key]);\n define(key, additions[key]);\n });\n }\n }, {\n key: 'reset',\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: '_pullDefinitions',\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? { 0: definition } : definition;\n\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n\n\n if (!additions[prefix]) additions[prefix] = {};\n\n additions[prefix][iconName] = icon;\n });\n\n return additions;\n }\n }]);\n return Library;\n}();\n\nfunction prepIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n var vectorData = icon.slice(4);\n\n return {\n found: true,\n width: width,\n height: height,\n icon: { tag: 'path', attributes: { fill: 'currentColor', d: vectorData[0] } }\n };\n}\n\nvar _cssInserted = false;\n\nfunction ensureCss() {\n if (!config$1.autoAddCss) {\n return;\n }\n\n if (!_cssInserted) {\n insertCss(css());\n }\n\n _cssInserted = true;\n}\n\nfunction apiObject(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n\n return val;\n}\n\nfunction findIconDefinition(params) {\n var _params$prefix = params.prefix,\n prefix = _params$prefix === undefined ? 'fa' : _params$prefix,\n iconName = params.iconName;\n\n\n if (!iconName) return;\n\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n\n var mask = params.mask;\n\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _extends({}, params, { mask: mask }));\n };\n}\n\nvar library = new Library();\n\nvar noAuto = function noAuto() {\n auto(false);\n disconnect();\n};\n\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n ensureCss();\n\n var _params$node = params.node,\n node = _params$node === undefined ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === undefined ? function () {} : _params$callback;\n\n\n if (config$1.searchPseudoElements) {\n searchPseudoElements(node);\n }\n\n onTree(node, callback);\n }\n },\n\n css: css,\n\n insertCss: function insertCss$$1() {\n insertCss(css());\n }\n};\n\nvar parse = {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n};\n\nvar icon = resolveIcons(function (iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === undefined ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === undefined ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === undefined ? null : _params$mask,\n _params$title = params.title,\n title = _params$title === undefined ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === undefined ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === undefined ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === undefined ? {} : _params$styles;\n\n\n if (!iconDefinition) return;\n\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n\n\n return apiObject(_extends({ type: 'icon' }, iconDefinition), function () {\n ensureCss();\n\n if (config$1.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = config$1.replacementClass + '-title-' + nextUniqueId();\n } else {\n attributes['aria-hidden'] = 'true';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: prepIcon(icon),\n mask: mask ? prepIcon(mask.icon) : { found: false, width: null, height: null, icon: {} }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _extends({}, meaninglessTransform, transform),\n symbol: symbol,\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n});\n\nvar text = function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform2 = params.transform,\n transform = _params$transform2 === undefined ? meaninglessTransform : _params$transform2,\n _params$title2 = params.title,\n title = _params$title2 === undefined ? null : _params$title2,\n _params$classes2 = params.classes,\n classes = _params$classes2 === undefined ? [] : _params$classes2,\n _params$attributes2 = params.attributes,\n attributes = _params$attributes2 === undefined ? {} : _params$attributes2,\n _params$styles2 = params.styles,\n styles = _params$styles2 === undefined ? {} : _params$styles2;\n\n\n return apiObject({ type: 'text', content: content }, function () {\n ensureCss();\n\n return makeLayersTextAbstract({\n content: content,\n transform: _extends({}, meaninglessTransform, transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [config$1.familyPrefix + '-layers-text'].concat(toConsumableArray(classes))\n }\n });\n });\n};\n\nvar layer = function layer(assembler) {\n return apiObject({ type: 'layer' }, function () {\n ensureCss();\n\n var children = [];\n\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n\n return [{\n tag: 'span',\n attributes: { class: config$1.familyPrefix + '-layers' },\n children: children\n }];\n });\n};\n\nvar api$1 = {\n noAuto: noAuto,\n dom: dom,\n library: library,\n parse: parse,\n findIconDefinition: findIconDefinition,\n icon: icon,\n text: text,\n layer: layer\n};\n\nvar autoReplace = function autoReplace() {\n if (IS_DOM && config$1.autoReplaceSvg) api$1.dom.i2svg({ node: DOCUMENT });\n};\n\nfunction bootstrap() {\n if (IS_BROWSER) {\n if (!WINDOW.FontAwesome) {\n WINDOW.FontAwesome = api$1;\n }\n\n domready(function () {\n if (Object.keys(namespace.styles).length > 0) {\n autoReplace();\n }\n\n if (config$1.observeMutations && typeof MutationObserver === 'function') {\n observe({\n treeCallback: onTree,\n nodeCallback: onNode,\n pseudoElementsCallback: searchPseudoElements\n });\n }\n });\n }\n\n namespace.hooks = _extends({}, namespace.hooks, {\n\n addPack: function addPack(prefix, icons) {\n namespace.styles[prefix] = _extends({}, namespace.styles[prefix] || {}, icons);\n\n build();\n autoReplace();\n },\n\n addShims: function addShims(shims) {\n var _namespace$shims;\n\n (_namespace$shims = namespace.shims).push.apply(_namespace$shims, toConsumableArray(shims));\n\n build();\n autoReplace();\n }\n });\n}\n\nObject.defineProperty(api$1, 'config', {\n get: function get() {\n return config$1;\n },\n\n set: function set(newConfig) {\n update(newConfig);\n }\n});\n\nif (IS_DOM) bunker(bootstrap);\n\nvar config = api$1.config;\n\nexport { config, icon, noAuto, layer, text, library, dom, parse, findIconDefinition };\nexport default api$1;\n","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _wrapRegExp() {\n _wrapRegExp = function (re, groups) {\n return new BabelRegExp(re, void 0, groups);\n };\n\n var _super = RegExp.prototype,\n _groups = new WeakMap();\n\n function BabelRegExp(re, flags, groups) {\n var _this = new RegExp(re, flags);\n\n return _groups.set(_this, groups || _groups.get(re)), _setPrototypeOf(_this, BabelRegExp.prototype);\n }\n\n function buildGroups(result, re) {\n var g = _groups.get(re);\n\n return Object.keys(g).reduce(function (groups, name) {\n return groups[name] = result[g[name]], groups;\n }, Object.create(null));\n }\n\n return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (str) {\n var result = _super.exec.call(this, str);\n\n return result && (result.groups = buildGroups(result, this)), result;\n }, BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {\n if (\"string\" == typeof substitution) {\n var groups = _groups.get(this);\n\n return _super[Symbol.replace].call(this, str, substitution.replace(/\\$<([^>]+)>/g, function (_, name) {\n return \"$\" + groups[name];\n }));\n }\n\n if (\"function\" == typeof substitution) {\n var _this = this;\n\n return _super[Symbol.replace].call(this, str, function () {\n var args = arguments;\n return \"object\" != typeof args[args.length - 1] && (args = [].slice.call(args)).push(buildGroups(args, _this)), substitution.apply(this, args);\n });\n }\n\n return _super[Symbol.replace].call(this, str, substitution);\n }, _wrapRegExp.apply(this, arguments);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar noop = function noop() {};\n\nvar _WINDOW = {};\nvar _DOCUMENT = {};\nvar _MUTATION_OBSERVER = null;\nvar _PERFORMANCE = {\n mark: noop,\n measure: noop\n};\n\ntry {\n if (typeof window !== 'undefined') _WINDOW = window;\n if (typeof document !== 'undefined') _DOCUMENT = document;\n if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\n\nvar _ref = _WINDOW.navigator || {},\n _ref$userAgent = _ref.userAgent,\n userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;\nvar WINDOW = _WINDOW;\nvar DOCUMENT = _DOCUMENT;\nvar MUTATION_OBSERVER = _MUTATION_OBSERVER;\nvar PERFORMANCE = _PERFORMANCE;\nvar IS_BROWSER = !!WINDOW.document;\nvar IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nvar IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar _familyProxy, _familyProxy2, _familyProxy3, _familyProxy4, _familyProxy5;\n\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_CSS_PREFIX = 'fa';\nvar DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nvar DATA_FA_I2SVG = 'data-fa-i2svg';\nvar DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nvar DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nvar DATA_PREFIX = 'data-prefix';\nvar DATA_ICON = 'data-icon';\nvar HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nvar MUTATION_APPROACH_ASYNC = 'async';\nvar TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nvar PRODUCTION = function () {\n try {\n return process.env.NODE_ENV === 'production';\n } catch (e) {\n return false;\n }\n}();\nvar FAMILY_CLASSIC = 'classic';\nvar FAMILY_SHARP = 'sharp';\nvar FAMILIES = [FAMILY_CLASSIC, FAMILY_SHARP];\n\nfunction familyProxy(obj) {\n // Defaults to the classic family if family is not available\n return new Proxy(obj, {\n get: function get(target, prop) {\n return prop in target ? target[prop] : target[FAMILY_CLASSIC];\n }\n });\n}\nvar PREFIX_TO_STYLE = familyProxy((_familyProxy = {}, _defineProperty(_familyProxy, FAMILY_CLASSIC, {\n 'fa': 'solid',\n 'fas': 'solid',\n 'fa-solid': 'solid',\n 'far': 'regular',\n 'fa-regular': 'regular',\n 'fal': 'light',\n 'fa-light': 'light',\n 'fat': 'thin',\n 'fa-thin': 'thin',\n 'fad': 'duotone',\n 'fa-duotone': 'duotone',\n 'fab': 'brands',\n 'fa-brands': 'brands',\n 'fak': 'kit',\n 'fa-kit': 'kit'\n}), _defineProperty(_familyProxy, FAMILY_SHARP, {\n 'fa': 'solid',\n 'fass': 'solid',\n 'fa-solid': 'solid'\n}), _familyProxy));\nvar STYLE_TO_PREFIX = familyProxy((_familyProxy2 = {}, _defineProperty(_familyProxy2, FAMILY_CLASSIC, {\n 'solid': 'fas',\n 'regular': 'far',\n 'light': 'fal',\n 'thin': 'fat',\n 'duotone': 'fad',\n 'brands': 'fab',\n 'kit': 'fak'\n}), _defineProperty(_familyProxy2, FAMILY_SHARP, {\n 'solid': 'fass'\n}), _familyProxy2));\nvar PREFIX_TO_LONG_STYLE = familyProxy((_familyProxy3 = {}, _defineProperty(_familyProxy3, FAMILY_CLASSIC, {\n 'fab': 'fa-brands',\n 'fad': 'fa-duotone',\n 'fak': 'fa-kit',\n 'fal': 'fa-light',\n 'far': 'fa-regular',\n 'fas': 'fa-solid',\n 'fat': 'fa-thin'\n}), _defineProperty(_familyProxy3, FAMILY_SHARP, {\n 'fass': 'fa-solid'\n}), _familyProxy3));\nvar LONG_STYLE_TO_PREFIX = familyProxy((_familyProxy4 = {}, _defineProperty(_familyProxy4, FAMILY_CLASSIC, {\n 'fa-brands': 'fab',\n 'fa-duotone': 'fad',\n 'fa-kit': 'fak',\n 'fa-light': 'fal',\n 'fa-regular': 'far',\n 'fa-solid': 'fas',\n 'fa-thin': 'fat'\n}), _defineProperty(_familyProxy4, FAMILY_SHARP, {\n 'fa-solid': 'fass'\n}), _familyProxy4));\nvar ICON_SELECTION_SYNTAX_PATTERN = /fa(s|r|l|t|d|b|k|ss)?[\\-\\ ]/; // eslint-disable-line no-useless-escape\n\nvar LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nvar FONT_FAMILY_PATTERN = /Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp|Kit)?.*/i; // TODO: this needs to support fass\n// TODO: do we need to handle font-weight for kit SVG pseudo-elements?\n\nvar FONT_WEIGHT_TO_PREFIX = familyProxy((_familyProxy5 = {}, _defineProperty(_familyProxy5, FAMILY_CLASSIC, {\n '900': 'fas',\n '400': 'far',\n 'normal': 'far',\n '300': 'fal',\n '100': 'fat'\n}), _defineProperty(_familyProxy5, FAMILY_SHARP, {\n '900': 'fass'\n}), _familyProxy5));\nvar oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);\nvar ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nvar DUOTONE_CLASSES = {\n GROUP: 'duotone-group',\n SWAP_OPACITY: 'swap-opacity',\n PRIMARY: 'primary',\n SECONDARY: 'secondary'\n};\nvar prefixes = new Set();\nObject.keys(STYLE_TO_PREFIX[FAMILY_CLASSIC]).map(prefixes.add.bind(prefixes));\nObject.keys(STYLE_TO_PREFIX[FAMILY_SHARP]).map(prefixes.add.bind(prefixes));\nvar RESERVED_CLASSES = [].concat(FAMILIES, _toConsumableArray(prefixes), ['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', 'beat', 'border', 'fade', 'beat-fade', 'bounce', 'flip-both', 'flip-horizontal', 'flip-vertical', 'flip', 'fw', 'inverse', 'layers-counter', 'layers-text', 'layers', 'li', 'pull-left', 'pull-right', 'pulse', 'rotate-180', 'rotate-270', 'rotate-90', 'rotate-by', 'shake', 'spin-pulse', 'spin-reverse', 'spin', 'stack-1x', 'stack-2x', 'stack', 'ul', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY]).concat(oneToTen.map(function (n) {\n return \"\".concat(n, \"x\");\n})).concat(oneToTwenty.map(function (n) {\n return \"w-\".concat(n);\n}));\n\nvar initial = WINDOW.FontAwesomeConfig || {};\n\nfunction getAttrConfig(attr) {\n var element = DOCUMENT.querySelector('script[' + attr + ']');\n\n if (element) {\n return element.getAttribute(attr);\n }\n}\n\nfunction coerce(val) {\n // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n // We'll assume that this is an indication that it should be toggled to true\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-css-prefix', 'cssPrefix'], ['data-family-default', 'familyDefault'], ['data-style-default', 'styleDefault'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n\n var val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nvar _default = {\n styleDefault: 'solid',\n familyDefault: 'classic',\n cssPrefix: DEFAULT_CSS_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n}; // familyPrefix is deprecated but we must still support it if present\n\nif (initial.familyPrefix) {\n initial.cssPrefix = initial.familyPrefix;\n}\n\nvar _config = _objectSpread2(_objectSpread2({}, _default), initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\nvar config = {};\nObject.keys(_default).forEach(function (key) {\n Object.defineProperty(config, key, {\n enumerable: true,\n set: function set(val) {\n _config[key] = val;\n\n _onChangeCb.forEach(function (cb) {\n return cb(config);\n });\n },\n get: function get() {\n return _config[key];\n }\n });\n}); // familyPrefix is deprecated as of 6.2.0 and should be removed in 7.0.0\n\nObject.defineProperty(config, 'familyPrefix', {\n enumerable: true,\n set: function set(val) {\n _config.cssPrefix = val;\n\n _onChangeCb.forEach(function (cb) {\n return cb(config);\n });\n },\n get: function get() {\n return _config.cssPrefix;\n }\n});\nWINDOW.FontAwesomeConfig = config;\nvar _onChangeCb = [];\nfunction onChange(cb) {\n _onChangeCb.push(cb);\n\n return function () {\n _onChangeCb.splice(_onChangeCb.indexOf(cb), 1);\n };\n}\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\nfunction toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(/</g, '<').replace(/>/g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName].trim(), \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar baseStyles = \":root, :host {\\n --fa-font-solid: normal 900 1em/1 \\\"Font Awesome 6 Solid\\\";\\n --fa-font-regular: normal 400 1em/1 \\\"Font Awesome 6 Regular\\\";\\n --fa-font-light: normal 300 1em/1 \\\"Font Awesome 6 Light\\\";\\n --fa-font-thin: normal 100 1em/1 \\\"Font Awesome 6 Thin\\\";\\n --fa-font-duotone: normal 900 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-sharp-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-brands: normal 400 1em/1 \\\"Font Awesome 6 Brands\\\";\\n}\\n\\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\\n overflow: visible;\\n box-sizing: content-box;\\n}\\n\\n.svg-inline--fa {\\n display: var(--fa-display, inline-block);\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-2xs {\\n vertical-align: 0.1em;\\n}\\n.svg-inline--fa.fa-xs {\\n vertical-align: 0em;\\n}\\n.svg-inline--fa.fa-sm {\\n vertical-align: -0.0714285705em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.2em;\\n}\\n.svg-inline--fa.fa-xl {\\n vertical-align: -0.25em;\\n}\\n.svg-inline--fa.fa-2xl {\\n vertical-align: -0.3125em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-li {\\n width: var(--fa-li-width, 2em);\\n top: 0.25em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: var(--fa-fw-width, 1.25em);\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: var(--fa-counter-background-color, #ff253a);\\n border-radius: var(--fa-counter-border-radius, 1em);\\n box-sizing: border-box;\\n color: var(--fa-inverse, #fff);\\n line-height: var(--fa-counter-line-height, 1);\\n max-width: var(--fa-counter-max-width, 5em);\\n min-width: var(--fa-counter-min-width, 1.5em);\\n overflow: hidden;\\n padding: var(--fa-counter-padding, 0.25em 0.5em);\\n right: var(--fa-right, 0);\\n text-overflow: ellipsis;\\n top: var(--fa-top, 0);\\n -webkit-transform: scale(var(--fa-counter-scale, 0.25));\\n transform: scale(var(--fa-counter-scale, 0.25));\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: var(--fa-bottom, 0);\\n right: var(--fa-right, 0);\\n top: auto;\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: var(--fa-bottom, 0);\\n left: var(--fa-left, 0);\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n top: var(--fa-top, 0);\\n right: var(--fa-right, 0);\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: var(--fa-left, 0);\\n right: auto;\\n top: var(--fa-top, 0);\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-2xs {\\n font-size: 0.625em;\\n line-height: 0.1em;\\n vertical-align: 0.225em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n line-height: 0.0833333337em;\\n vertical-align: 0.125em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n line-height: 0.0714285718em;\\n vertical-align: 0.0535714295em;\\n}\\n\\n.fa-lg {\\n font-size: 1.25em;\\n line-height: 0.05em;\\n vertical-align: -0.075em;\\n}\\n\\n.fa-xl {\\n font-size: 1.5em;\\n line-height: 0.0416666682em;\\n vertical-align: -0.125em;\\n}\\n\\n.fa-2xl {\\n font-size: 2em;\\n line-height: 0.03125em;\\n vertical-align: -0.1875em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: var(--fa-li-margin, 2.5em);\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: calc(var(--fa-li-width, 2em) * -1);\\n position: absolute;\\n text-align: center;\\n width: var(--fa-li-width, 2em);\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border-color: var(--fa-border-color, #eee);\\n border-radius: var(--fa-border-radius, 0.1em);\\n border-style: var(--fa-border-style, solid);\\n border-width: var(--fa-border-width, 0.08em);\\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\\n}\\n\\n.fa-pull-left {\\n float: left;\\n margin-right: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-pull-right {\\n float: right;\\n margin-left: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-beat {\\n -webkit-animation-name: fa-beat;\\n animation-name: fa-beat;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-bounce {\\n -webkit-animation-name: fa-bounce;\\n animation-name: fa-bounce;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n}\\n\\n.fa-fade {\\n -webkit-animation-name: fa-fade;\\n animation-name: fa-fade;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-beat-fade {\\n -webkit-animation-name: fa-beat-fade;\\n animation-name: fa-beat-fade;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-flip {\\n -webkit-animation-name: fa-flip;\\n animation-name: fa-flip;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-shake {\\n -webkit-animation-name: fa-shake;\\n animation-name: fa-shake;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin {\\n -webkit-animation-name: fa-spin;\\n animation-name: fa-spin;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 2s);\\n animation-duration: var(--fa-animation-duration, 2s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin-reverse {\\n --fa-animation-direction: reverse;\\n}\\n\\n.fa-pulse,\\n.fa-spin-pulse {\\n -webkit-animation-name: fa-spin;\\n animation-name: fa-spin;\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));\\n animation-timing-function: var(--fa-animation-timing, steps(8));\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n .fa-beat,\\n.fa-bounce,\\n.fa-fade,\\n.fa-beat-fade,\\n.fa-flip,\\n.fa-pulse,\\n.fa-shake,\\n.fa-spin,\\n.fa-spin-pulse {\\n -webkit-animation-delay: -1ms;\\n animation-delay: -1ms;\\n -webkit-animation-duration: 1ms;\\n animation-duration: 1ms;\\n -webkit-animation-iteration-count: 1;\\n animation-iteration-count: 1;\\n transition-delay: 0s;\\n transition-duration: 0s;\\n }\\n}\\n@-webkit-keyframes fa-beat {\\n 0%, 90% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 45% {\\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@keyframes fa-beat {\\n 0%, 90% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 45% {\\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@-webkit-keyframes fa-bounce {\\n 0% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@keyframes fa-bounce {\\n 0% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@-webkit-keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@-webkit-keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@-webkit-keyframes fa-flip {\\n 50% {\\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@keyframes fa-flip {\\n 50% {\\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@-webkit-keyframes fa-shake {\\n 0% {\\n -webkit-transform: rotate(-15deg);\\n transform: rotate(-15deg);\\n }\\n 4% {\\n -webkit-transform: rotate(15deg);\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n -webkit-transform: rotate(-18deg);\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n -webkit-transform: rotate(18deg);\\n transform: rotate(18deg);\\n }\\n 16% {\\n -webkit-transform: rotate(-22deg);\\n transform: rotate(-22deg);\\n }\\n 20% {\\n -webkit-transform: rotate(22deg);\\n transform: rotate(22deg);\\n }\\n 32% {\\n -webkit-transform: rotate(-12deg);\\n transform: rotate(-12deg);\\n }\\n 36% {\\n -webkit-transform: rotate(12deg);\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n@keyframes fa-shake {\\n 0% {\\n -webkit-transform: rotate(-15deg);\\n transform: rotate(-15deg);\\n }\\n 4% {\\n -webkit-transform: rotate(15deg);\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n -webkit-transform: rotate(-18deg);\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n -webkit-transform: rotate(18deg);\\n transform: rotate(18deg);\\n }\\n 16% {\\n -webkit-transform: rotate(-22deg);\\n transform: rotate(-22deg);\\n }\\n 20% {\\n -webkit-transform: rotate(22deg);\\n transform: rotate(22deg);\\n }\\n 32% {\\n -webkit-transform: rotate(-12deg);\\n transform: rotate(-12deg);\\n }\\n 36% {\\n -webkit-transform: rotate(12deg);\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both,\\n.fa-flip-horizontal.fa-flip-vertical {\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n.fa-rotate-by {\\n -webkit-transform: rotate(var(--fa-rotate-angle, none));\\n transform: rotate(var(--fa-rotate-angle, none));\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n vertical-align: middle;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n z-index: var(--fa-stack-z-index, auto);\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\\n\\n.sr-only,\\n.fa-sr-only {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.sr-only-focusable:not(:focus),\\n.fa-sr-only-focusable:not(:focus) {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse,\\n.fa-duotone.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\";\n\nfunction css() {\n var dcp = DEFAULT_CSS_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.cssPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n\n if (fp !== dcp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dcp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dcp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nvar _cssInserted = false;\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n _cssInserted = true;\n }\n}\n\nvar InjectCSS = {\n mixout: function mixout() {\n return {\n dom: {\n css: css,\n insertCss: ensureCss\n }\n };\n },\n hooks: function hooks() {\n return {\n beforeDOMElementCreation: function beforeDOMElementCreation() {\n ensureCss();\n },\n beforeI2svg: function beforeI2svg() {\n ensureCss();\n }\n };\n }\n};\n\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\n\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"</\").concat(tag, \">\");\n }\n}\n\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\n/**\n * ucs2decode() and codePointAt() are both works of Mathias Bynens and licensed under MIT\n *\n * Copyright Mathias Bynens <https://mathiasbynens.be/>\n\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nfunction ucs2decode(string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n var extra = string.charCodeAt(counter++);\n\n if ((extra & 0xFC00) == 0xDC00) {\n // eslint-disable-line eqeqeq\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n\n return output;\n}\n\nfunction toHex(unicode) {\n var decoded = ucs2decode(unicode);\n return decoded.length === 1 ? decoded[0].toString(16) : null;\n}\nfunction codePointAt(string, index) {\n var size = string.length;\n var first = string.charCodeAt(index);\n var second;\n\n if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n second = string.charCodeAt(index + 1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return first;\n}\n\nfunction normalizeIcons(icons) {\n return Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n}\n\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = normalizeIcons(icons);\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalizeIcons(icons));\n } else {\n namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll ease the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nvar duotonePathRe = [/*#__PURE__*/_wrapRegExp(/path d=\"((?:(?!\")[\\s\\S])+)\".*path d=\"((?:(?!\")[\\s\\S])+)\"/, {\n d1: 1,\n d2: 2\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\".*path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n cls1: 1,\n d1: 2,\n cls2: 3,\n d2: 4\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n cls1: 1,\n d1: 2\n})];\n\nvar _LONG_STYLE, _PREFIXES, _PREFIXES_FOR_FAMILY;\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar LONG_STYLE = (_LONG_STYLE = {}, _defineProperty(_LONG_STYLE, FAMILY_CLASSIC, Object.values(PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC])), _defineProperty(_LONG_STYLE, FAMILY_SHARP, Object.values(PREFIX_TO_LONG_STYLE[FAMILY_SHARP])), _LONG_STYLE);\nvar _defaultUsablePrefix = null;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar _byOldUnicode = {};\nvar _byAlias = {};\nvar PREFIXES = (_PREFIXES = {}, _defineProperty(_PREFIXES, FAMILY_CLASSIC, Object.keys(PREFIX_TO_STYLE[FAMILY_CLASSIC])), _defineProperty(_PREFIXES, FAMILY_SHARP, Object.keys(PREFIX_TO_STYLE[FAMILY_SHARP])), _PREFIXES);\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\n\nfunction getIconName(cssPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === cssPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n if (icon[2]) {\n var aliases = icon[2].filter(function (a) {\n return typeof a === 'number';\n });\n aliases.forEach(function (alias) {\n acc[alias.toString(16)] = iconName;\n });\n }\n\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n acc[iconName] = iconName;\n\n if (icon[2]) {\n var aliases = icon[2].filter(function (a) {\n return typeof a === 'string';\n });\n aliases.forEach(function (alias) {\n acc[alias] = iconName;\n });\n }\n\n return acc;\n });\n _byAlias = lookup(function (acc, icon, iconName) {\n var aliases = icon[2];\n acc[iconName] = iconName;\n aliases.forEach(function (alias) {\n acc[alias] = iconName;\n });\n return acc;\n }); // If we have a Kit, we can't determine if regular is available since we\n // could be auto-fetching it. We'll have to assume that it is available.\n\n var hasRegular = 'far' in styles || config.autoFetchSvg;\n var shimLookups = reduce(shims, function (acc, shim) {\n var maybeNameMaybeUnicode = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n if (typeof maybeNameMaybeUnicode === 'string') {\n acc.names[maybeNameMaybeUnicode] = {\n prefix: prefix,\n iconName: iconName\n };\n }\n\n if (typeof maybeNameMaybeUnicode === 'number') {\n acc.unicodes[maybeNameMaybeUnicode.toString(16)] = {\n prefix: prefix,\n iconName: iconName\n };\n }\n\n return acc;\n }, {\n names: {},\n unicodes: {}\n });\n _byOldName = shimLookups.names;\n _byOldUnicode = shimLookups.unicodes;\n _defaultUsablePrefix = getCanonicalPrefix(config.styleDefault, {\n family: config.familyDefault\n });\n};\nonChange(function (c) {\n _defaultUsablePrefix = getCanonicalPrefix(c.styleDefault, {\n family: config.familyDefault\n });\n});\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byAlias(prefix, alias) {\n return (_byAlias[prefix] || {})[alias];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\nfunction byOldUnicode(unicode) {\n var oldUnicode = _byOldUnicode[unicode];\n var newUnicode = byUnicode('fas', unicode);\n return oldUnicode || (newUnicode ? {\n prefix: 'fas',\n iconName: newUnicode\n } : null) || {\n prefix: null,\n iconName: null\n };\n}\nfunction getDefaultUsablePrefix() {\n return _defaultUsablePrefix;\n}\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalPrefix(styleOrPrefix) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$family = params.family,\n family = _params$family === void 0 ? FAMILY_CLASSIC : _params$family;\n var style = PREFIX_TO_STYLE[family][styleOrPrefix];\n var prefix = STYLE_TO_PREFIX[family][styleOrPrefix] || STYLE_TO_PREFIX[family][style];\n var defined = styleOrPrefix in namespace.styles ? styleOrPrefix : null;\n return prefix || defined || null;\n}\nvar PREFIXES_FOR_FAMILY = (_PREFIXES_FOR_FAMILY = {}, _defineProperty(_PREFIXES_FOR_FAMILY, FAMILY_CLASSIC, Object.keys(PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC])), _defineProperty(_PREFIXES_FOR_FAMILY, FAMILY_SHARP, Object.keys(PREFIX_TO_LONG_STYLE[FAMILY_SHARP])), _PREFIXES_FOR_FAMILY);\nfunction getCanonicalIcon(values) {\n var _famProps;\n\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$skipLookups = params.skipLookups,\n skipLookups = _params$skipLookups === void 0 ? false : _params$skipLookups;\n var famProps = (_famProps = {}, _defineProperty(_famProps, FAMILY_CLASSIC, \"\".concat(config.cssPrefix, \"-\").concat(FAMILY_CLASSIC)), _defineProperty(_famProps, FAMILY_SHARP, \"\".concat(config.cssPrefix, \"-\").concat(FAMILY_SHARP)), _famProps);\n var givenPrefix = null;\n var family = FAMILY_CLASSIC;\n\n if (values.includes(famProps[FAMILY_CLASSIC]) || values.some(function (v) {\n return PREFIXES_FOR_FAMILY[FAMILY_CLASSIC].includes(v);\n })) {\n family = FAMILY_CLASSIC;\n }\n\n if (values.includes(famProps[FAMILY_SHARP]) || values.some(function (v) {\n return PREFIXES_FOR_FAMILY[FAMILY_SHARP].includes(v);\n })) {\n family = FAMILY_SHARP;\n }\n\n var canonical = values.reduce(function (acc, cls) {\n var iconName = getIconName(config.cssPrefix, cls);\n\n if (styles[cls]) {\n cls = LONG_STYLE[family].includes(cls) ? LONG_STYLE_TO_PREFIX[family][cls] : cls;\n givenPrefix = cls;\n acc.prefix = cls;\n } else if (PREFIXES[family].indexOf(cls) > -1) {\n givenPrefix = cls;\n acc.prefix = getCanonicalPrefix(cls, {\n family: family\n });\n } else if (iconName) {\n acc.iconName = iconName;\n } else if (cls !== config.replacementClass && cls !== famProps[FAMILY_CLASSIC] && cls !== famProps[FAMILY_SHARP]) {\n acc.rest.push(cls);\n }\n\n if (!skipLookups && acc.prefix && acc.iconName) {\n var shim = givenPrefix === 'fa' ? byOldName(acc.iconName) : {};\n var aliasIconName = byAlias(acc.prefix, acc.iconName);\n\n if (shim.prefix) {\n givenPrefix = null;\n }\n\n acc.iconName = shim.iconName || aliasIconName || acc.iconName;\n acc.prefix = shim.prefix || acc.prefix;\n\n if (acc.prefix === 'far' && !styles['far'] && styles['fas'] && !config.autoFetchSvg) {\n // Allow a fallback from the regular style to solid if regular is not available\n // but only if we aren't auto-fetching SVGs\n acc.prefix = 'fas';\n }\n }\n\n return acc;\n }, emptyCanonicalIcon());\n\n if (values.includes('fa-brands') || values.includes('fab')) {\n canonical.prefix = 'fab';\n }\n\n if (values.includes('fa-duotone') || values.includes('fad')) {\n canonical.prefix = 'fad';\n }\n\n if (!canonical.prefix && family === FAMILY_SHARP && (styles['fass'] || config.autoFetchSvg)) {\n canonical.prefix = 'fass';\n canonical.iconName = byAlias(canonical.prefix, canonical.iconName) || canonical.iconName;\n }\n\n if (canonical.prefix === 'fa' || givenPrefix === 'fa') {\n // The fa prefix is not canonical. So if it has made it through until this point\n // we will shift it to the correct prefix.\n canonical.prefix = getDefaultUsablePrefix() || 'fas';\n }\n\n return canonical;\n}\n\nvar Library = /*#__PURE__*/function () {\n function Library() {\n _classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]);\n defineIcons(key, additions[key]); // TODO can we stop doing this? We can't get the icons by 'fa-solid' any longer so this probably needs to change\n\n var longPrefix = PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC][key];\n if (longPrefix) defineIcons(longPrefix, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n var aliases = icon[2];\n if (!additions[prefix]) additions[prefix] = {};\n\n if (aliases.length > 0) {\n aliases.forEach(function (alias) {\n if (typeof alias === 'string') {\n additions[prefix][alias] = icon;\n }\n });\n }\n\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n\n return Library;\n}();\n\nvar _plugins = [];\nvar _hooks = {};\nvar providers = {};\nvar defaultProviderKeys = Object.keys(providers);\nfunction registerPlugins(nextPlugins, _ref) {\n var obj = _ref.mixoutsTo;\n _plugins = nextPlugins;\n _hooks = {};\n Object.keys(providers).forEach(function (k) {\n if (defaultProviderKeys.indexOf(k) === -1) {\n delete providers[k];\n }\n });\n\n _plugins.forEach(function (plugin) {\n var mixout = plugin.mixout ? plugin.mixout() : {};\n Object.keys(mixout).forEach(function (tk) {\n if (typeof mixout[tk] === 'function') {\n obj[tk] = mixout[tk];\n }\n\n if (_typeof(mixout[tk]) === 'object') {\n Object.keys(mixout[tk]).forEach(function (sk) {\n if (!obj[tk]) {\n obj[tk] = {};\n }\n\n obj[tk][sk] = mixout[tk][sk];\n });\n }\n });\n\n if (plugin.hooks) {\n var hooks = plugin.hooks();\n Object.keys(hooks).forEach(function (hook) {\n if (!_hooks[hook]) {\n _hooks[hook] = [];\n }\n\n _hooks[hook].push(hooks[hook]);\n });\n }\n\n if (plugin.provides) {\n plugin.provides(providers);\n }\n });\n\n return obj;\n}\nfunction chainHooks(hook, accumulator) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n var hookFns = _hooks[hook] || [];\n hookFns.forEach(function (hookFn) {\n accumulator = hookFn.apply(null, [accumulator].concat(args)); // eslint-disable-line no-useless-call\n });\n return accumulator;\n}\nfunction callHooks(hook) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var hookFns = _hooks[hook] || [];\n hookFns.forEach(function (hookFn) {\n hookFn.apply(null, args);\n });\n return undefined;\n}\nfunction callProvided() {\n var hook = arguments[0];\n var args = Array.prototype.slice.call(arguments, 1);\n return providers[hook] ? providers[hook].apply(null, args) : undefined;\n}\n\nfunction findIconDefinition(iconLookup) {\n if (iconLookup.prefix === 'fa') {\n iconLookup.prefix = 'fas';\n }\n\n var iconName = iconLookup.iconName;\n var prefix = iconLookup.prefix || getDefaultUsablePrefix();\n if (!iconName) return;\n iconName = byAlias(prefix, iconName) || iconName;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\nvar library = new Library();\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n callHooks('noAuto');\n};\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n callHooks('beforeI2svg', params);\n callProvided('pseudoElements2svg', params);\n return callProvided('i2svg', params);\n } else {\n return Promise.reject('Operation requires a DOM of some kind.');\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n callHooks('watch', params);\n });\n }\n};\nvar parse = {\n icon: function icon(_icon) {\n if (_icon === null) {\n return null;\n }\n\n if (_typeof(_icon) === 'object' && _icon.prefix && _icon.iconName) {\n return {\n prefix: _icon.prefix,\n iconName: byAlias(_icon.prefix, _icon.iconName) || _icon.iconName\n };\n }\n\n if (Array.isArray(_icon) && _icon.length === 2) {\n var iconName = _icon[1].indexOf('fa-') === 0 ? _icon[1].slice(3) : _icon[1];\n var prefix = getCanonicalPrefix(_icon[0]);\n return {\n prefix: prefix,\n iconName: byAlias(prefix, iconName) || iconName\n };\n }\n\n if (typeof _icon === 'string' && (_icon.indexOf(\"\".concat(config.cssPrefix, \"-\")) > -1 || _icon.match(ICON_SELECTION_SYNTAX_PATTERN))) {\n var canonicalIcon = getCanonicalIcon(_icon.split(' '), {\n skipLookups: true\n });\n return {\n prefix: canonicalIcon.prefix || getDefaultUsablePrefix(),\n iconName: byAlias(canonicalIcon.prefix, canonicalIcon.iconName) || canonicalIcon.iconName\n };\n }\n\n if (typeof _icon === 'string') {\n var _prefix = getDefaultUsablePrefix();\n\n return {\n prefix: _prefix,\n iconName: byAlias(_prefix, _icon) || _icon\n };\n }\n }\n};\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n parse: parse,\n library: library,\n findIconDefinition: findIconDefinition,\n toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nfunction domVariants(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction asIcon (_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\n\nfunction asSymbol (_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.cssPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread2(_objectSpread2({}, attributes), {}, {\n id: id\n }),\n children: children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n maskId = params.maskId,\n titleId = params.titleId,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var isUploadedIcon = prefix === 'fak';\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.cssPrefix, \"-\").concat(iconName) : ''].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).filter(function (c) {\n return c !== '' || !!c;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) {\n content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n delete content.attributes.title;\n }\n\n var args = _objectSpread2(_objectSpread2({}, content), {}, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n maskId: maskId,\n transform: transform,\n symbol: symbol,\n styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles)\n });\n\n var _ref2 = mask.found && main.found ? callProvided('generateAbstractMask', args) || {\n children: [],\n attributes: {}\n } : callProvided('generateAbstractIcon', args) || {\n children: [],\n attributes: {}\n },\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _objectSpread2({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n\n var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n\n var styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nvar styles$1 = namespace.styles;\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n\n var element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\nvar missingIconResolutionMixin = {\n found: false,\n width: 512,\n height: 512\n};\n\nfunction maybeNotifyMissing(iconName, prefix) {\n if (!PRODUCTION && !config.showMissingIcons && iconName) {\n console.error(\"Icon with name \\\"\".concat(iconName, \"\\\" and prefix \\\"\").concat(prefix, \"\\\" is missing.\"));\n }\n}\n\nfunction findIcon(iconName, prefix) {\n var givenPrefix = prefix;\n\n if (prefix === 'fa' && config.styleDefault !== null) {\n prefix = getDefaultUsablePrefix();\n }\n\n return new Promise(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: callProvided('missingIconAbstract') || {}\n };\n\n if (givenPrefix === 'fa') {\n var shim = byOldName(iconName) || {};\n iconName = shim.iconName || iconName;\n prefix = shim.prefix || prefix;\n }\n\n if (iconName && prefix && styles$1[prefix] && styles$1[prefix][iconName]) {\n var icon = styles$1[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n\n maybeNotifyMissing(iconName, prefix);\n resolve(_objectSpread2(_objectSpread2({}, missingIconResolutionMixin), {}, {\n icon: config.showMissingIcons && iconName ? callProvided('missingIconAbstract') || {} : {}\n }));\n });\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"6.2.0\\\"\";\n\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\n\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin: begin,\n end: end\n};\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction hasPrefixAndIcon(node) {\n var prefix = node.getAttribute ? node.getAttribute(DATA_PREFIX) : null;\n var icon = node.getAttribute ? node.getAttribute(DATA_ICON) : null;\n return prefix && icon;\n}\n\nfunction hasBeenReplaced(node) {\n return node && node.classList && node.classList.contains && node.classList.contains(config.replacementClass);\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nfunction createElementNS(tag) {\n return DOCUMENT.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n\nfunction createElement(tag) {\n return DOCUMENT.createElement(tag);\n}\n\nfunction convertSVG(abstractObj) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$ceFn = params.ceFn,\n ceFn = _params$ceFn === void 0 ? abstractObj.tag === 'svg' ? createElementNS : createElement : _params$ceFn;\n\n if (typeof abstractObj === 'string') {\n return DOCUMENT.createTextNode(abstractObj);\n }\n\n var tag = ceFn(abstractObj.tag);\n Object.keys(abstractObj.attributes || []).forEach(function (key) {\n tag.setAttribute(key, abstractObj.attributes[key]);\n });\n var children = abstractObj.children || [];\n children.forEach(function (child) {\n tag.appendChild(convertSVG(child, {\n ceFn: ceFn\n }));\n });\n return tag;\n}\n\nfunction nodeAsComment(node) {\n var comment = \" \".concat(node.outerHTML, \" \");\n /* BEGIN.ATTRIBUTION */\n\n comment = \"\".concat(comment, \"Font Awesome fontawesome.com \");\n /* END.ATTRIBUTION */\n\n return comment;\n}\n\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n\n if (node.parentNode) {\n mutation[1].forEach(function (abstract) {\n node.parentNode.insertBefore(convertSVG(abstract), node);\n });\n\n if (node.getAttribute(DATA_FA_I2SVG) === null && config.keepOriginalSource) {\n var comment = DOCUMENT.createComment(nodeAsComment(node));\n node.parentNode.replaceChild(comment, node);\n } else {\n node.remove();\n }\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(\"\".concat(config.cssPrefix, \"-.*\"));\n delete abstract[0].attributes.id;\n\n if (abstract[0].attributes.class) {\n var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n\n if (splitClasses.toNode.length === 0) {\n node.removeAttribute('class');\n } else {\n node.setAttribute('class', splitClasses.toNode.join(' '));\n }\n }\n\n var newInnerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nvar disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n var _options$treeCallback = options.treeCallback,\n treeCallback = _options$treeCallback === void 0 ? noop$2 : _options$treeCallback,\n _options$nodeCallback = options.nodeCallback,\n nodeCallback = _options$nodeCallback === void 0 ? noop$2 : _options$nodeCallback,\n _options$pseudoElemen = options.pseudoElementsCallback,\n pseudoElementsCallback = _options$pseudoElemen === void 0 ? noop$2 : _options$pseudoElemen,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n var defaultPrefix = getDefaultUsablePrefix();\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class' && hasPrefixAndIcon(mutationRecord.target)) {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n mutationRecord.target.setAttribute(DATA_PREFIX, prefix || defaultPrefix);\n if (iconName) mutationRecord.target.setAttribute(DATA_ICON, iconName);\n } else if (hasBeenReplaced(mutationRecord.target)) {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser (node) {\n var style = node.getAttribute('style');\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser (node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n\n if (!val.prefix) {\n val.prefix = getDefaultUsablePrefix();\n }\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.iconName && val.prefix) {\n return val;\n }\n\n if (val.prefix && innerText.length > 0) {\n val.iconName = byLigature(val.prefix, node.innerText) || byUnicode(val.prefix, toHex(node.innerText));\n }\n\n if (!val.iconName && config.autoFetchSvg && node.firstChild && node.firstChild.nodeType === Node.TEXT_NODE) {\n val.iconName = node.firstChild.data;\n }\n\n return val;\n}\n\nfunction attributesParser (node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n var title = node.getAttribute('title');\n var titleId = node.getAttribute('data-fa-title-id');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n var parser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n styleParser: true\n };\n\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraAttributes = attributesParser(node);\n var pluginMeta = chainHooks('parseNodeAttributes', {}, node);\n var extraStyles = parser.styleParser ? styleParser(node) : [];\n return _objectSpread2({\n iconName: iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix: prefix,\n transform: meaninglessTransform,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n symbol: false,\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n }, pluginMeta);\n}\n\nvar styles$2 = namespace.styles;\n\nfunction generateMutation(node) {\n var nodeMeta = config.autoReplaceSvg === 'nest' ? parseMeta(node, {\n styleParser: false\n }) : parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return callProvided('generateLayersText', node, nodeMeta);\n } else {\n return callProvided('generateSvgReplacementMutation', node, nodeMeta);\n }\n}\n\nvar knownPrefixes = new Set();\nFAMILIES.map(function (family) {\n knownPrefixes.add(\"fa-\".concat(family));\n});\nObject.keys(PREFIX_TO_STYLE[FAMILY_CLASSIC]).map(knownPrefixes.add.bind(knownPrefixes));\nObject.keys(PREFIX_TO_STYLE[FAMILY_SHARP]).map(knownPrefixes.add.bind(knownPrefixes));\nknownPrefixes = _toConsumableArray(knownPrefixes);\n\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return Promise.resolve();\n var htmlClassList = DOCUMENT.documentElement.classList;\n\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var prefixes = config.autoFetchSvg ? knownPrefixes : FAMILIES.map(function (f) {\n return \"fa-\".concat(f);\n }).concat(Object.keys(styles$2));\n\n if (!prefixes.includes('fa')) {\n prefixes.push('fa');\n }\n\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return Promise.resolve();\n }\n\n var candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return Promise.resolve();\n }\n\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e.name === 'MissingIcon') {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n return new Promise(function (resolve, reject) {\n Promise.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function (e) {\n mark();\n reject(e);\n });\n });\n}\n\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {\n mask: mask\n }));\n };\n}\n\nvar render = function render(iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$maskId = params.maskId,\n maskId = _params$maskId === void 0 ? null : _params$maskId,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$titleId = params.titleId,\n titleId = _params$titleId === void 0 ? null : _params$titleId,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return domVariants(_objectSpread2({\n type: 'icon'\n }, iconDefinition), function () {\n callHooks('beforeDOMElementCreation', {\n iconDefinition: iconDefinition,\n params: params\n });\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n symbol: symbol,\n title: title,\n maskId: maskId,\n titleId: titleId,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n};\nvar ReplaceElements = {\n mixout: function mixout() {\n return {\n icon: resolveIcons(render)\n };\n },\n hooks: function hooks() {\n return {\n mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n accumulator.treeCallback = onTree;\n accumulator.nodeCallback = onNode;\n return accumulator;\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.i2svg = function (params) {\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n return onTree(node, callback);\n };\n\n providers$$1.generateSvgReplacementMutation = function (node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n titleId = nodeMeta.titleId,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n maskId = nodeMeta.maskId,\n extra = nodeMeta.extra;\n return new Promise(function (resolve, reject) {\n Promise.all([findIcon(iconName, prefix), mask.iconName ? findIcon(mask.iconName, mask.prefix) : Promise.resolve({\n found: false,\n width: 512,\n height: 512,\n icon: {}\n })]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n maskId: maskId,\n title: title,\n titleId: titleId,\n extra: extra,\n watchable: true\n })]);\n }).catch(reject);\n });\n };\n\n providers$$1.generateAbstractIcon = function (_ref3) {\n var children = _ref3.children,\n attributes = _ref3.attributes,\n main = _ref3.main,\n transform = _ref3.transform,\n styles = _ref3.styles;\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var nextChild;\n\n if (transformIsMeaningful(transform)) {\n nextChild = callProvided('generateAbstractTransformGrouping', {\n main: main,\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n }\n\n children.push(nextChild || main.icon);\n return {\n children: children,\n attributes: attributes\n };\n };\n }\n};\n\nvar Layers = {\n mixout: function mixout() {\n return {\n layer: function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes;\n return domVariants({\n type: 'layer'\n }, function () {\n callHooks('beforeDOMElementCreation', {\n assembler: assembler,\n params: params\n });\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.cssPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n }\n };\n }\n};\n\nvar LayersCounter = {\n mixout: function mixout() {\n return {\n counter: function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n return domVariants({\n type: 'counter',\n content: content\n }, function () {\n callHooks('beforeDOMElementCreation', {\n content: content,\n params: params\n });\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n }\n };\n }\n};\n\nvar LayersText = {\n mixout: function mixout() {\n return {\n text: function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n return domVariants({\n type: 'text',\n content: content\n }, function () {\n callHooks('beforeDOMElementCreation', {\n content: content,\n params: params\n });\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.generateLayersText = function (node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return Promise.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n };\n }\n};\n\nvar CLEAN_CONTENT_PATTERN = new RegExp(\"\\\"\", 'ug');\nvar SECONDARY_UNICODE_RANGE = [1105920, 1112319];\nfunction hexValueFromContent(content) {\n var cleaned = content.replace(CLEAN_CONTENT_PATTERN, '');\n var codePoint = codePointAt(cleaned, 0);\n var isPrependTen = codePoint >= SECONDARY_UNICODE_RANGE[0] && codePoint <= SECONDARY_UNICODE_RANGE[1];\n var isDoubled = cleaned.length === 2 ? cleaned[0] === cleaned[1] : false;\n return {\n value: isDoubled ? toHex(cleaned[0]) : toHex(cleaned),\n isSecondary: isPrependTen || isDoubled\n };\n}\n\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new Promise(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n var content = styles.getPropertyValue('content');\n\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily && content !== 'none' && content !== '') {\n var _content = styles.getPropertyValue('content');\n\n var family = ~['Sharp'].indexOf(fontFamily[2]) ? FAMILY_SHARP : FAMILY_CLASSIC;\n var prefix = ~['Solid', 'Regular', 'Light', 'Thin', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[family][fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[family][fontWeight];\n\n var _hexValueFromContent = hexValueFromContent(_content),\n hexValue = _hexValueFromContent.value,\n isSecondary = _hexValueFromContent.isSecondary;\n\n var isV4 = fontFamily[0].startsWith('FontAwesome');\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName;\n\n if (isV4) {\n var iconName4 = byOldUnicode(hexValue);\n\n if (iconName4.iconName && iconName4.prefix) {\n iconName = iconName4.iconName;\n prefix = iconName4.prefix;\n }\n } // Only convert the pseudo element in this ::before/::after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n\n if (iconName && !isSecondary && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n var element = DOCUMENT.createElement('svg');\n\n if (position === '::before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return Promise.all([replaceForPosition(node, '::before'), replaceForPosition(node, '::after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements(root) {\n if (!IS_DOM) return;\n return new Promise(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n Promise.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar PseudoElements = {\n hooks: function hooks() {\n return {\n mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n accumulator.pseudoElementsCallback = searchPseudoElements;\n return accumulator;\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.pseudoElements2svg = function (params) {\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n };\n }\n};\n\nvar _unwatched = false;\nvar MutationObserver$1 = {\n mixout: function mixout() {\n return {\n dom: {\n unwatch: function unwatch() {\n disableObservation();\n _unwatched = true;\n }\n }\n };\n },\n hooks: function hooks() {\n return {\n bootstrap: function bootstrap() {\n observe(chainHooks('mutationObserverCallbacks', {}));\n },\n noAuto: function noAuto() {\n disconnect();\n },\n watch: function watch(params) {\n var observeMutationsRoot = params.observeMutationsRoot;\n\n if (_unwatched) {\n enableObservation();\n } else {\n observe(chainHooks('mutationObserverCallbacks', {\n observeMutationsRoot: observeMutationsRoot\n }));\n }\n }\n };\n }\n};\n\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n};\nvar PowerTransforms = {\n mixout: function mixout() {\n return {\n parse: {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n }\n };\n },\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var transformString = node.getAttribute('data-fa-transform');\n\n if (transformString) {\n accumulator.transform = parseTransformString(transformString);\n }\n\n return accumulator;\n }\n };\n },\n provides: function provides(providers) {\n providers.generateAbstractTransformGrouping = function (_ref) {\n var main = _ref.main,\n transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n var operations = {\n outer: outer,\n inner: inner,\n path: path\n };\n return {\n tag: 'g',\n attributes: _objectSpread2({}, operations.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread2({}, operations.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), operations.path)\n }]\n }]\n };\n };\n }\n};\n\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n\n return abstract;\n}\n\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\n\nvar Masks = {\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var maskData = node.getAttribute('data-fa-mask');\n var mask = !maskData ? emptyCanonicalIcon() : getCanonicalIcon(maskData.split(' ').map(function (i) {\n return i.trim();\n }));\n\n if (!mask.prefix) {\n mask.prefix = getDefaultUsablePrefix();\n }\n\n accumulator.mask = mask;\n accumulator.maskId = node.getAttribute('data-fa-mask-id');\n return accumulator;\n }\n };\n },\n provides: function provides(providers) {\n providers.generateAbstractMask = function (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n explicitMaskId = _ref.maskId,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.inner),\n children: [fillBlack(_objectSpread2({\n tag: mainPath.tag,\n attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread2({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n };\n }\n};\n\nvar MissingIconIndicator = {\n provides: function provides(providers) {\n var reduceMotion = false;\n\n if (WINDOW.matchMedia) {\n reduceMotion = WINDOW.matchMedia('(prefers-reduced-motion: reduce)').matches;\n }\n\n providers.missingIconAbstract = function () {\n var gChildren = [];\n var FILL = {\n fill: 'currentColor'\n };\n var ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n }; // Ring\n\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n });\n\n var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'opacity'\n });\n\n var dot = {\n tag: 'circle',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: []\n };\n\n if (!reduceMotion) {\n dot.children.push({\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;1;1;0;1;'\n })\n });\n }\n\n gChildren.push(dot);\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: reduceMotion ? [] : [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;0;0;0;1;'\n })\n }]\n });\n\n if (!reduceMotion) {\n // Exclamation\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '0;0;1;1;0;0;'\n })\n }]\n });\n }\n\n return {\n tag: 'g',\n attributes: {\n 'class': 'missing'\n },\n children: gChildren\n };\n };\n }\n};\n\nvar SvgSymbols = {\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var symbolData = node.getAttribute('data-fa-symbol');\n var symbol = symbolData === null ? false : symbolData === '' ? true : symbolData;\n accumulator['symbol'] = symbol;\n return accumulator;\n }\n };\n }\n};\n\nvar plugins = [InjectCSS, ReplaceElements, Layers, LayersCounter, LayersText, PseudoElements, MutationObserver$1, PowerTransforms, Masks, MissingIconIndicator, SvgSymbols];\n\nregisterPlugins(plugins, {\n mixoutsTo: api\n});\nvar noAuto$1 = api.noAuto;\nvar config$1 = api.config;\nvar library$1 = api.library;\nvar dom$1 = api.dom;\nvar parse$1 = api.parse;\nvar findIconDefinition$1 = api.findIconDefinition;\nvar toHtml$1 = api.toHtml;\nvar icon = api.icon;\nvar layer = api.layer;\nvar text = api.text;\nvar counter = api.counter;\n\nexport { noAuto$1 as noAuto, config$1 as config, library$1 as library, dom$1 as dom, parse$1 as parse, findIconDefinition$1 as findIconDefinition, toHtml$1 as toHtml, icon, layer, text, counter, api };\n","import { parse, icon } from '@fortawesome/fontawesome-svg-core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n// Get CSS class list from a props object\nfunction classList(props) {\n var _classes;\n\n var beat = props.beat,\n fade = props.fade,\n beatFade = props.beatFade,\n bounce = props.bounce,\n shake = props.shake,\n flash = props.flash,\n spin = props.spin,\n spinPulse = props.spinPulse,\n spinReverse = props.spinReverse,\n pulse = props.pulse,\n fixedWidth = props.fixedWidth,\n inverse = props.inverse,\n border = props.border,\n listItem = props.listItem,\n flip = props.flip,\n size = props.size,\n rotation = props.rotation,\n pull = props.pull; // map of CSS class names to properties\n\n var classes = (_classes = {\n 'fa-beat': beat,\n 'fa-fade': fade,\n 'fa-beat-fade': beatFade,\n 'fa-bounce': bounce,\n 'fa-shake': shake,\n 'fa-flash': flash,\n 'fa-spin': spin,\n 'fa-spin-reverse': spinReverse,\n 'fa-spin-pulse': spinPulse,\n 'fa-pulse': pulse,\n 'fa-fw': fixedWidth,\n 'fa-inverse': inverse,\n 'fa-border': border,\n 'fa-li': listItem,\n 'fa-flip': flip === true,\n 'fa-flip-horizontal': flip === 'horizontal' || flip === 'both',\n 'fa-flip-vertical': flip === 'vertical' || flip === 'both'\n }, _defineProperty(_classes, \"fa-\".concat(size), typeof size !== 'undefined' && size !== null), _defineProperty(_classes, \"fa-rotate-\".concat(rotation), typeof rotation !== 'undefined' && rotation !== null && rotation !== 0), _defineProperty(_classes, \"fa-pull-\".concat(pull), typeof pull !== 'undefined' && pull !== null), _defineProperty(_classes, 'fa-swap-opacity', props.swapOpacity), _classes); // map over all the keys in the classes object\n // return an array of the keys where the value for the key is not null\n\n return Object.keys(classes).map(function (key) {\n return classes[key] ? key : null;\n }).filter(function (key) {\n return key;\n });\n}\n\n// Camelize taken from humps\n// humps is copyright © 2012+ Dom Christie\n// Released under the MIT license.\n// Performant way to determine if object coerces to a number\nfunction _isNumerical(obj) {\n obj = obj - 0; // eslint-disable-next-line no-self-compare\n\n return obj === obj;\n}\n\nfunction camelize(string) {\n if (_isNumerical(string)) {\n return string;\n } // eslint-disable-next-line no-useless-escape\n\n\n string = string.replace(/[\\-_\\s]+(.)?/g, function (match, chr) {\n return chr ? chr.toUpperCase() : '';\n }); // Ensure 1st char is always lowercase\n\n return string.substr(0, 1).toLowerCase() + string.substr(1);\n}\n\nvar _excluded = [\"style\"];\n\nfunction capitalize(val) {\n return val.charAt(0).toUpperCase() + val.slice(1);\n}\n\nfunction styleToObject(style) {\n return style.split(';').map(function (s) {\n return s.trim();\n }).filter(function (s) {\n return s;\n }).reduce(function (acc, pair) {\n var i = pair.indexOf(':');\n var prop = camelize(pair.slice(0, i));\n var value = pair.slice(i + 1).trim();\n prop.startsWith('webkit') ? acc[capitalize(prop)] = value : acc[prop] = value;\n return acc;\n }, {});\n}\n\nfunction convert(createElement, element) {\n var extraProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (typeof element === 'string') {\n return element;\n }\n\n var children = (element.children || []).map(function (child) {\n return convert(createElement, child);\n });\n /* eslint-disable dot-notation */\n\n var mixins = Object.keys(element.attributes || {}).reduce(function (acc, key) {\n var val = element.attributes[key];\n\n switch (key) {\n case 'class':\n acc.attrs['className'] = val;\n delete element.attributes['class'];\n break;\n\n case 'style':\n acc.attrs['style'] = styleToObject(val);\n break;\n\n default:\n if (key.indexOf('aria-') === 0 || key.indexOf('data-') === 0) {\n acc.attrs[key.toLowerCase()] = val;\n } else {\n acc.attrs[camelize(key)] = val;\n }\n\n }\n\n return acc;\n }, {\n attrs: {}\n });\n\n var _extraProps$style = extraProps.style,\n existingStyle = _extraProps$style === void 0 ? {} : _extraProps$style,\n remaining = _objectWithoutProperties(extraProps, _excluded);\n\n mixins.attrs['style'] = _objectSpread2(_objectSpread2({}, mixins.attrs['style']), existingStyle);\n /* eslint-enable */\n\n return createElement.apply(void 0, [element.tag, _objectSpread2(_objectSpread2({}, mixins.attrs), remaining)].concat(_toConsumableArray(children)));\n}\n\nvar PRODUCTION = false;\n\ntry {\n PRODUCTION = process.env.NODE_ENV === 'production';\n} catch (e) {}\n\nfunction log () {\n if (!PRODUCTION && console && typeof console.error === 'function') {\n var _console;\n\n (_console = console).error.apply(_console, arguments);\n }\n}\n\nfunction normalizeIconArgs(icon) {\n // this has everything that it needs to be rendered which means it was probably imported\n // directly from an icon svg package\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName && icon.icon) {\n return icon;\n }\n\n if (parse.icon) {\n return parse.icon(icon);\n } // if the icon is null, there's nothing to do\n\n\n if (icon === null) {\n return null;\n } // if the icon is an object and has a prefix and an icon name, return it\n\n\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName) {\n return icon;\n } // if it's an array with length of two\n\n\n if (Array.isArray(icon) && icon.length === 2) {\n // use the first item as prefix, second as icon name\n return {\n prefix: icon[0],\n iconName: icon[1]\n };\n } // if it's a string, use it as the icon name\n\n\n if (typeof icon === 'string') {\n return {\n prefix: 'fas',\n iconName: icon\n };\n }\n}\n\n// creates an object with a key of key\n// and a value of value\n// if certain conditions are met\nfunction objectWithKey(key, value) {\n // if the value is a non-empty array\n // or it's not an array but it is truthy\n // then create the object with the key and the value\n // if not, return an empty array\n return Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value ? _defineProperty({}, key, value) : {};\n}\n\nvar FontAwesomeIcon = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var iconArgs = props.icon,\n maskArgs = props.mask,\n symbol = props.symbol,\n className = props.className,\n title = props.title,\n titleId = props.titleId,\n maskId = props.maskId;\n var iconLookup = normalizeIconArgs(iconArgs);\n var classes = objectWithKey('classes', [].concat(_toConsumableArray(classList(props)), _toConsumableArray(className.split(' '))));\n var transform = objectWithKey('transform', typeof props.transform === 'string' ? parse.transform(props.transform) : props.transform);\n var mask = objectWithKey('mask', normalizeIconArgs(maskArgs));\n var renderedIcon = icon(iconLookup, _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, classes), transform), mask), {}, {\n symbol: symbol,\n title: title,\n titleId: titleId,\n maskId: maskId\n }));\n\n if (!renderedIcon) {\n log('Could not find icon', iconLookup);\n return null;\n }\n\n var abstract = renderedIcon.abstract;\n var extraProps = {\n ref: ref\n };\n Object.keys(props).forEach(function (key) {\n // eslint-disable-next-line no-prototype-builtins\n if (!FontAwesomeIcon.defaultProps.hasOwnProperty(key)) {\n extraProps[key] = props[key];\n }\n });\n return convertCurry(abstract[0], extraProps);\n});\nFontAwesomeIcon.displayName = 'FontAwesomeIcon';\nFontAwesomeIcon.propTypes = {\n beat: PropTypes.bool,\n border: PropTypes.bool,\n beatFade: PropTypes.bool,\n bounce: PropTypes.bool,\n className: PropTypes.string,\n fade: PropTypes.bool,\n flash: PropTypes.bool,\n mask: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n maskId: PropTypes.string,\n fixedWidth: PropTypes.bool,\n inverse: PropTypes.bool,\n flip: PropTypes.oneOf([true, false, 'horizontal', 'vertical', 'both']),\n icon: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n listItem: PropTypes.bool,\n pull: PropTypes.oneOf(['right', 'left']),\n pulse: PropTypes.bool,\n rotation: PropTypes.oneOf([0, 90, 180, 270]),\n shake: PropTypes.bool,\n size: PropTypes.oneOf(['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', '1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', '10x']),\n spin: PropTypes.bool,\n spinPulse: PropTypes.bool,\n spinReverse: PropTypes.bool,\n symbol: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n title: PropTypes.string,\n titleId: PropTypes.string,\n transform: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n swapOpacity: PropTypes.bool\n};\nFontAwesomeIcon.defaultProps = {\n border: false,\n className: '',\n mask: null,\n maskId: null,\n fixedWidth: false,\n inverse: false,\n flip: false,\n icon: null,\n listItem: false,\n pull: null,\n pulse: false,\n rotation: null,\n size: null,\n spin: false,\n spinPulse: false,\n spinReverse: false,\n beat: false,\n fade: false,\n beatFade: false,\n bounce: false,\n shake: false,\n symbol: false,\n title: '',\n titleId: null,\n transform: null,\n swapOpacity: false\n};\nvar convertCurry = convert.bind(null, React.createElement);\n\nexport { FontAwesomeIcon };\n","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};","exports.polyfill = Component => Component\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"active\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n active: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'li'\n};\n\nvar NavItem = function NavItem(props) {\n var className = props.className,\n cssModule = props.cssModule,\n active = props.active,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'nav-item', active ? 'active' : false), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nNavItem.propTypes = propTypes;\nNavItem.defaultProps = defaultProps;\nexport default NavItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"active\", \"tag\", \"innerRef\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func, PropTypes.string]),\n disabled: PropTypes.bool,\n active: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n onClick: PropTypes.func,\n href: PropTypes.any\n};\nvar defaultProps = {\n tag: 'a'\n};\n\nvar NavLink = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(NavLink, _React$Component);\n\n function NavLink(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.onClick = _this.onClick.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = NavLink.prototype;\n\n _proto.onClick = function onClick(e) {\n if (this.props.disabled) {\n e.preventDefault();\n return;\n }\n\n if (this.props.href === '#') {\n e.preventDefault();\n }\n\n if (this.props.onClick) {\n this.props.onClick(e);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n className = _this$props.className,\n cssModule = _this$props.cssModule,\n active = _this$props.active,\n Tag = _this$props.tag,\n innerRef = _this$props.innerRef,\n attributes = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'nav-link', {\n disabled: attributes.disabled,\n active: active\n }), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n ref: innerRef,\n onClick: this.onClick,\n className: classes\n }));\n };\n\n return NavLink;\n}(React.Component);\n\nNavLink.propTypes = propTypes;\nNavLink.defaultProps = defaultProps;\nexport default NavLink;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"expand\", \"className\", \"cssModule\", \"light\", \"dark\", \"fixed\", \"sticky\", \"color\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n light: PropTypes.bool,\n dark: PropTypes.bool,\n full: PropTypes.bool,\n fixed: PropTypes.string,\n sticky: PropTypes.string,\n color: PropTypes.string,\n role: PropTypes.string,\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n expand: PropTypes.oneOfType([PropTypes.bool, PropTypes.string])\n};\nvar defaultProps = {\n tag: 'nav',\n expand: false\n};\n\nvar getExpandClass = function getExpandClass(expand) {\n if (expand === false) {\n return false;\n } else if (expand === true || expand === 'xs') {\n return 'navbar-expand';\n }\n\n return \"navbar-expand-\" + expand;\n};\n\nvar Navbar = function Navbar(props) {\n var _classNames;\n\n var expand = props.expand,\n className = props.className,\n cssModule = props.cssModule,\n light = props.light,\n dark = props.dark,\n fixed = props.fixed,\n sticky = props.sticky,\n color = props.color,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'navbar', getExpandClass(expand), (_classNames = {\n 'navbar-light': light,\n 'navbar-dark': dark\n }, _classNames[\"bg-\" + color] = color, _classNames[\"fixed-\" + fixed] = fixed, _classNames[\"sticky-\" + sticky] = sticky, _classNames)), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nNavbar.propTypes = propTypes;\nNavbar.defaultProps = defaultProps;\nexport default Navbar;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'a'\n};\n\nvar NavbarBrand = function NavbarBrand(props) {\n var className = props.className,\n cssModule = props.cssModule,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'navbar-brand'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nNavbarBrand.propTypes = propTypes;\nNavbarBrand.defaultProps = defaultProps;\nexport default NavbarBrand;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"children\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n type: PropTypes.string,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n children: PropTypes.node\n};\nvar defaultProps = {\n tag: 'button',\n type: 'button'\n};\n\nvar NavbarToggler = function NavbarToggler(props) {\n var className = props.className,\n cssModule = props.cssModule,\n children = props.children,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'navbar-toggler'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({\n \"aria-label\": \"Toggle navigation\"\n }, attributes, {\n className: classes\n }), children || /*#__PURE__*/React.createElement(\"span\", {\n className: mapToCssModules('navbar-toggler-icon', cssModule)\n }));\n};\n\nNavbarToggler.propTypes = propTypes;\nNavbarToggler.defaultProps = defaultProps;\nexport default NavbarToggler;","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"tag\", \"isOpen\", \"className\", \"navbar\", \"cssModule\", \"children\", \"innerRef\"];\n\nvar _transitionStatusToCl;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Transition } from 'react-transition-group';\nimport { mapToCssModules, omit, pick, TransitionTimeouts, TransitionPropTypeKeys, TransitionStatuses, tagPropType } from './utils';\n\nvar propTypes = _objectSpread(_objectSpread({}, Transition.propTypes), {}, {\n isOpen: PropTypes.bool,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n tag: tagPropType,\n className: PropTypes.node,\n navbar: PropTypes.bool,\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.object])\n});\n\nvar defaultProps = _objectSpread(_objectSpread({}, Transition.defaultProps), {}, {\n isOpen: false,\n appear: false,\n enter: true,\n exit: true,\n tag: 'div',\n timeout: TransitionTimeouts.Collapse\n});\n\nvar transitionStatusToClassHash = (_transitionStatusToCl = {}, _transitionStatusToCl[TransitionStatuses.ENTERING] = 'collapsing', _transitionStatusToCl[TransitionStatuses.ENTERED] = 'collapse show', _transitionStatusToCl[TransitionStatuses.EXITING] = 'collapsing', _transitionStatusToCl[TransitionStatuses.EXITED] = 'collapse', _transitionStatusToCl);\n\nfunction getTransitionClass(status) {\n return transitionStatusToClassHash[status] || 'collapse';\n}\n\nfunction getHeight(node) {\n return node.scrollHeight;\n}\n\nvar Collapse = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Collapse, _Component);\n\n function Collapse(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n _this.state = {\n height: null\n };\n ['onEntering', 'onEntered', 'onExit', 'onExiting', 'onExited'].forEach(function (name) {\n _this[name] = _this[name].bind(_assertThisInitialized(_this));\n });\n return _this;\n }\n\n var _proto = Collapse.prototype;\n\n _proto.onEntering = function onEntering(node, isAppearing) {\n this.setState({\n height: getHeight(node)\n });\n this.props.onEntering(node, isAppearing);\n };\n\n _proto.onEntered = function onEntered(node, isAppearing) {\n this.setState({\n height: null\n });\n this.props.onEntered(node, isAppearing);\n };\n\n _proto.onExit = function onExit(node) {\n this.setState({\n height: getHeight(node)\n });\n this.props.onExit(node);\n };\n\n _proto.onExiting = function onExiting(node) {\n // getting this variable triggers a reflow\n var _unused = node.offsetHeight; // eslint-disable-line no-unused-vars\n\n this.setState({\n height: 0\n });\n this.props.onExiting(node);\n };\n\n _proto.onExited = function onExited(node) {\n this.setState({\n height: null\n });\n this.props.onExited(node);\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n Tag = _this$props.tag,\n isOpen = _this$props.isOpen,\n className = _this$props.className,\n navbar = _this$props.navbar,\n cssModule = _this$props.cssModule,\n children = _this$props.children,\n innerRef = _this$props.innerRef,\n otherProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n var height = this.state.height;\n var transitionProps = pick(otherProps, TransitionPropTypeKeys);\n var childProps = omit(otherProps, TransitionPropTypeKeys);\n return /*#__PURE__*/React.createElement(Transition, _extends({}, transitionProps, {\n in: isOpen,\n onEntering: this.onEntering,\n onEntered: this.onEntered,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }), function (status) {\n var collapseClass = getTransitionClass(status);\n var classes = mapToCssModules(classNames(className, collapseClass, navbar && 'navbar-collapse'), cssModule);\n var style = height === null ? null : {\n height: height\n };\n return /*#__PURE__*/React.createElement(Tag, _extends({}, childProps, {\n style: _objectSpread(_objectSpread({}, childProps.style), style),\n className: classes,\n ref: _this2.props.innerRef\n }), children);\n });\n };\n\n return Collapse;\n}(Component);\n\nCollapse.propTypes = propTypes;\nCollapse.defaultProps = defaultProps;\nexport default Collapse;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"tabs\", \"pills\", \"vertical\", \"horizontal\", \"justified\", \"fill\", \"navbar\", \"card\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tabs: PropTypes.bool,\n pills: PropTypes.bool,\n vertical: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n horizontal: PropTypes.string,\n justified: PropTypes.bool,\n fill: PropTypes.bool,\n navbar: PropTypes.bool,\n card: PropTypes.bool,\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'ul',\n vertical: false\n};\n\nvar getVerticalClass = function getVerticalClass(vertical) {\n if (vertical === false) {\n return false;\n } else if (vertical === true || vertical === 'xs') {\n return 'flex-column';\n }\n\n return \"flex-\" + vertical + \"-column\";\n};\n\nvar Nav = function Nav(props) {\n var className = props.className,\n cssModule = props.cssModule,\n tabs = props.tabs,\n pills = props.pills,\n vertical = props.vertical,\n horizontal = props.horizontal,\n justified = props.justified,\n fill = props.fill,\n navbar = props.navbar,\n card = props.card,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, navbar ? 'navbar-nav' : 'nav', horizontal ? \"justify-content-\" + horizontal : false, getVerticalClass(vertical), {\n 'nav-tabs': tabs,\n 'card-header-tabs': card && tabs,\n 'nav-pills': pills,\n 'card-header-pills': card && pills,\n 'nav-justified': justified,\n 'nav-fill': fill\n }), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nNav.propTypes = propTypes;\nNav.defaultProps = defaultProps;\nexport default Nav;","import React from \"react\"\nimport { Link } from \"gatsby-link\"\n\nimport { Container, Navbar, NavbarToggler, NavbarBrand, Nav, NavItem, NavLink, Collapse } from \"reactstrap\"\n\nconst LinkItem = ({ to, children }) => {\n return (\n <NavItem>\n <NavLink\n className=\"link-item\"\n tag={(props) => {\n return (\n <Link {...props} to={to} activeClassName=\"active\">\n {children}\n </Link>\n )\n }}\n />\n </NavItem>\n )\n}\n\nclass PageHeader extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n collapsed: false,\n }\n }\n\n toggle = () => {\n this.setState((prevState) => ({ collapsed: !prevState.collapsed }))\n }\n\n render() {\n return (\n <Navbar color=\"light\" light expand=\"sm\">\n <Container>\n <NavbarBrand to=\"/\" tag={(props) => <Link {...props} />}>\n Java User Group Görlitz\n </NavbarBrand>\n <NavbarToggler onClick={this.toggle} />\n\n <Collapse isOpen={this.state.collapsed} navbar>\n <Nav className=\"ml-auto\" navbar>\n <LinkItem to=\"/\">Aktuell</LinkItem>\n <LinkItem to=\"/talks\">Vorträge</LinkItem>\n <LinkItem to=\"/posters\">Plakate</LinkItem>\n <LinkItem to=\"/unterstuetzer\">Unterstützer</LinkItem>\n <LinkItem to=\"/about\">About</LinkItem>\n <LinkItem to=\"/mitmachen\">Mitmachen</LinkItem>\n </Nav>\n </Collapse>\n </Container>\n </Navbar>\n )\n }\n}\n\nexport default PageHeader\n","import React from \"react\"\n\nimport { Link } from \"gatsby\"\n\nconst PageFooter = () => (\n <footer className=\"container footer\">\n <p>\n <Link to=\"/impressum\">Impressum</Link> | <Link to=\"/datenschutz\">Datenschutz</Link>\n </p>\n </footer>\n)\n\nexport default PageFooter\n","import React from \"react\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\n\nimport bannerJSON from \"../../content/banner.json\"\n\nimport { faFacebook, faGithub, faTwitter, faMastodon } from \"@fortawesome/free-brands-svg-icons\"\nimport { faCalendarAlt, faEnvelope, faRss } from \"@fortawesome/free-solid-svg-icons\"\n\nimport { Col, Row } from \"reactstrap\"\n\nconst Sidebar = () => (\n <div className=\"sidebar\">\n <div>\n <Row>\n <Col sm=\"6\" xs=\"12\" md=\"12\">\n <img alt=\"Logo der JUG Görlitz\" src={require(\"../../content/images/logo.png\").default} />\n </Col>\n <Col sm=\"6\" xs=\"12\" md=\"12\">\n <strong>Organisiert vom <br/><a href=\"https://digitale-oberlausitz.eu\">Digitale Oberlausitz e.V.</a></strong>\n <p>\n Wir sind Mitglied im\n <br />\n <a href=\"http://www.ijug.eu/\">iJUG Verband</a>\n </p>\n\n <p>Links:</p>\n <ul className=\"list-unstyled\">\n <li>\n <a href=\"https://ijug.social/@Juggr\">\n <FontAwesomeIcon icon={faMastodon} /> Mastodon\n </a>\n </li>\n <li>\n <a href=\"https://twitter.com/jug_gr\">\n <FontAwesomeIcon icon={faTwitter} /> Twitter\n </a>\n </li>\n <li>\n <a href=\"https://www.facebook.com/juggr\">\n <FontAwesomeIcon icon={faFacebook} /> Facebook\n </a>\n </li>\n <li>\n <a href=\"https://groups.google.com/d/forum/juggr\">\n <FontAwesomeIcon icon={faEnvelope} /> Mailing-List\n </a>\n </li>\n <li>\n <a href=\"https://github.com/juggr\">\n <FontAwesomeIcon icon={faGithub} /> Github\n </a>\n </li>\n <li>\n <a href=\"/jug-goerlitz.ics\">\n <FontAwesomeIcon icon={faCalendarAlt} /> Kalender\n (ICAL)\n </a>\n </li>\n <li>\n <FontAwesomeIcon icon={faRss} /> Feeds:\n <ul>\n <li>\n <a href=\"/atom.xml\">Atom</a>\n </li>\n <li>\n <a href=\"/rss.xml\">RSS</a>\n </li>\n <li>\n <a href=\"/feed.json\">JSON</a>\n </li>\n </ul>\n </li>\n </ul>\n </Col>\n </Row>\n </div>\n\n <br />\n\n {bannerJSON.banner.map((banner) => (\n <div key={banner.id} className=\"banner\">\n <a href={banner.linkTarget}>\n <img alt={banner.altText} src={require(`../../content/images/${banner.imageName}`).default} />\n </a>\n </div>\n ))}\n </div>\n)\n\nexport default Sidebar\n","import React, { FC } from \"react\"\nimport { StaticQuery, graphql } from \"gatsby\"\n\nimport { Container, Row, Col } from \"reactstrap\"\n\nimport \"bootstrap/dist/css/bootstrap.min.css\"\n\nimport \"../styles/style.css\"\n\nimport PageHeader from \"./page-header\"\nimport PageFooter from \"./page-footer\"\nimport Sidebar from \"./sidebar\"\n\nimport fontawesome from \"@fortawesome/fontawesome\"\n\nfontawesome.config = {\n ...fontawesome.config,\n autoAddCss: false,\n}\n\nconst Layout = ({ children }) => {\n return (\n <>\n <PageHeader />\n <Container\n style={{\n marginTop: \"1em\",\n }}\n >\n <Row>\n <Col md=\"9\">{children}</Col>\n\n <Col md=\"3\">\n <Sidebar />\n </Col>\n </Row>\n </Container>\n\n <PageFooter />\n </>\n )\n}\n\nexport default Layout\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _addClass = _interopRequireDefault(require(\"dom-helpers/class/addClass\"));\n\nvar _removeClass = _interopRequireDefault(require(\"dom-helpers/class/removeClass\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return (0, _addClass.default)(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return (0, _removeClass.default)(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](http://www.nganimate.org/) library, you should use it if you're\n * using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <CSSTransition in={inProp} timeout={200} classNames=\"my-node\">\n * <div>\n * {\"I'll receive my-node-* classes\"}\n * </div>\n * </CSSTransition>\n * <button type=\"button\" onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**.\n */\n\n\nvar CSSTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _this.onEnter = function (node, appearing) {\n var _this$getClassNames = _this.getClassNames(appearing ? 'appear' : 'enter'),\n className = _this$getClassNames.className;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, className);\n\n if (_this.props.onEnter) {\n _this.props.onEnter(node, appearing);\n }\n };\n\n _this.onEntering = function (node, appearing) {\n var _this$getClassNames2 = _this.getClassNames(appearing ? 'appear' : 'enter'),\n activeClassName = _this$getClassNames2.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onEntering) {\n _this.props.onEntering(node, appearing);\n }\n };\n\n _this.onEntered = function (node, appearing) {\n var appearClassName = _this.getClassNames('appear').doneClassName;\n\n var enterClassName = _this.getClassNames('enter').doneClassName;\n\n var doneClassName = appearing ? appearClassName + \" \" + enterClassName : enterClassName;\n\n _this.removeClasses(node, appearing ? 'appear' : 'enter');\n\n addClass(node, doneClassName);\n\n if (_this.props.onEntered) {\n _this.props.onEntered(node, appearing);\n }\n };\n\n _this.onExit = function (node) {\n var _this$getClassNames3 = _this.getClassNames('exit'),\n className = _this$getClassNames3.className;\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n addClass(node, className);\n\n if (_this.props.onExit) {\n _this.props.onExit(node);\n }\n };\n\n _this.onExiting = function (node) {\n var _this$getClassNames4 = _this.getClassNames('exit'),\n activeClassName = _this$getClassNames4.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onExiting) {\n _this.props.onExiting(node);\n }\n };\n\n _this.onExited = function (node) {\n var _this$getClassNames5 = _this.getClassNames('exit'),\n doneClassName = _this$getClassNames5.doneClassName;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, doneClassName);\n\n if (_this.props.onExited) {\n _this.props.onExited(node);\n }\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + '-' : '';\n var className = isStringClassNames ? prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? className + '-active' : classNames[type + 'Active'];\n var doneClassName = isStringClassNames ? className + '-done' : classNames[type + 'Done'];\n return {\n className: className,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$getClassNames6 = this.getClassNames(type),\n className = _this$getClassNames6.className,\n activeClassName = _this$getClassNames6.activeClassName,\n doneClassName = _this$getClassNames6.doneClassName;\n\n className && removeClass(node, className);\n activeClassName && removeClass(node, activeClassName);\n doneClassName && removeClass(node, doneClassName);\n };\n\n _proto.reflowAndAddClass = function reflowAndAddClass(node, className) {\n // This is for to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n if (className) {\n /* eslint-disable no-unused-expressions */\n node && node.scrollTop;\n /* eslint-enable no-unused-expressions */\n\n addClass(node, className);\n }\n };\n\n _proto.render = function render() {\n var props = _extends({}, this.props);\n\n delete props.classNames;\n return _react.default.createElement(_Transition.default, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(_react.default.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, _Transition.default.propTypes, {\n /**\n * The animation classNames applied to the component as it enters, exits or\n * has finished the transition. A single name can be provided and it will be\n * suffixed for each stage: e.g.\n *\n * `classNames=\"fade\"` applies `fade-enter`, `fade-enter-active`,\n * `fade-enter-done`, `fade-exit`, `fade-exit-active`, `fade-exit-done`,\n * `fade-appear`, `fade-appear-active`, and `fade-appear-done`.\n *\n * **Note**: `fade-appear-done` and `fade-enter-done` will _both_ be applied.\n * This allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply an\n * epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: _PropTypes.classNamesShape,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit' class is\n * applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit-active' is applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nvar _default = CSSTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = require(\"react-dom\");\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * The `<ReplaceTransition>` component is a specialized `Transition` component\n * that animates between two children.\n *\n * ```jsx\n * <ReplaceTransition in>\n * <Fade><div>I appear first</div></Fade>\n * <Fade><div>I replace the above</div></Fade>\n * </ReplaceTransition>\n * ```\n */\nvar ReplaceTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ReplaceTransition, _React$Component);\n\n function ReplaceTransition() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n\n _this.handleEnter = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _this.handleLifecycle('onEnter', 0, args);\n };\n\n _this.handleEntering = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return _this.handleLifecycle('onEntering', 0, args);\n };\n\n _this.handleEntered = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return _this.handleLifecycle('onEntered', 0, args);\n };\n\n _this.handleExit = function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n return _this.handleLifecycle('onExit', 1, args);\n };\n\n _this.handleExiting = function () {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n return _this.handleLifecycle('onExiting', 1, args);\n };\n\n _this.handleExited = function () {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n return _this.handleLifecycle('onExited', 1, args);\n };\n\n return _this;\n }\n\n var _proto = ReplaceTransition.prototype;\n\n _proto.handleLifecycle = function handleLifecycle(handler, idx, originalArgs) {\n var _child$props;\n\n var children = this.props.children;\n\n var child = _react.default.Children.toArray(children)[idx];\n\n if (child.props[handler]) (_child$props = child.props)[handler].apply(_child$props, originalArgs);\n if (this.props[handler]) this.props[handler]((0, _reactDom.findDOMNode)(this));\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n children = _this$props.children,\n inProp = _this$props.in,\n props = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\"]);\n\n var _React$Children$toArr = _react.default.Children.toArray(children),\n first = _React$Children$toArr[0],\n second = _React$Children$toArr[1];\n\n delete props.onEnter;\n delete props.onEntering;\n delete props.onEntered;\n delete props.onExit;\n delete props.onExiting;\n delete props.onExited;\n return _react.default.createElement(_TransitionGroup.default, props, inProp ? _react.default.cloneElement(first, {\n key: 'first',\n onEnter: this.handleEnter,\n onEntering: this.handleEntering,\n onEntered: this.handleEntered\n }) : _react.default.cloneElement(second, {\n key: 'second',\n onEnter: this.handleExit,\n onEntering: this.handleExiting,\n onEntered: this.handleExited\n }));\n };\n\n return ReplaceTransition;\n}(_react.default.Component);\n\nReplaceTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n in: _propTypes.default.bool.isRequired,\n children: function children(props, propName) {\n if (_react.default.Children.count(props[propName]) !== 2) return new Error(\"\\\"\" + propName + \"\\\" must be exactly two transition components.\");\n return null;\n }\n} : {};\nvar _default = ReplaceTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nvar _TransitionGroupContext = _interopRequireDefault(require(\"./TransitionGroupContext\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n var node = _reactDom.default.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing);\n\n _this2.onTransitionEnd(node, enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n // allows for nested Transitions\n return _react.default.createElement(_TransitionGroupContext.default.Provider, {\n value: null\n }, children(status, childProps));\n }\n\n var child = _react.default.Children.only(children);\n\n return (// allows for nested Transitions\n _react.default.createElement(_TransitionGroupContext.default.Provider, {\n value: null\n }, _react.default.cloneElement(child, childProps))\n );\n };\n\n return Transition;\n}(_react.default.Component);\n\nTransition.contextType = _TransitionGroupContext.default;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`, `'unmounted'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `<Transition>` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `<Transition>` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = _PropTypes.timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _TransitionGroupContext = _interopRequireDefault(require(\"./TransitionGroupContext\"));\n\nvar _ChildMapping = require(\"./utils/ChildMapping\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n /**\n * The `<TransitionGroup>` component manages a set of transition components\n * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n * components, `<TransitionGroup>` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the `<TransitionGroup>`.\n *\n * Note that `<TransitionGroup>` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\n};\n\nvar TransitionGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_assertThisInitialized(_this))); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? (0, _ChildMapping.getInitialChildMapping)(nextProps, handleExited) : (0, _ChildMapping.getNextChildMapping)(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n };\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = (0, _ChildMapping.getChildMapping)(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return _react.default.createElement(_TransitionGroupContext.default.Provider, {\n value: contextValue\n }, children);\n }\n\n return _react.default.createElement(_TransitionGroupContext.default.Provider, {\n value: contextValue\n }, _react.default.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(_react.default.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `<TransitionGroup>` renders a `<div>` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `<div>` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: _propTypes.default.any,\n\n /**\n * A set of `<Transition>` components, that are toggled `in` and out as they\n * leave. the `<TransitionGroup>` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `<Transition>` as\n * with our `<Fade>` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: _propTypes.default.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: _propTypes.default.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: _propTypes.default.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(TransitionGroup);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = _react.default.createContext(null);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _CSSTransition = _interopRequireDefault(require(\"./CSSTransition\"));\n\nvar _ReplaceTransition = _interopRequireDefault(require(\"./ReplaceTransition\"));\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n Transition: _Transition.default,\n TransitionGroup: _TransitionGroup.default,\n ReplaceTransition: _ReplaceTransition.default,\n CSSTransition: _CSSTransition.default\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.getChildMapping = getChildMapping;\nexports.mergeChildMappings = mergeChildMappings;\nexports.getInitialChildMapping = getInitialChildMapping;\nexports.getNextChildMapping = getNextChildMapping;\n\nvar _react = require(\"react\");\n\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\nfunction getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && (0, _react.isValidElement)(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) _react.Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\n\nfunction mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nfunction getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\n\nfunction getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!(0, _react.isValidElement)(child)) return;\n var hasPrev = key in prevChildMapping;\n var hasNext = key in nextChildMapping;\n var prevChild = prevChildMapping[key];\n var isLeaving = (0, _react.isValidElement)(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = (0, _react.cloneElement)(child, {\n in: false\n });\n } else if (hasNext && hasPrev && (0, _react.isValidElement)(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar timeoutsShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n enter: _propTypes.default.number,\n exit: _propTypes.default.number,\n appear: _propTypes.default.number\n}).isRequired]) : null;\nexports.timeoutsShape = timeoutsShape;\nvar classNamesShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n enter: _propTypes.default.string,\n exit: _propTypes.default.string,\n active: _propTypes.default.string\n}), _propTypes.default.shape({\n enter: _propTypes.default.string,\n enterDone: _propTypes.default.string,\n enterActive: _propTypes.default.string,\n exit: _propTypes.default.string,\n exitDone: _propTypes.default.string,\n exitActive: _propTypes.default.string\n})]) : null;\nexports.classNamesShape = classNamesShape;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"widths\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType, isObject } from './utils';\nvar colWidths = ['xs', 'sm', 'md', 'lg', 'xl'];\nvar stringOrNumberProp = PropTypes.oneOfType([PropTypes.number, PropTypes.string]);\nvar columnProps = PropTypes.oneOfType([PropTypes.bool, PropTypes.number, PropTypes.string, PropTypes.shape({\n size: PropTypes.oneOfType([PropTypes.bool, PropTypes.number, PropTypes.string]),\n order: stringOrNumberProp,\n offset: stringOrNumberProp\n})]);\nvar propTypes = {\n tag: tagPropType,\n xs: columnProps,\n sm: columnProps,\n md: columnProps,\n lg: columnProps,\n xl: columnProps,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n widths: PropTypes.array\n};\nvar defaultProps = {\n tag: 'div',\n widths: colWidths\n};\n\nvar getColumnSizeClass = function getColumnSizeClass(isXs, colWidth, colSize) {\n if (colSize === true || colSize === '') {\n return isXs ? 'col' : \"col-\" + colWidth;\n } else if (colSize === 'auto') {\n return isXs ? 'col-auto' : \"col-\" + colWidth + \"-auto\";\n }\n\n return isXs ? \"col-\" + colSize : \"col-\" + colWidth + \"-\" + colSize;\n};\n\nvar Col = function Col(props) {\n var className = props.className,\n cssModule = props.cssModule,\n widths = props.widths,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var colClasses = [];\n widths.forEach(function (colWidth, i) {\n var columnProp = props[colWidth];\n delete attributes[colWidth];\n\n if (!columnProp && columnProp !== '') {\n return;\n }\n\n var isXs = !i;\n\n if (isObject(columnProp)) {\n var _classNames;\n\n var colSizeInterfix = isXs ? '-' : \"-\" + colWidth + \"-\";\n var colClass = getColumnSizeClass(isXs, colWidth, columnProp.size);\n colClasses.push(mapToCssModules(classNames((_classNames = {}, _classNames[colClass] = columnProp.size || columnProp.size === '', _classNames[\"order\" + colSizeInterfix + columnProp.order] = columnProp.order || columnProp.order === 0, _classNames[\"offset\" + colSizeInterfix + columnProp.offset] = columnProp.offset || columnProp.offset === 0, _classNames)), cssModule));\n } else {\n var _colClass = getColumnSizeClass(isXs, colWidth, columnProp);\n\n colClasses.push(_colClass);\n }\n });\n\n if (!colClasses.length) {\n colClasses.push('col');\n }\n\n var classes = mapToCssModules(classNames(className, colClasses), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nCol.propTypes = propTypes;\nCol.defaultProps = defaultProps;\nexport default Col;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"fluid\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n fluid: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'div'\n};\n\nvar Container = function Container(props) {\n var className = props.className,\n cssModule = props.cssModule,\n fluid = props.fluid,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var containerClass = 'container';\n\n if (fluid === true) {\n containerClass = 'container-fluid';\n } else if (fluid) {\n containerClass = \"container-\" + fluid;\n }\n\n var classes = mapToCssModules(classNames(className, containerClass), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nContainer.propTypes = propTypes;\nContainer.defaultProps = defaultProps;\nexport default Container;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"noGutters\", \"tag\", \"form\", \"widths\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar rowColWidths = ['xs', 'sm', 'md', 'lg', 'xl'];\nvar rowColsPropType = PropTypes.oneOfType([PropTypes.number, PropTypes.string]);\nvar propTypes = {\n tag: tagPropType,\n noGutters: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n form: PropTypes.bool,\n xs: rowColsPropType,\n sm: rowColsPropType,\n md: rowColsPropType,\n lg: rowColsPropType,\n xl: rowColsPropType\n};\nvar defaultProps = {\n tag: 'div',\n widths: rowColWidths\n};\n\nvar Row = function Row(props) {\n var className = props.className,\n cssModule = props.cssModule,\n noGutters = props.noGutters,\n Tag = props.tag,\n form = props.form,\n widths = props.widths,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var colClasses = [];\n widths.forEach(function (colWidth, i) {\n var colSize = props[colWidth];\n delete attributes[colWidth];\n\n if (!colSize) {\n return;\n }\n\n var isXs = !i;\n colClasses.push(isXs ? \"row-cols-\" + colSize : \"row-cols-\" + colWidth + \"-\" + colSize);\n });\n var classes = mapToCssModules(classNames(className, noGutters ? 'no-gutters' : null, form ? 'form-row' : 'row', colClasses), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nRow.propTypes = propTypes;\nRow.defaultProps = defaultProps;\nexport default Row;","import PropTypes from 'prop-types'; // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.4/js/src/modal.js#L436-L443\n\nexport function getScrollbarWidth() {\n var scrollDiv = document.createElement('div'); // .modal-scrollbar-measure styles // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.4/scss/_modal.scss#L106-L113\n\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n}\nexport function setScrollbarWidth(padding) {\n document.body.style.paddingRight = padding > 0 ? padding + \"px\" : null;\n}\nexport function isBodyOverflowing() {\n return document.body.clientWidth < window.innerWidth;\n}\nexport function getOriginalBodyPadding() {\n var style = window.getComputedStyle(document.body, null);\n return parseInt(style && style.getPropertyValue('padding-right') || 0, 10);\n}\nexport function conditionallyUpdateScrollbar() {\n var scrollbarWidth = getScrollbarWidth(); // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.6/js/src/modal.js#L433\n\n var fixedContent = document.querySelectorAll('.fixed-top, .fixed-bottom, .is-fixed, .sticky-top')[0];\n var bodyPadding = fixedContent ? parseInt(fixedContent.style.paddingRight || 0, 10) : 0;\n\n if (isBodyOverflowing()) {\n setScrollbarWidth(bodyPadding + scrollbarWidth);\n }\n}\nvar globalCssModule;\nexport function setGlobalCssModule(cssModule) {\n globalCssModule = cssModule;\n}\nexport function mapToCssModules(className, cssModule) {\n if (className === void 0) {\n className = '';\n }\n\n if (cssModule === void 0) {\n cssModule = globalCssModule;\n }\n\n if (!cssModule) return className;\n return className.split(' ').map(function (c) {\n return cssModule[c] || c;\n }).join(' ');\n}\n/**\n * Returns a new object with the key/value pairs from `obj` that are not in the array `omitKeys`.\n */\n\nexport function omit(obj, omitKeys) {\n var result = {};\n Object.keys(obj).forEach(function (key) {\n if (omitKeys.indexOf(key) === -1) {\n result[key] = obj[key];\n }\n });\n return result;\n}\n/**\n * Returns a filtered copy of an object with only the specified keys.\n */\n\nexport function pick(obj, keys) {\n var pickKeys = Array.isArray(keys) ? keys : [keys];\n var length = pickKeys.length;\n var key;\n var result = {};\n\n while (length > 0) {\n length -= 1;\n key = pickKeys[length];\n result[key] = obj[key];\n }\n\n return result;\n}\nvar warned = {};\nexport function warnOnce(message) {\n if (!warned[message]) {\n /* istanbul ignore else */\n if (typeof console !== 'undefined') {\n console.error(message); // eslint-disable-line no-console\n }\n\n warned[message] = true;\n }\n}\nexport function deprecated(propType, explanation) {\n return function validate(props, propName, componentName) {\n if (props[propName] !== null && typeof props[propName] !== 'undefined') {\n warnOnce(\"\\\"\" + propName + \"\\\" property of \\\"\" + componentName + \"\\\" has been deprecated.\\n\" + explanation);\n }\n\n for (var _len = arguments.length, rest = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n rest[_key - 3] = arguments[_key];\n }\n\n return propType.apply(void 0, [props, propName, componentName].concat(rest));\n };\n} // Shim Element if needed (e.g. in Node environment)\n\nvar Element = typeof window === 'object' && window.Element || function () {};\n\nexport function DOMElement(props, propName, componentName) {\n if (!(props[propName] instanceof Element)) {\n return new Error('Invalid prop `' + propName + '` supplied to `' + componentName + '`. Expected prop to be an instance of Element. Validation failed.');\n }\n}\nexport var targetPropType = PropTypes.oneOfType([PropTypes.string, PropTypes.func, DOMElement, PropTypes.shape({\n current: PropTypes.any\n})]);\nexport var tagPropType = PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.shape({\n $$typeof: PropTypes.symbol,\n render: PropTypes.func\n}), PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.shape({\n $$typeof: PropTypes.symbol,\n render: PropTypes.func\n})]))]);\n/* eslint key-spacing: [\"error\", { afterColon: true, align: \"value\" }] */\n// These are all setup to match what is in the bootstrap _variables.scss\n// https://github.com/twbs/bootstrap/blob/v4-dev/scss/_variables.scss\n\nexport var TransitionTimeouts = {\n Fade: 150,\n // $transition-fade\n Collapse: 350,\n // $transition-collapse\n Modal: 300,\n // $modal-transition\n Carousel: 600 // $carousel-transition\n\n}; // Duplicated Transition.propType keys to ensure that Reactstrap builds\n// for distribution properly exclude these keys for nested child HTML attributes\n// since `react-transition-group` removes propTypes in production builds.\n\nexport var TransitionPropTypeKeys = ['in', 'mountOnEnter', 'unmountOnExit', 'appear', 'enter', 'exit', 'timeout', 'onEnter', 'onEntering', 'onEntered', 'onExit', 'onExiting', 'onExited'];\nexport var TransitionStatuses = {\n ENTERING: 'entering',\n ENTERED: 'entered',\n EXITING: 'exiting',\n EXITED: 'exited'\n};\nexport var keyCodes = {\n esc: 27,\n space: 32,\n enter: 13,\n tab: 9,\n up: 38,\n down: 40,\n home: 36,\n end: 35,\n n: 78,\n p: 80\n};\nexport var PopperPlacements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\nexport var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nexport function isReactRefObj(target) {\n if (target && typeof target === 'object') {\n return 'current' in target;\n }\n\n return false;\n}\n\nfunction getTag(value) {\n if (value == null) {\n return value === undefined ? '[object Undefined]' : '[object Null]';\n }\n\n return Object.prototype.toString.call(value);\n}\n\nexport function toNumber(value) {\n var type = typeof value;\n var NAN = 0 / 0;\n\n if (type === 'number') {\n return value;\n }\n\n if (type === 'symbol' || type === 'object' && getTag(value) === '[object Symbol]') {\n return NAN;\n }\n\n if (isObject(value)) {\n var other = typeof value.valueOf === 'function' ? value.valueOf() : value;\n value = isObject(other) ? \"\" + other : other;\n }\n\n if (type !== 'string') {\n return value === 0 ? value : +value;\n }\n\n value = value.replace(/^\\s+|\\s+$/g, '');\n var isBinary = /^0b[01]+$/i.test(value);\n return isBinary || /^0o[0-7]+$/i.test(value) ? parseInt(value.slice(2), isBinary ? 2 : 8) : /^[-+]0x[0-9a-f]+$/i.test(value) ? NAN : +value;\n}\nexport function isObject(value) {\n var type = typeof value;\n return value != null && (type === 'object' || type === 'function');\n}\nexport function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n\n var tag = getTag(value);\n return tag === '[object Function]' || tag === '[object AsyncFunction]' || tag === '[object GeneratorFunction]' || tag === '[object Proxy]';\n}\nexport function findDOMElements(target) {\n if (isReactRefObj(target)) {\n return target.current;\n }\n\n if (isFunction(target)) {\n return target();\n }\n\n if (typeof target === 'string' && canUseDOM) {\n var selection = document.querySelectorAll(target);\n\n if (!selection.length) {\n selection = document.querySelectorAll(\"#\" + target);\n }\n\n if (!selection.length) {\n throw new Error(\"The target '\" + target + \"' could not be identified in the dom, tip: check spelling\");\n }\n\n return selection;\n }\n\n return target;\n}\nexport function isArrayOrNodeList(els) {\n if (els === null) {\n return false;\n }\n\n return Array.isArray(els) || canUseDOM && typeof els.length === 'number';\n}\nexport function getTarget(target, allElements) {\n var els = findDOMElements(target);\n\n if (allElements) {\n if (isArrayOrNodeList(els)) {\n return els;\n }\n\n if (els === null) {\n return [];\n }\n\n return [els];\n } else {\n if (isArrayOrNodeList(els)) {\n return els[0];\n }\n\n return els;\n }\n}\nexport var defaultToggleEvents = ['touchstart', 'click'];\nexport function addMultipleEventListeners(_els, handler, _events, useCapture) {\n var els = _els;\n\n if (!isArrayOrNodeList(els)) {\n els = [els];\n }\n\n var events = _events;\n\n if (typeof events === 'string') {\n events = events.split(/\\s+/);\n }\n\n if (!isArrayOrNodeList(els) || typeof handler !== 'function' || !Array.isArray(events)) {\n throw new Error(\"\\n The first argument of this function must be DOM node or an array on DOM nodes or NodeList.\\n The second must be a function.\\n The third is a string or an array of strings that represents DOM events\\n \");\n }\n\n Array.prototype.forEach.call(events, function (event) {\n Array.prototype.forEach.call(els, function (el) {\n el.addEventListener(event, handler, useCapture);\n });\n });\n return function removeEvents() {\n Array.prototype.forEach.call(events, function (event) {\n Array.prototype.forEach.call(els, function (el) {\n el.removeEventListener(event, handler, useCapture);\n });\n });\n };\n}\nexport var focusableElements = ['a[href]', 'area[href]', 'input:not([disabled]):not([type=hidden])', 'select:not([disabled])', 'textarea:not([disabled])', 'button:not([disabled])', 'object', 'embed', '[tabindex]:not(.modal)', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable=\"false\"])'];","export default __webpack_public_path__ + \"static/35c3-congress-everywhere-c6d1ad94c430954d27dc3c4f9347a364.png\";","export default __webpack_public_path__ + \"static/WJAX_2019_266x145-55e9387b7bc7109fb516e61b64516677.jpg\";","export default __webpack_public_path__ + \"static/banner_javaland_2023-bbf849f85a3eda8be541845b1f92ef96.jpg\";","export default __webpack_public_path__ + \"static/banner_jax_2023-bc5c6880e35452bd858c7ef22bd3e1cc.jpg\";","export default __webpack_public_path__ + \"static/banner_jug_saxony_day_2022-34f9a0dd801252b721484ceda6443ff4.png\";","export default __webpack_public_path__ + \"static/banner_wjax_2022-22f85ce5d6858bea82b6b48da9316ec5.jpg\";","export default __webpack_public_path__ + \"static/entwickler_tutorials_logo-d1aef911fdec3b2ac40683f00947db5a.jpg\";","export default __webpack_public_path__ + \"static/grillen-0c716ec2dd81bef5ed8583454d2defbf.jpg\";","export default __webpack_public_path__ + \"static/icon-83fc2d3536f1fb90c67ad3e83e89d25f.png\";","export default __webpack_public_path__ + \"static/javaland_2019_banner-089cf335f7276dc79077402b7302112f.jpg\";","export default __webpack_public_path__ + \"static/javaland_2020_banner-c3150179ad8ff882658bab7c381512bf.jpg\";","export default __webpack_public_path__ + \"static/javaland_2022_banner-2b21bf73ef9d13468083f1c54cd4ee44.jpg\";","export default __webpack_public_path__ + \"static/javaland_2024_banner-5b59695001cca42ff6a67f0eae6c1923.jpg\";","export default __webpack_public_path__ + \"static/javaland_2024_banner_big-e42472f5949df5b70f614cdd2fcfa716.jpg\";","export default __webpack_public_path__ + \"static/jax19_banner-7156748b7a4266599c288d2d16cc1edf.jpg\";","export default __webpack_public_path__ + \"static/jax20_banner-eeedb179c6845ef6e8745456dcc55f6d.jpg\";","export default __webpack_public_path__ + \"static/jax21_banner-663509eac051c7c0b71a7ec4fb437dee.jpg\";","export default __webpack_public_path__ + \"static/jax22_banner-5841054a4c1366fdb4078210ccadd02e.jpg\";","export default __webpack_public_path__ + \"static/jax_banner-eaf76932797b8cdfbc49630ac9ae5ec3.png\";","export default __webpack_public_path__ + \"static/jdd_2022_banner-cc247ae146c29aa7fc10b7b5167aba5f.png\";","export default __webpack_public_path__ + \"static/jdd_2023_banner-3c34056264fdd0f4b44386abfb3f6422.jpg\";","export default __webpack_public_path__ + \"static/kickerking_logo-56e0c6abf8c0d609c15ca2da730a33ee.jpg\";","export default __webpack_public_path__ + \"static/lernfabrik-efe6c92d2c437c2f636b8556a6997d04.png\";","export default __webpack_public_path__ + \"static/logo-1d738a22f39c568c148bd4f6433b2ff4.png\";","export default \"data:image/jpeg;base64,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\"","export default __webpack_public_path__ + \"static/mitp_logo_gross-6e7375d19fabf502c174d0ad5c5e8bea.png\";","export default __webpack_public_path__ + \"static/christian_kuemmel-0347c7fb7d78824aa63e233f88dffd44.jpg\";","export default __webpack_public_path__ + \"static/christoph_menzel-b4b6a917ca643c903f625caafb618b50.png\";","export default __webpack_public_path__ + \"static/damian_dudziec-30f60ff25d6e0a6722a507b94aafe3d2.png\";","export default __webpack_public_path__ + \"static/daniel_fesenmeyer-6f6477e2c7049f9abfbfd082fff388fb.jpg\";","export default __webpack_public_path__ + \"static/daniel_sulyok-eeee198794fffc1d559c61993cf9d5fd.jpg\";","export default __webpack_public_path__ + \"static/denny.israel-c4d6c7197b3f4945e6589cd7a084bf38.jpg\";","export default __webpack_public_path__ + \"static/gerrit_grunwald-d23d6f6ff244d911d3b7f020ee11a394.jpg\";","export default __webpack_public_path__ + \"static/gregor_trefs-825faee3a18b040f9509c18b4568f760.png\";","export default __webpack_public_path__ + \"static/hannes_kretschmer-c9cb2402d5c4f5daa47eda2433057a93.jpg\";","export default __webpack_public_path__ + \"static/hendrik_ebbers-2ed57b5c4e2c1d1fd234f9c41f5c420e.png\";","export default __webpack_public_path__ + \"static/jens_leuschner-48076ed40eef2f9361651fb1f947ecf2.jpg\";","export default __webpack_public_path__ + \"static/joerg_laessig-eb39f697b764842bbeca75e4ccbfeffc.jpg\";","export default __webpack_public_path__ + \"static/lars_roewekamp-b3ea86bde9c25bb281593ce876b4dc99.png\";","export default __webpack_public_path__ + \"static/maik_wagner-89df35798ec379960b97c1c0931fd742.jpg\";","export default __webpack_public_path__ + \"static/manuel_mauky-a216cd990743c6e5169525d5ad73d4e0.jpg\";","export default __webpack_public_path__ + \"static/marco_gotthans-c39f9f81f98ae3b9195d297e3cb4cd99.png\";","export default __webpack_public_path__ + \"static/mariusz_zienkiewicz-b5c53411e3d6cb7fa6979441ee4ee402.jpg\";","export default __webpack_public_path__ + \"static/markus_kett-bdd63f175e217c2cbd7092ad5c98f837.png\";","export default __webpack_public_path__ + \"static/markus_ullrich-e802330df6a22f6444fed84b5e04b1c2.jpg\";","export default __webpack_public_path__ + \"static/markus_weiland-6b6225ccdec6091cce482b79a2978750.jpg\";","export default __webpack_public_path__ + \"static/marlene_knoche-eebdcba4bf110a0be3150bfcca614a99.jpg\";","export default __webpack_public_path__ + \"static/max_wielsch-9e0e7d64ad8f1d33cdf8c3cf983a4a74.jpg\";","export default __webpack_public_path__ + \"static/michael_hunger-99b6a2ea0ee3b58a67d50570e5b82639.png\";","export default __webpack_public_path__ + \"static/michael_simons-d64a89b53c50eb414d0812c291f6034e.jpg\";","export default __webpack_public_path__ + \"static/nico_foerster-67056fb35ac3744a13faece5302e6b79.jpg\";","export default __webpack_public_path__ + \"static/oliver_drotbohm-388d8f59a5e927511121e4138277e4b6.png\";","export default __webpack_public_path__ + \"static/patryk_lewandowski-4546bdb44e6a627571416b678b3ba8a8.jpg\";","export default __webpack_public_path__ + \"static/pawel_adaszewski-3d03250d6e6c2c7f91c1888aae864c93.jpg\";","export default __webpack_public_path__ + \"static/roland_weisleder-df413237239aecefd7d0743224f4d121.jpg\";","export default __webpack_public_path__ + \"static/sergej_tihonov-e06adf34f9ec9680fa9bc80594bfe8b0.jpg\";","export default __webpack_public_path__ + \"static/simon_roloff-a3c56d1d0c1b361c98d7ae20fd453aa3.png\";","export default __webpack_public_path__ + \"static/stefan_bley-fdea1a834e82acc998437adc03cb264b.jpg\";","export default __webpack_public_path__ + \"static/stefan_zoerner-de8ec4c8f9fcaeb93430ac5e3bcb9c11.jpg\";","export default __webpack_public_path__ + \"static/stefan_zoerner_2-b7e42e02c946884aa386a5f2d8f48d13.jpg\";","export default __webpack_public_path__ + \"static/stephan_strehler-4a163d44cae1a55852c570c2378fb7ae.jpg\";","export default __webpack_public_path__ + \"static/sven_hoffmann-e26687caf9bd0601eae888558eb65150.jpg\";","export default __webpack_public_path__ + \"static/thilo_frotscher-3c8f640270ed0f5cc7568af5b1d1c2c0.jpg\";","export default __webpack_public_path__ + \"static/uwe_manteuffel-8114dc136d03e15e9601c2262df2f0c1.jpg\";","export default __webpack_public_path__ + \"static/wolfgang_weigend-d8102173c06904bfddaf28fcfce91e19.jpg\";","export default __webpack_public_path__ + \"static/plakat_2016_01-d966621696c2b1c19dbe9b66378b1fea.png\";","export default __webpack_public_path__ + \"static/plakat_2016_03-7a057c1c415a722e539905543aa25254.png\";","export default __webpack_public_path__ + \"static/plakat_2016_05-033bee59571b15df5df146a1b6fb64a4.png\";","export default __webpack_public_path__ + \"static/plakat_2016_09-dea570ddfd68d92913587725dca3de3e.png\";","export default __webpack_public_path__ + \"static/plakat_2016_11-03b6d7da4bd7c67f0b2af9f9ef722486.png\";","export default __webpack_public_path__ + \"static/plakat_2017_01-9139600192a183f0e227415c38a3a0c1.png\";","export default __webpack_public_path__ + \"static/plakat_2017_02-79fae7d293949c9f22d118c8cfc2a79b.png\";","export default __webpack_public_path__ + \"static/plakat_2017_03-b5b1d0b94001a2fe20f7204603857151.png\";","export default __webpack_public_path__ + \"static/plakat_2017_04-ede659ffb71c073c02473ee425c031f4.png\";","export default __webpack_public_path__ + \"static/plakat_2017_05-9db3e7ead6eb46db91a6d1a3ab90eef6.png\";","export default __webpack_public_path__ + \"static/plakat_2017_07-73f719582646f6a79c80b1c23c68e785.png\";","export default __webpack_public_path__ + \"static/plakat_2017_10-671ebe33d4c06ae3ed85b430792d8fc4.png\";","export default __webpack_public_path__ + \"static/plakat_2017_11-6f8a316b573a05fe0d75803c55e9f682.png\";","export default __webpack_public_path__ + \"static/plakat_2018_01-a3b57b49681719103100c434c462a40f.png\";","export default __webpack_public_path__ + \"static/plakat_2018_02-159b14fa302afb2b6d58c0b2e7da74d5.png\";","export default __webpack_public_path__ + \"static/plakat_2018_03-1cc45da49f0c4722ce031504e9f464d9.png\";","export default __webpack_public_path__ + \"static/plakat_2018_04-4f511f39b86be771fad22e5844350f7e.png\";","export default __webpack_public_path__ + \"static/plakat_2018_05-23d6d639a541e033911bcd0ce28c07a6.png\";","export default __webpack_public_path__ + \"static/plakat_2018_06-b986bed18b94821c4effba69f8418d40.png\";","export default __webpack_public_path__ + \"static/plakat_2018_09-e686dd9a4dd09e9273ee9330abbc5a1b.png\";","export default __webpack_public_path__ + \"static/plakat_2018_11-5285241fc6482f5c399ce71128d436a4.png\";","export default __webpack_public_path__ + \"static/plakat_2019_01-9d0fe3cddd74fe102b73fe2ed600814e.png\";","export default __webpack_public_path__ + \"static/plakat_2019_02-db09d0b46fe10650ce99a55cf45dd761.png\";","export default __webpack_public_path__ + \"static/plakat_2019_03-8aa66165d15f5467aa29d75d6c714b19.png\";","export default __webpack_public_path__ + \"static/plakat_2019_04-928b54e2c9fdc98e3a8c2f07af460a28.png\";","export default __webpack_public_path__ + \"static/plakat_2019_05-b3ffd0d83022f50c00137c387b1e5198.png\";","export default __webpack_public_path__ + \"static/plakat_2019_06-8df07980c71663696909e4508b42a113.png\";","export default __webpack_public_path__ + \"static/plakat_2019_11-3c93d7cda2405a7a1c36c2154da1aed4.png\";","export default __webpack_public_path__ + \"static/plakat_2020-01-62c3fbe04afc6d77091b7197e74940d1.png\";","export default __webpack_public_path__ + \"static/plakat_2020_04-e8cfc3c64fc8cdcc823625f91d832f1c.png\";","export default __webpack_public_path__ + \"static/plakat_2020_07-dbc06d58631a1697651ae157d44b7d09.png\";","export default __webpack_public_path__ + \"static/plakat_2020_11-cdcfef5b2674d29f1a08c9b7cf0ebad0.png\";","export default __webpack_public_path__ + \"static/plakat_2021_01-08228b1141fc72ec0d867d08ce89e14f.png\";","export default __webpack_public_path__ + \"static/plakat_2021_06-c0638a51678741cace9ec84a9dc907c9.png\";","export default __webpack_public_path__ + \"static/plakat_2022_06-510beda12016fc41e12ee29961cb5fe6.png\";","export default __webpack_public_path__ + \"static/plakat_2022_10-44c9c932fdf813596036a584b4798eb2.png\";","export default __webpack_public_path__ + \"static/plakat_2022_11-6c0f7d8395ba77bb26ab83224867e54a.png\";","export default __webpack_public_path__ + \"static/plakat_2023_01-faaef47c50c0892c4dff9bef2b2d1425.png\";","export default __webpack_public_path__ + \"static/plakat_2023_02-8e9d416e7f80cec11420d8ba550623ea.png\";","export default __webpack_public_path__ + \"static/plakat_2023_03-cc5b88f0a7dcf4a1bdf40ca0bbb74d56.png\";","export default __webpack_public_path__ + \"static/plakat_2023_04-4bcd6edf02f22ddb9377f65606c7ad51.png\";","export default __webpack_public_path__ + \"static/plakat_2023_05-5a5385953c33a10a67e4285d5777a21a.png\";","export default __webpack_public_path__ + \"static/plakat_2023_06-b66f0d9df73973330992646d28f9fa74.png\";","export default __webpack_public_path__ + \"static/plakat_2023_09-166049e8b21b32600dbab5da6d7a1a70.png\";","export default __webpack_public_path__ + \"static/plakat_2023_10-e7c85fc8de82208879733a49c119aa9b.png\";","export default __webpack_public_path__ + \"static/plakat_2023_11-70c9a4a049551c4e7d406192b58232cf.png\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/saxsys_logo-9586022129a4e22597f0771c68d11d42.jpg\";","export default __webpack_public_path__ + \"static/wjax21_banner-7ccb9feb88e112d9494f555db2c363d0.jpg\";","export default __webpack_public_path__ + \"static/zeiss-logo-rgb-7d623d17dbef71d31522f884205cdece.png\";","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","noop","_WINDOW","_DOCUMENT","_MUTATION_OBSERVER$1","_PERFORMANCE","mark","measure","window","document","MutationObserver","performance","_ref$userAgent","navigator","userAgent","undefined","WINDOW","DOCUMENT","MUTATION_OBSERVER","PERFORMANCE","IS_BROWSER","IS_DOM","documentElement","head","addEventListener","createElement","IS_IE","indexOf","DEFAULT_REPLACEMENT_CLASS","DATA_FA_I2SVG","DATA_FA_PSEUDO_ELEMENT","PRODUCTION","oneToTen","oneToTwenty","concat","ATTRIBUTES_WATCHED_FOR_MUTATION","RESERVED_CLASSES","n","createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","defineProperty","key","Constructor","protoProps","staticProps","prototype","_extends","assign","arguments","source","hasOwnProperty","call","toConsumableArray","arr","Array","isArray","arr2","from","initial","FontAwesomeConfig","initialKeys","_default","familyPrefix","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","keepOriginalSource","measurePerformance","showMissingIcons","config$1","update","newConfig","params","_params$asNewDefault","asNewDefault","validKeys","ok","k","forEach","configKey","w","styles","hooks","shims","namespace","functions","loaded","doScroll","test","readyState","listener","removeEventListener","fn","d","meaninglessTransform","size","x","y","rotate","flipX","flipY","insertCss","css","style","setAttribute","innerHTML","headChildren","childNodes","beforeChild","child","tagName","toUpperCase","insertBefore","_uniqueId","nextUniqueId","toArray","obj","array","classArray","node","classList","getAttribute","split","filter","getIconName","cls","name","parts","prefix","iconName","slice","join","htmlEscape","str","replace","joinStyles","reduce","acc","styleName","transformIsMeaningful","transform","transformForSvg","_ref","containerWidth","iconWidth","outer","inner","path","ALL_SPACE","width","height","makeInlineSvgAbstract","_params$icons","icons","main","mask","symbol","title","extra","_params$watchable","watchable","found","widthClass","Math","ceil","attrClass","classes","content","children","attributes","push","tag","args","_ref2","mainWidth","mainPath","icon","maskWidth","maskPath","trans","maskRect","fill","maskInnerGroup","maskOuterGroup","maskId","clipId","defs","maskUnits","maskContentUnits","makeIconMasking","styleString","makeIconStandard","asSymbol","offset","asIcon","makeLayersTextAbstract","_params$watchable2","_ref2$width","_ref2$height","_ref2$startCentered","startCentered","val","transformForCss","class","noop$2","p","preamble","end","perf","subject","initialValue","thisContext","result","iterator","func","a","b","c","bindInternal4","styles$2","_byUnicode","_byLigature","_byOldName","build","lookup","reducer","ligatures","ligature","hasRegular","shim","oldName","styles$1","getCanonicalIcon","values","rest","iconFromMapping","mapping","toHtml","abstractNodes","_abstractNodes$attrib","_abstractNodes$childr","attributeName","trim","joinAttributes","noop$1","isWatched","mutators","mutation","newOuterHTML","parentNode","outerHTML","toLowerCase","newNode","replaceChild","nest","abstract","forSvg","RegExp","splitClasses","match","toSvg","toNode","newInnerHTML","perform","mutations","callback","callbackFunction","requestAnimationFrame","op","mutator","disabled","mo","classParser","existingPrefix","existingIconName","innerText","unicode","byUnicode","charCodeAt","toString","toHex","parseTransformString","transformString","first","parseFloat","isNaN","parseMeta","_classParser","extraClasses","extraStyles","prop","value","styleParser","transformParser","symbolParser","extraAttributes","attr","attributesParser","maskParser","MissingIcon","error","this","message","stack","create","constructor","FILL","ANIMATION_BASE","attributeType","repeatCount","dur","RING","OPACITY_ANIMATE","missing","cx","cy","r","opacity","LAYERS_TEXT_CLASSNAME","FONT_FAMILY_PATTERN","STYLE_TO_PREFIX","findIcon","generateMutation","nodeMeta","computedFontSize","parseInt","getComputedStyle","fontSize","boundingClientRect","getBoundingClientRect","generateLayersText","generateSvgReplacementMutation","remove","removeChild","root","operation","querySelectorAll","pos","fontFamily","getPropertyValue","pseudoElement","nextSibling","textContent","substr","firstChild","appendChild","onTree","htmlClassList","hclAdd","suffix","add","HTML_CLASS_I2SVG_BASE_CLASS","hclRemove","prefixes","prefixesDomQuery","candidates","console","onNode","drc","fp","rc","s","dPatt","rPatt","define","normalized","addPack","Library","instance","TypeError","classCallCheck","definitions","_this","_len","_key","additions","_pullDefinitions","definition","_normalized$key","prepIcon","_cssInserted","ensureCss","apiObject","abstractCreator","get","container","html","findIconDefinition","_params$prefix","library","next","dom","i2svg","_params$node","_params$callback","iconDefinition","_params$transform","_params$symbol","_params$mask","_params$title","_params$classes","_params$attributes","_params$styles","type","maybeIconDefinition","api$1","noAuto","disconnect","parse","text","_params$transform2","_params$title2","_params$classes2","_params$attributes2","_params$styles2","layer","assembler","autoReplace","set","bunker","FontAwesome","options","treeCallback","nodeCallback","pseudoElementsCallback","objects","mutationRecord","addedNodes","_getCanonicalIcon","observe","getElementsByTagName","childList","characterData","subtree","setTimeout","addShims","_namespace$shims","apply","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread2","_defineProperty","getOwnPropertyDescriptors","_typeof","Symbol","_defineProperties","_slicedToArray","_arrayWithHoles","_i","_s","_e","_arr","_n","_d","done","err","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","minLen","len","_MUTATION_OBSERVER","_familyProxy","_familyProxy2","_familyProxy3","_familyProxy4","_familyProxy5","DATA_PREFIX","DATA_ICON","TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS","FAMILY_CLASSIC","FAMILY_SHARP","FAMILIES","familyProxy","Proxy","PREFIX_TO_STYLE","PREFIX_TO_LONG_STYLE","LONG_STYLE_TO_PREFIX","ICON_SELECTION_SYNTAX_PATTERN","FONT_WEIGHT_TO_PREFIX","DUOTONE_CLASSES","Set","bind","querySelector","coerce","element","getAttrConfig","styleDefault","familyDefault","cssPrefix","mutateApproach","_config","config","_onChangeCb","cb","random","dcp","customPropPatt","InjectCSS","mixout","beforeDOMElementCreation","beforeI2svg","domready","decoded","string","output","counter","ucs2decode","normalizeIcons","defineIcons","_params$skipHooks","skipHooks","_LONG_STYLE","_PREFIXES","_PREFIXES_FOR_FAMILY","LONG_STYLE","_defaultUsablePrefix","_byOldUnicode","_byAlias","PREFIXES","alias","aliases","autoFetchSvg","shimLookups","maybeNameMaybeUnicode","names","unicodes","getCanonicalPrefix","family","byAlias","byOldName","getDefaultUsablePrefix","styleOrPrefix","_params$family","defined","PREFIXES_FOR_FAMILY","_famProps","_params$skipLookups","skipLookups","famProps","givenPrefix","includes","some","v","canonical","aliasIconName","_classCallCheck","longPrefix","_plugins","_hooks","providers","defaultProviderKeys","chainHooks","hook","accumulator","hookFns","hookFn","callHooks","_len2","_key2","callProvided","iconLookup","Promise","reject","watch","autoReplaceSvgRoot","api","_icon","canonicalIcon","_prefix","_params$autoReplaceSv","domVariants","titleId","isUploadedIcon","role","uploadedIconWidthStyle","makeLayersCounterAbstract","asFoundIcon","vectorData","missingIconResolutionMixin","maybeNotifyMissing","createElementNS","convertSVG","abstractObj","_params$ceFn","ceFn","createTextNode","comment","createComment","nodeAsComment","removeAttribute","performOperationSync","frame","disableObservation","enableObservation","_options$treeCallback","_options$nodeCallback","_options$pseudoElemen","_options$observeMutat","observeMutationsRoot","defaultPrefix","hasPrefixAndIcon","contains","nodeType","Node","TEXT_NODE","data","parser","pluginMeta","knownPrefixes","f","all","then","resolvedMutations","catch","render","_params$maskId","_params$titleId","ReplaceElements","mutationObserverCallbacks","provides","providers$$1","generateAbstractIcon","_ref3","nextChild","Layers","LayersCounter","LayersText","CLEAN_CONTENT_PATTERN","SECONDARY_UNICODE_RANGE","replaceForPosition","position","pendingAttribute","oldUnicode","newUnicode","alreadyProcessedPseudoElement","fontWeight","_content","_hexValueFromContent","index","second","cleaned","codePoint","isPrependTen","isDoubled","isSecondary","hexValueFromContent","hexValue","isV4","startsWith","iconIdentifier","iconName4","meta","processable","operations","_unwatched","PowerTransforms","parseNodeAttributes","generateAbstractTransformGrouping","innerTranslate","innerScale","innerRotate","fillBlack","force","Masks","maskData","generateAbstractMask","explicitMaskId","maskInnerGroupChildrenMixin","maskTag","MissingIconIndicator","reduceMotion","matchMedia","matches","missingIconAbstract","gChildren","dot","nextPlugins","mixoutsTo","plugin","tk","sk","registerPlugins","pseudoElements2svg","unwatch","bootstrap","symbolData","parse$1","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","camelize","chr","_excluded","styleToObject","pair","charAt","normalizeIconArgs","objectWithKey","FontAwesomeIcon","ref","iconArgs","maskArgs","className","_classes","beat","fade","beatFade","bounce","shake","flash","spin","spinPulse","spinReverse","pulse","fixedWidth","inverse","border","listItem","flip","rotation","pull","swapOpacity","renderedIcon","_console","log","extraProps","defaultProps","convertCurry","displayName","propTypes","convert","mixins","attrs","_extraProps$style","existingStyle","remaining","hasOwn","classNames","arg","argType","default","_interopRequireDefault","__esModule","_hasClass","baseVal","replaceClassName","origClass","classToRemove","polyfill","Component","active","cssModule","NavItem","Tag","innerRef","onClick","href","NavLink","_React$Component","_proto","preventDefault","_this$props","light","dark","full","fixed","sticky","color","expand","Navbar","_classNames","getExpandClass","NavbarBrand","NavbarToggler","_transitionStatusToCl","_objectSpread","Transition","isOpen","navbar","appear","enter","exit","timeout","transitionStatusToClassHash","getHeight","scrollHeight","Collapse","_Component","state","onEntering","isAppearing","setState","onEntered","onExit","onExiting","offsetHeight","onExited","_this2","otherProps","transitionProps","childProps","in","status","collapseClass","getTransitionClass","tabs","pills","vertical","horizontal","justified","card","Nav","getVerticalClass","LinkItem","to","React","Link","activeClassName","toggle","prevState","collapsed","Container","Row","Col","sm","xs","md","alt","src","require","faMastodon","faTwitter","faFacebook","faEnvelope","faGithub","faCalendarAlt","faRss","bannerJSON","banner","linkTarget","altText","imageName","fontawesome","PageHeader","marginTop","Sidebar","PageFooter","newObj","desc","_interopRequireWildcard","_addClass","_removeClass","_react","_Transition","addClass","removeClass","CSSTransition","subClass","superClass","onEnter","appearing","getClassNames","removeClasses","reflowAndAddClass","appearClassName","doneClassName","enterClassName","isStringClassNames","__proto__","_this$getClassNames6","scrollTop","_reactDom","_TransitionGroup","ReplaceTransition","_args","handleEnter","handleLifecycle","handleEntering","_len3","_key3","handleEntered","_len4","_key4","handleExit","_len5","_key5","handleExiting","_len6","_key6","handleExited","_len7","_key7","handler","idx","originalArgs","_child$props","Children","findDOMNode","inProp","_React$Children$toArr","cloneElement","EXITING","ENTERED","ENTERING","EXITED","UNMOUNTED","_reactLifecyclesCompat","_TransitionGroupContext","context","initialStatus","isMounting","appearStatus","unmountOnExit","mountOnEnter","nextCallback","getDerivedStateFromProps","componentDidMount","updateStatus","componentDidUpdate","prevProps","nextStatus","componentWillUnmount","cancelNextCallback","getTimeouts","mounting","performEnter","performExit","timeouts","enterTimeout","safeSetState","onTransitionEnd","_this3","cancel","nextState","setNextCallback","_this4","event","doesNotHaveTimeoutOrListener","addEndListener","Provider","only","contextType","_ChildMapping","_assertThisInitialized","self","ReferenceError","TransitionGroup","contextValue","firstRender","mounted","nextProps","prevChildMapping","getInitialChildMapping","getNextChildMapping","currentChildMapping","getChildMapping","component","childFactory","createContext","_CSSTransition","_ReplaceTransition","mergeChildMappings","getProp","nextChildMapping","isValidElement","hasPrev","hasNext","prevChild","isLeaving","mapFn","mapper","prev","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","classNamesShape","timeoutsShape","stringOrNumberProp","columnProps","order","lg","xl","widths","getColumnSizeClass","isXs","colWidth","colSize","colClasses","columnProp","colSizeInterfix","colClass","_colClass","fluid","containerClass","rowColsPropType","noGutters","form","globalCssModule","mapToCssModules","omit","omitKeys","pick","pickKeys","Element","propName","componentName","current","tagPropType","$$typeof","TransitionTimeouts","Fade","Modal","Carousel","TransitionPropTypeKeys","TransitionStatuses","isObject"],"sourceRoot":""} \ No newline at end of file diff --git a/datenschutz/index.html b/datenschutz/index.html index 2b44c1ee5..a07f01dda 100644 --- a/datenschutz/index.html +++ b/datenschutz/index.html @@ -354,4 +354,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/debug/index.html b/debug/index.html index 53131b6b0..e7ff7eb13 100644 --- a/debug/index.html +++ b/debug/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/debug/redirects/index.html b/debug/redirects/index.html index f427fef97..68307a09e 100644 --- a/debug/redirects/index.html +++ b/debug/redirects/index.html @@ -9,4 +9,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/impressum/index.html b/impressum/index.html index e917f77c2..43b01a443 100644 --- a/impressum/index.html +++ b/impressum/index.html @@ -359,4 +359,4 @@ <h2>Kontakt:</h2> > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/index.html b/index.html index b2b3f7b3e..5dba14ea1 100644 --- a/index.html +++ b/index.html @@ -347,11 +347,11 @@ </style><style>.gatsby-image-wrapper{position:relative;overflow:hidden}.gatsby-image-wrapper picture.object-fit-polyfill{position:static!important}.gatsby-image-wrapper img{bottom:0;height:100%;left:0;margin:0;max-width:none;padding:0;position:absolute;right:0;top:0;width:100%;object-fit:cover}.gatsby-image-wrapper [data-main-image]{opacity:0;transform:translateZ(0);transition:opacity .25s linear;will-change:opacity}.gatsby-image-wrapper-constrained{display:inline-block;vertical-align:top}</style><noscript><style>.gatsby-image-wrapper noscript [data-main-image]{opacity:1!important}.gatsby-image-wrapper [data-placeholder-image]{opacity:0!important}</style></noscript><script type="module">const e="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;e&&document.body.addEventListener("load",(function(e){const t=e.target;if(void 0===t.dataset.mainImage)return;if(void 0===t.dataset.gatsbyImageSsr)return;let a=null,n=t;for(;null===a&&n;)void 0!==n.parentNode.dataset.gatsbyImageWrapper&&(a=n.parentNode),n=n.parentNode;const o=a.querySelector("[data-placeholder-image]"),r=new Image;r.src=t.currentSrc,r.decode().catch((()=>{})).then((()=>{t.style.opacity=1,o&&(o.style.opacity=0,o.style.transition="opacity 500ms linear")}))}),!0);</script><link rel="icon" href="/favicon-32x32.png?v=2ded17e3b6b8ff05cfb961a4ec8d0c25" type="image/png"/><link rel="manifest" href="/manifest.webmanifest" crossorigin="anonymous"/><link rel="apple-touch-icon" sizes="48x48" href="/icons/icon-48x48.png?v=2ded17e3b6b8ff05cfb961a4ec8d0c25"/><link rel="apple-touch-icon" sizes="72x72" href="/icons/icon-72x72.png?v=2ded17e3b6b8ff05cfb961a4ec8d0c25"/><link rel="apple-touch-icon" sizes="96x96" href="/icons/icon-96x96.png?v=2ded17e3b6b8ff05cfb961a4ec8d0c25"/><link rel="apple-touch-icon" sizes="144x144" href="/icons/icon-144x144.png?v=2ded17e3b6b8ff05cfb961a4ec8d0c25"/><link rel="apple-touch-icon" sizes="192x192" href="/icons/icon-192x192.png?v=2ded17e3b6b8ff05cfb961a4ec8d0c25"/><link rel="apple-touch-icon" sizes="256x256" href="/icons/icon-256x256.png?v=2ded17e3b6b8ff05cfb961a4ec8d0c25"/><link rel="apple-touch-icon" sizes="384x384" href="/icons/icon-384x384.png?v=2ded17e3b6b8ff05cfb961a4ec8d0c25"/><link rel="apple-touch-icon" sizes="512x512" href="/icons/icon-512x512.png?v=2ded17e3b6b8ff05cfb961a4ec8d0c25"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" id="gatsby-focus-wrapper"><nav class="navbar navbar-expand-sm navbar-light bg-light"><div class="container"><a aria-current="page" class="navbar-brand" href="/">Java User Group Görlitz</a><button aria-label="Toggle navigation" type="button" class="navbar-toggler"><span class="navbar-toggler-icon"></span></button><div class="collapse navbar-collapse"><ul class="ml-auto navbar-nav"><li class="nav-item"><a aria-current="page" class="link-item nav-link active" href="/">Aktuell</a></li><li class="nav-item"><a class="link-item nav-link" href="/talks/">Vorträge</a></li><li class="nav-item"><a class="link-item nav-link" href="/posters/">Plakate</a></li><li class="nav-item"><a class="link-item nav-link" href="/unterstuetzer/">Unterstützer</a></li><li class="nav-item"><a class="link-item nav-link" href="/about/">About</a></li><li class="nav-item"><a class="link-item nav-link" href="/mitmachen/">Mitmachen</a></li></ul></div></div></nav><div style="margin-top:1em" class="container"><div class="row"><div class="col-md-9"><h2><a href="/talks/2024-01-31-flutter/">Flutter, der heilige Gral der Cross-Plattform-Entwicklung?!</a></h2><span class="lead">von<!-- --> <a href="/speakers/christoph_menzel/">Christoph Menzel</a></span> | <!-- -->31. Januar 2024<p><a href="/tags/#mobile"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="tag" class="svg-inline--fa fa-tag " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 80V229.5c0 17 6.7 33.3 18.7 45.3l176 176c25 25 65.5 25 90.5 0L418.7 317.3c25-25 25-65.5 0-90.5l-176-176c-12-12-28.3-18.7-45.3-18.7H48C21.5 32 0 53.5 0 80zm112 96c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z"></path></svg> <!-- -->mobile</a>, <a href="/tags/#frontend"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="tag" class="svg-inline--fa fa-tag " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 80V229.5c0 17 6.7 33.3 18.7 45.3l176 176c25 25 65.5 25 90.5 0L418.7 317.3c25-25 25-65.5 0-90.5l-176-176c-12-12-28.3-18.7-45.3-18.7H48C21.5 32 0 53.5 0 80zm112 96c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z"></path></svg> <!-- -->frontend</a>, <a href="/tags/#non-jvm-language"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="tag" class="svg-inline--fa fa-tag " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 80V229.5c0 17 6.7 33.3 18.7 45.3l176 176c25 25 65.5 25 90.5 0L418.7 317.3c25-25 25-65.5 0-90.5l-176-176c-12-12-28.3-18.7-45.3-18.7H48C21.5 32 0 53.5 0 80zm112 96c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z"></path></svg> <!-- -->non-jvm-language</a></p><article class="talk-content"><div><p>Wenn sich Google einem Thema widmet, dann meist richtig und mit vollem Einsatz. Genau das sieht man beim Thema Cross-Plattform: Google entwickelte Flutter, ein UI Framework, mit dem Native Apps für Mobile, Web, Desktop und Embedded mit einer einzigen Codebase in sehr kurzer Zeit entwickelt werden können. Was Flutter so einzigartig macht und warum wir es bei inovex bereits produktiv für Apps einsetzen, zeige ich dir in diesem Talk. Anhand verschiedener Beispiele und Live-Codings siehst du, warum uns Flutter so überzeugt hat. Damit sind wir nicht alleine - Toyota verwendet Flutter bereits für ihre neuen Infotainment Systems und viele weitere namhafte Firmen wie Microsoft, Canonical und BMW setzen ebenfalls auf das Framework. -Lass dich in Flutters Welt der Cross-Plattform entführen und davon begeistern!</p></div><hr/><div style="margin-bottom:1.5em" class="container"><div class="row"><div style="text-align:center;max-width:400px" class="col-12 col-sm-6"><a href="/speakers/christoph_menzel/"><div data-gatsby-image-wrapper="" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:100%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#f8f8f8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/4a93039fc8abcf424a9e4aae04665797/4f03f/christoph_menzel.webp 750w,/static/4a93039fc8abcf424a9e4aae04665797/3cd29/christoph_menzel.webp 1000w" sizes="100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/4a93039fc8abcf424a9e4aae04665797/13677/christoph_menzel.png" data-srcset="/static/4a93039fc8abcf424a9e4aae04665797/f054e/christoph_menzel.png 750w,/static/4a93039fc8abcf424a9e4aae04665797/13677/christoph_menzel.png 1000w" alt="picture of the speaker"/></picture><noscript><picture><source type="image/webp" srcSet="/static/4a93039fc8abcf424a9e4aae04665797/4f03f/christoph_menzel.webp 750w,/static/4a93039fc8abcf424a9e4aae04665797/3cd29/christoph_menzel.webp 1000w" sizes="100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/4a93039fc8abcf424a9e4aae04665797/13677/christoph_menzel.png" srcSet="/static/4a93039fc8abcf424a9e4aae04665797/f054e/christoph_menzel.png 750w,/static/4a93039fc8abcf424a9e4aae04665797/13677/christoph_menzel.png 1000w" alt="picture of the speaker"/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div><div class="col-12 col-sm-6"><div><p><a href="/speakers/christoph_menzel/"><strong>Christoph Menzel</strong></a></p></div><div class="description"><p><strong>Christoph Menzel</strong> ist Software-Entwickler mit Leib und Seele und seit 2022 als Head of Mobile & Web Development Teil des inovex Teams. Clean Code und Testautomatisierung sind für ihn zwei fundamentale Bestandteile guter Software-Entwicklung. +Lass dich in Flutters Welt der Cross-Plattform entführen und davon begeistern!</p></div><a href="/posters/#6540f80b-99c8-5564-862b-6fa611e899df"><div data-gatsby-image-wrapper="" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#c8a858;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/1d7a6f48e70fdbaa09372642cdcfc472/e5d6f/plakat_2024_01.webp 750w,/static/1d7a6f48e70fdbaa09372642cdcfc472/0671f/plakat_2024_01.webp 1080w,/static/1d7a6f48e70fdbaa09372642cdcfc472/7e884/plakat_2024_01.webp 1366w,/static/1d7a6f48e70fdbaa09372642cdcfc472/e2c0d/plakat_2024_01.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt einen Hut und eine Umhängetasche und hat eine Peitsche in der linken Hand. In der rechten Hand hat er einen Gral mit Flügeln, den er begeistert ansieht." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/1d7a6f48e70fdbaa09372642cdcfc472/84817/plakat_2024_01.png" data-srcset="/static/1d7a6f48e70fdbaa09372642cdcfc472/b8e70/plakat_2024_01.png 750w,/static/1d7a6f48e70fdbaa09372642cdcfc472/e5839/plakat_2024_01.png 1080w,/static/1d7a6f48e70fdbaa09372642cdcfc472/f51d5/plakat_2024_01.png 1366w,/static/1d7a6f48e70fdbaa09372642cdcfc472/84817/plakat_2024_01.png 1920w" alt="Poster: Jürgen trägt einen Hut und eine Umhängetasche und hat eine Peitsche in der linken Hand. In der rechten Hand hat er einen Gral mit Flügeln, den er begeistert ansieht."/></picture><noscript><picture><source type="image/webp" srcSet="/static/1d7a6f48e70fdbaa09372642cdcfc472/e5d6f/plakat_2024_01.webp 750w,/static/1d7a6f48e70fdbaa09372642cdcfc472/0671f/plakat_2024_01.webp 1080w,/static/1d7a6f48e70fdbaa09372642cdcfc472/7e884/plakat_2024_01.webp 1366w,/static/1d7a6f48e70fdbaa09372642cdcfc472/e2c0d/plakat_2024_01.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt einen Hut und eine Umhängetasche und hat eine Peitsche in der linken Hand. In der rechten Hand hat er einen Gral mit Flügeln, den er begeistert ansieht." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/1d7a6f48e70fdbaa09372642cdcfc472/84817/plakat_2024_01.png" srcSet="/static/1d7a6f48e70fdbaa09372642cdcfc472/b8e70/plakat_2024_01.png 750w,/static/1d7a6f48e70fdbaa09372642cdcfc472/e5839/plakat_2024_01.png 1080w,/static/1d7a6f48e70fdbaa09372642cdcfc472/f51d5/plakat_2024_01.png 1366w,/static/1d7a6f48e70fdbaa09372642cdcfc472/84817/plakat_2024_01.png 1920w" alt="Poster: Jürgen trägt einen Hut und eine Umhängetasche und hat eine Peitsche in der linken Hand. In der rechten Hand hat er einen Gral mit Flügeln, den er begeistert ansieht."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a><hr/><div style="margin-bottom:1.5em" class="container"><div class="row"><div style="text-align:center;max-width:400px" class="col-12 col-sm-6"><a href="/speakers/christoph_menzel/"><div data-gatsby-image-wrapper="" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:100%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#f8f8f8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/4a93039fc8abcf424a9e4aae04665797/4f03f/christoph_menzel.webp 750w,/static/4a93039fc8abcf424a9e4aae04665797/3cd29/christoph_menzel.webp 1000w" sizes="100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/4a93039fc8abcf424a9e4aae04665797/13677/christoph_menzel.png" data-srcset="/static/4a93039fc8abcf424a9e4aae04665797/f054e/christoph_menzel.png 750w,/static/4a93039fc8abcf424a9e4aae04665797/13677/christoph_menzel.png 1000w" alt="picture of the speaker"/></picture><noscript><picture><source type="image/webp" srcSet="/static/4a93039fc8abcf424a9e4aae04665797/4f03f/christoph_menzel.webp 750w,/static/4a93039fc8abcf424a9e4aae04665797/3cd29/christoph_menzel.webp 1000w" sizes="100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/4a93039fc8abcf424a9e4aae04665797/13677/christoph_menzel.png" srcSet="/static/4a93039fc8abcf424a9e4aae04665797/f054e/christoph_menzel.png 750w,/static/4a93039fc8abcf424a9e4aae04665797/13677/christoph_menzel.png 1000w" alt="picture of the speaker"/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div><div class="col-12 col-sm-6"><div><p><a href="/speakers/christoph_menzel/"><strong>Christoph Menzel</strong></a></p></div><div class="description"><p><strong>Christoph Menzel</strong> ist Software-Entwickler mit Leib und Seele und seit 2022 als Head of Mobile & Web Development Teil des inovex Teams. Clean Code und Testautomatisierung sind für ihn zwei fundamentale Bestandteile guter Software-Entwicklung. Er unterstützt seine Kunden bei der Optimierung von Entwicklungsprozessen, hält Workshops zu Themen wie Unit Tests, Clean Code oder Continuous Integration & Delivery und gibt sein Wissen aktiv auf Konferenzen, Barcamps oder in Fachartikeln weiter.</p></div></div></div></div><hr/><div><p>Datum: <!-- -->31. Januar 2024<!-- -->, <!-- -->19:00 Uhr</p>Ort: <a href="/locations/hochschule_campus/"><address>Hochschule Zittau/Görlitz<br/>Haus G2 Raum 0.10<br/>Brückenstraße 1<br/>02826 Görlitz<br/></address></a></div><br/><p>Die Veranstaltung wird durch die <i>Java User Group Görlitz</i> (im<!-- --> <a href="http://www.ijug.eu/">iJUG Verband</a>) organisiert. <br/>Die Java User Group Görlitz ist ein Projekt des <a href="https://digitale-oberlausitz.eu">Digitale Oberlausitz e.V.</a></p></article></div><div class="col-md-3"><div class="sidebar"><div><div class="row"><div class="col-12 col-sm-6 col-md-12"><img alt="Logo der JUG Görlitz" src="/static/logo-1d738a22f39c568c148bd4f6433b2ff4.png"/></div><div class="col-12 col-sm-6 col-md-12"><strong>Organisiert vom <br/><a href="https://digitale-oberlausitz.eu">Digitale Oberlausitz e.V.</a></strong><p>Wir sind Mitglied im<br/><a href="http://www.ijug.eu/">iJUG Verband</a></p><p>Links:</p><ul class="list-unstyled"><li><a href="https://ijug.social/@Juggr"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="mastodon" class="svg-inline--fa fa-mastodon " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.54 102.54 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z"></path></svg> Mastodon</a></li><li><a href="https://twitter.com/jug_gr"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="twitter" class="svg-inline--fa fa-twitter " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"></path></svg> Twitter</a></li><li><a href="https://www.facebook.com/juggr"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="facebook" class="svg-inline--fa fa-facebook " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z"></path></svg> Facebook</a></li><li><a href="https://groups.google.com/d/forum/juggr"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="envelope" class="svg-inline--fa fa-envelope " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM0 176V384c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V176L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z"></path></svg> Mailing-List</a></li><li><a href="https://github.com/juggr"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="github" class="svg-inline--fa fa-github " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path fill="currentColor" d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg> Github</a></li><li><a href="/jug-goerlitz.ics"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="calendar-days" class="svg-inline--fa fa-calendar-days " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm64 80v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm128 0v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H336zM64 400v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H208zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H336c-8.8 0-16 7.2-16 16z"></path></svg> Kalender (ICAL)</a></li><li><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="rss" class="svg-inline--fa fa-rss " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM128 416c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z"></path></svg> Feeds:<ul><li><a href="/atom.xml">Atom</a></li><li><a href="/rss.xml">RSS</a></li><li><a href="/feed.json">JSON</a></li></ul></li></ul></div></div></div><br/><div class="banner"><a href="https://www.javaland.eu/"><img alt="Banner für JavaLand 2024" src="/static/javaland_2024_banner-5b59695001cca42ff6a67f0eae6c1923.jpg"/></a></div></div></div></div></div><footer class="container footer"><p><a href="/impressum/">Impressum</a> | <a href="/datenschutz/">Datenschutz</a></p></footer></div><div id="gatsby-announcer" style="position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0" aria-live="assertive" aria-atomic="true"></div></div><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/";/*]]>*/</script><!-- slice-start id="_gatsby-scripts-1" --> <script id="gatsby-chunk-mapping" > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/jug-goerlitz.ics b/jug-goerlitz.ics index c7ace02d6..9c259412f 100644 --- a/jug-goerlitz.ics +++ b/jug-goerlitz.ics @@ -7,9 +7,9 @@ X-WR-CALNAME:JUG Görlitz TIMEZONE-ID:Europe/Berlin X-WR-TIMEZONE:Europe/Berlin BEGIN:VEVENT -UID:878d58ed-f800-43bd-9e06-66c82eb8db8e +UID:efecb97e-e6b9-4fcd-b176-0a2f8a0e29c1 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20240424T190000 DTEND;TZID=Europe/Berlin:20240424T220000 SUMMARY:Vortrag "Rust (Teil 2)" - Konstantin Eger @@ -25,9 +25,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Infos demnächst.</p>\n<p>Dieser Vortrag i stierende Bibliotheken und Frameworks eingegangen.</li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:6b992bb1-ce04-438a-9551-e7ccb9accc13 +UID:65dafe59-65e1-4fc9-adab-8cb55566aed5 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20240320T190000 DTEND;TZID=Europe/Berlin:20240320T220000 SUMMARY:Vortrag "Rust (Teil 1): Einführung in die Sprache" - Manuel Mauky @@ -57,9 +57,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Rust ist eine relativ neue Programmierspra </li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:93354d04-7519-41a9-b80a-5257b1fcc593 +UID:4bd53b97-ab3e-4328-a1dc-78bbc6ee7498 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20240228T190000 DTEND;TZID=Europe/Berlin:20240228T220000 SUMMARY:Vortrag "Schlanke Architektur-Reviews" - Stefan Zörner @@ -81,9 +81,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Mit Architekturbewertungen ist es möglich idenz im Bewertungsergebnis.</p> END:VEVENT BEGIN:VEVENT -UID:187348b6-9d33-44b6-b28a-b69306ec6893 +UID:fc953c1c-219c-4029-be78-844cf25bb3c7 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20240131T190000 DTEND;TZID=Europe/Berlin:20240131T220000 SUMMARY:Vortrag "Flutter\, der heilige Gral der Cross-Plattform-Entwicklun @@ -106,9 +106,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Wenn sich Google einem Thema widmet\, dann oss-Plattform entführen und davon begeistern!</p> END:VEVENT BEGIN:VEVENT -UID:905539af-fdd4-4e70-a274-6f92cc734ea9 +UID:e1f34c76-73cf-43dd-82fd-e5ecebe067dc SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20231129T190000 DTEND;TZID=Europe/Berlin:20231129T220000 SUMMARY:Vortrag "What the CRaC - Superfast JVM startup" - Gerrit Grunwald @@ -138,9 +138,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>In einer Welt\, in der Microservices mehr nloads/juggr_What_The_CRaC.pdf">Folien zum Vortrag</a></li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:b0d7946a-97d7-41c4-986c-a7a9b50bf604 +UID:6432067b-d199-48f8-8920-b50ffb5e0e54 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20231025T190000 DTEND;TZID=Europe/Berlin:20231025T220000 SUMMARY:Vortrag "AWS-Infrastruktur mit Java erstellen - CDK in Action" - D @@ -176,9 +176,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Heutzutage gibt es viele Möglichkeiten\, nn.</p> END:VEVENT BEGIN:VEVENT -UID:edafd681-c66e-4714-b4b1-6ba7482fd49e +UID:5ac8b741-4bfa-4f11-a4c8-2d6c4efe7896 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20230927T190000 DTEND;TZID=Europe/Berlin:20230927T220000 SUMMARY:Vortrag "Java 21: Virtuelle Threads" - Patryk Lewandowski @@ -198,9 +198,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Erkunden Sie das aufregende Feature von Ja anzuschließen.</p> END:VEVENT BEGIN:VEVENT -UID:962ddcb2-096d-4c8e-9ffe-18a08f2192ca +UID:6973d0f6-b54e-4711-965d-07a77a0677a2 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20230628T190000 DTEND;TZID=Europe/Berlin:20230628T220000 SUMMARY:Vortrag "GraalVM 23 – Konzepte und Features" - Wolfgang Weigend @@ -228,9 +228,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Die GraalVM ist eine Virtuelle Maschine (V ng Boot und Microservices-Frameworks verwendet werden.</p> END:VEVENT BEGIN:VEVENT -UID:b325e99e-3f4a-4c61-8b8c-c81aa9b8dcfd +UID:6ba4bfc1-dda1-452c-bb04-bde256491c66 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20230531T190000 DTEND;TZID=Europe/Berlin:20230531T220000 SUMMARY:Vortrag "Accessibility in the Wild" - Dániel Sulyok @@ -249,9 +249,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Dániel Sulyok von der Tallence AG stellt gr_a11y.pdf">Folien zum Vortrag</a></li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:e2394286-5d70-4b70-890c-105a8abdfe74 +UID:abf4b80e-f0f2-4b6f-939f-7adb62ad5e98 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20230426T190000 DTEND;TZID=Europe/Berlin:20230426T220000 SUMMARY:Vortrag "ArchUnit: Unit-Tests für deine Java-Architektur" - Rolan @@ -272,9 +272,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Architektur und Code driften immer weiter rekt im Code abbilden können.</p> END:VEVENT BEGIN:VEVENT -UID:26fd9b78-a61b-4856-82d2-6589485b25fd +UID:5585be21-f687-4dc5-b907-29611f0dfd64 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20230329T183000 DTEND;TZID=Europe/Berlin:20230329T213000 SUMMARY:Vortrag "Spring für architekturinteressierte Entwickler:innen" - @@ -309,9 +309,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Die Architektur und das Design einer Appli te der Digitalen Oberlausitz e. V.</a> nachlesen.</p> END:VEVENT BEGIN:VEVENT -UID:54fe711c-55b1-498f-9bf1-28898d5f07ec +UID:4cf21f3a-f872-420d-bc4e-b00de6f0caf2 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20230222T190000 DTEND;TZID=Europe/Berlin:20230222T220000 SUMMARY:Vortrag "Exception First – Stabilisiere deinen Code mit mehr Exc @@ -338,9 +338,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Fehler sind ein fester Bestandteil unserer nst.</p> END:VEVENT BEGIN:VEVENT -UID:9b91b0ab-0c7d-4ea1-aa57-fb5106bb03bf +UID:f4d90641-b3c4-47b4-979b-88330547a1ba SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20230125T190000 DTEND;TZID=Europe/Berlin:20230125T220000 SUMMARY:Vortrag "Content Management neu gedacht mit Contentlab" - Markus W @@ -359,9 +359,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Die Mehrheit aktueller Content Management Instanz zum Verwalten von Veranstaltungen.</p> END:VEVENT BEGIN:VEVENT -UID:665cf146-f997-4b54-b57d-29983e4d675b +UID:898490b1-fc09-493a-a6db-6f10d7a96396 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20221130T190000 DTEND;TZID=Europe/Berlin:20221130T220000 SUMMARY:Vortrag "Kundenspezifisches IAM mit Keycloak" - Daniel Fesenmeyer @@ -380,9 +380,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Keycloak ist ein Open Source IAM (Identity en.</p> END:VEVENT BEGIN:VEVENT -UID:c68ca0b0-f9d9-45aa-a4dc-98cfc568fe20 +UID:5d2e072f-e7cd-4c8a-b8a4-82eea6e7387b SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20221012T190000 DTEND;TZID=Europe/Berlin:20221012T220000 SUMMARY:Vortrag "Industrie 4.0? Das JUGt mich!" - Marco Gotthans @@ -455,9 +455,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Mit der <em>fischertechnik</em> Lernfabrik t überschritten werden darf.</p> END:VEVENT BEGIN:VEVENT -UID:769c2716-f54c-4b3e-8d72-8e91643b3ed0 +UID:2a3a4078-4354-4ac2-92b1-a60d6243ec7a SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20220622T190000 DTEND;TZID=Europe/Berlin:20220622T220000 SUMMARY:Vortrag "Hebe deine IoT-Infrastruktur auf das Serverless-Level an" @@ -482,9 +482,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Die Persistenz von IoT Daten sowie die Ste ten werden darf.</p> END:VEVENT BEGIN:VEVENT -UID:002f3eb3-e0e4-4704-a2a1-81c27e14f441 +UID:eba6a93f-b5b3-48ca-82d8-44291356594a SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20210630T190000 DTEND;TZID=Europe/Berlin:20210630T220000 SUMMARY:Vortrag "Ultraschnelle Java In-Memory Datenbank-Anwendungen & Micr @@ -525,9 +525,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>MicroStream ist ein fundamental neues Pers oberlausitz.eu/jug</a></p> END:VEVENT BEGIN:VEVENT -UID:232df9a9-4ea3-4e72-8219-2df53b48e3ed +UID:96abd7d1-24ff-4ea9-a3a1-31e2fac1c1d9 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20210127T190000 DTEND;TZID=Europe/Berlin:20210127T220000 SUMMARY:Vortrag "Web Components" - Manuel Mauky @@ -548,9 +548,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Web-Components sind eine Möglichkeit\, au tz.eu/jug">https://meet.digitale-oberlausitz.eu/jug</a></p> END:VEVENT BEGIN:VEVENT -UID:fbe72331-0580-40ce-aea1-00f3a5683f23 +UID:c2d9c334-faaa-4a3c-bfa9-f9c9b679ace5 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20201125T190000 DTEND;TZID=Europe/Berlin:20201125T220000 SUMMARY:Vortrag "Java Secure Coding in der Praxis" - Nico Förster @@ -573,9 +573,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Durch die Veröffentlichung von immer neue ale-oberlausitz.eu/jug</a></p> END:VEVENT BEGIN:VEVENT -UID:5bd8e100-5e0a-4fe5-bb9c-30476d265b6c +UID:829ae63c-5681-4cfb-bd1a-b08b49408919 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20200722T190000 DTEND;TZID=Europe/Berlin:20200722T220000 SUMMARY:Vortrag "Branching-Modelle" - Hannes Kretschmer @@ -600,9 +600,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Als Softwareentwickler ist man auf die Ver oberlausitz.eu/jug">https://meet.digitale-oberlausitz.eu/jug</a></p> END:VEVENT BEGIN:VEVENT -UID:80bde61d-1ccc-4d3d-943c-4b24b5b9eaed +UID:883dcfe2-6546-47a5-9e29-e58cdc94faa2 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20200429T180000 DTEND;TZID=Europe/Berlin:20200429T210000 SUMMARY:Vortrag "JDK 14 und GraalVM im Java Ökosystem" - Wolfgang Weigend @@ -635,9 +635,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Nach der Freigabe vom JDK 14 werden die ak ses Mal geht es schon <strong>18:00 Uhr los</strong>.</p> END:VEVENT BEGIN:VEVENT -UID:36dc5893-e5a0-43ce-8358-957cc25972cf +UID:4de5c238-7e57-4f7a-ac16-e9999b91bad5 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20200129T190000 DTEND;TZID=Europe/Berlin:20200129T220000 SUMMARY:Vortrag "Innovationsmotor Cloud Foundry!?" - Simon Roloff @@ -652,9 +652,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>"Create Apps\, Not the Platform" - Cloud F Foundry überhaupt? Und hält sie\, was sie verspricht?</p> END:VEVENT BEGIN:VEVENT -UID:f0818dcb-831e-440a-8de2-7ac91eef8b2f +UID:02f82c36-0104-4a6d-ace5-726c53e44d23 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20191128T190000 DTEND;TZID=Europe/Berlin:20191128T220000 SUMMARY:Vortrag "Advanced BDD Tests" - Maik Wagner @@ -668,9 +668,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Hattest du auch schon mal das Problem\, da en.</p> END:VEVENT BEGIN:VEVENT -UID:5fa31554-cd0d-46e8-8b87-7ec792f892fa +UID:6686dc68-3a91-4808-9120-f424212df521 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20190626T190000 DTEND;TZID=Europe/Berlin:20190626T220000 SUMMARY:Vortrag "Wie gut kennst Du das Collections Framework?" - Thilo Fro @@ -694,9 +694,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>HashMap und ArrayList kennt jeder\, na kla ions.pdf">Folien zum Vortrag</a></li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:b5f8867e-4d24-4421-92f3-f557e7d8df82 +UID:31b43bba-b6a8-43b1-a9c6-6a96f2e09dbb SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20190529T190000 DTEND;TZID=Europe/Berlin:20190529T220000 SUMMARY:Vortrag "OAuth 2.0/OpenIDConnect mit Keycloak" - Denny Israel @@ -711,9 +711,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Der Vortrag erläutert zunächst die Grund Anwendung einbinden kann.</p> END:VEVENT BEGIN:VEVENT -UID:0d3d9d6e-2f26-4f2a-b270-010ff216e1b1 +UID:1c9fda78-4abf-485f-92f5-6f82e5fd73b6 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20190424T190000 DTEND;TZID=Europe/Berlin:20190424T220000 SUMMARY:Vortrag "It's a JDK jungle out there - oder wie es mit den neuen J @@ -747,9 +747,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Mit dem JDK-Enhancement-Proposal (JEP 322) </p> END:VEVENT BEGIN:VEVENT -UID:db5da59f-7faa-4d3b-960e-6e0eb51c81a9 +UID:843ce072-8229-4cf0-aec7-4dba733bbeff SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20190327T190000 DTEND;TZID=Europe/Berlin:20190327T220000 SUMMARY:Vortrag "Static-Site-Generators" - Manuel Mauky @@ -783,9 +783,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Die Website der JUG Görlitz läuft fast < Folien zum Vortrag</a></li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:7d269511-0b01-4b6d-8300-dc763c1ccab6 +UID:8d1df13a-4bde-498e-8ed2-c90cbdb08644 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20190227T190000 DTEND;TZID=Europe/Berlin:20190227T220000 SUMMARY:Vortrag "Java Reflection: Classes behind the scenes" - Erik Jähne @@ -806,9 +806,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Java Reflections sind ein Feature der Java ors werden diese Möglichkeiten in dem Vortrag näher\nbetrachtet.</p> END:VEVENT BEGIN:VEVENT -UID:15ee48f3-6466-4446-b414-9942e14c7e7a +UID:9355b194-b951-482c-a5f1-24c86fac6fbd SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20190131T190000 DTEND;TZID=Europe/Berlin:20190131T220000 SUMMARY:Vortrag "Java APIs - the missing manual" - Hendrik Ebbers @@ -830,9 +830,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Anstelle über Microservices\, NO-SQL Lös hreibe\nich nebenläufigen Code der trotzdem wartbar ist?</p> END:VEVENT BEGIN:VEVENT -UID:dbb179bd-e054-4b91-ac22-38fc15dc8be2 +UID:c8a91d5e-41dc-4201-8fd3-1c081dcec61d SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20181123T190000 DTEND;TZID=Europe/Berlin:20181123T220000 SUMMARY:Vortrag "Monadische Transaktionen" - Gregor Trefs @@ -854,9 +854,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Spätestens seit Java 8 gibt es monadische adic_transactions.pdf">Folien zum Vortrag</a></li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:2f9490ae-47f7-4e85-877b-b21ca4ec53de +UID:3743e0c4-e3d3-47ae-a49f-59a7ccbbeecf SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20180627T190000 DTEND;TZID=Europe/Berlin:20180627T220000 SUMMARY:Vortrag "Immutable Data - Unveränderliche Daten im Griff" - Manue @@ -885,9 +885,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Unveränderliche Datenstrukturen sind ein Vortrag</a></li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:df7a3f95-244f-4cc0-a4ea-19b938fdb427 +UID:4b4ade9c-f272-443d-b00f-a63ab7c391f4 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20180530T190000 DTEND;TZID=Europe/Berlin:20180530T220000 SUMMARY:Vortrag "GraphQL" - Stephan Strehler @@ -912,9 +912,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Die RESTful-Architektur ist eine etabliert \n</ul> END:VEVENT BEGIN:VEVENT -UID:a12ab4aa-51d4-45eb-a5a6-773442d68c69 +UID:7d5215fc-d7eb-4ca1-b996-c91849fb15e3 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20180425T190000 DTEND;TZID=Europe/Berlin:20180425T220000 SUMMARY:Vortrag "Kotlin" - Tobias Blaschke @@ -936,9 +936,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Die Ankündigung der Unterstützung von Ko >Code auf Github</a></li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:bf3cde25-9001-4ffb-9e50-3490589c4d7b +UID:71fd9fde-1140-45db-a104-7c8fa6dfdd78 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20180320T190000 DTEND;TZID=Europe/Berlin:20180320T220000 SUMMARY:Vortrag "Mikro- vs. Makroarchitektur – Spielraum und Spielregeln @@ -959,9 +959,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Während in einer klassischen Konzern-IT S und\nDomänenorientierung in das Entwurfsdoppel Makro und Mikro ein.</p> END:VEVENT BEGIN:VEVENT -UID:3fc622a7-b13f-4415-bd03-bc0f4d64eac4 +UID:0df24a01-820a-4080-a97f-2d72a4205603 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20180228T190000 DTEND;TZID=Europe/Berlin:20180228T220000 SUMMARY:Vortrag "Entwicklung von Java Applikationen auf der SAP Cloud Plat @@ -985,9 +985,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Die SAP Cloud Platform (SCP) beschreibt ei zum Vortrag</a></li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:28d3d0b4-492f-44cf-b317-f78c0a25726a +UID:15313c5e-5045-452c-b218-21f2c45a36db SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20180131T190000 DTEND;TZID=Europe/Berlin:20180131T220000 SUMMARY:Vortrag "Refactoring to a System of Systems" - Oliver Drotbohm @@ -1011,9 +1011,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Beim Bauen monolithischer Systeme nutzen E -to-a-system-of-systems">Folien zum Vortrag</a></li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:b3bca3b8-e88f-4f32-aa73-da3d7127a21d +UID:d32b2e68-b909-41d4-bebf-b1b797c25b2c SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20171129T190000 DTEND;TZID=Europe/Berlin:20171129T220000 SUMMARY:Vortrag "Neo4j: Panama Papers" - Michael Hunger @@ -1031,9 +1031,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Im letzten Jahr waren die Panama Papers in tlich verfügbar sind\, kann jetzt jeder zum Journalisten werden.</p> END:VEVENT BEGIN:VEVENT -UID:c3dead09-df5e-4b62-8c6f-4d4eb0644663 +UID:9aec4fde-8e0f-409d-852f-c19473e730e7 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20171025T190000 DTEND;TZID=Europe/Berlin:20171025T220000 SUMMARY:Vortrag "Serverless Application - Who the heck needs a Server?" - @@ -1058,9 +1058,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Kaum haben wir uns von dem klassischen Mon Media GmbH</strong>.</p> END:VEVENT BEGIN:VEVENT -UID:2f9cdf8c-9436-46fe-943a-060fcf36c178 +UID:31c7ab20-be88-40ab-8362-b83a1f170a12 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20170830T190000 DTEND;TZID=Europe/Berlin:20170830T220000 SUMMARY:Vortrag "Spracherkennung mit Amazon Alexa" - Andre Tepper\, Maik W @@ -1078,9 +1078,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Amazon Alexa ist eine Smart-Home-Technolog > END:VEVENT BEGIN:VEVENT -UID:b25fd69d-8cec-4c86-86be-9c128e10c659 +UID:0b613d02-285e-48a0-ae8a-725144d0bb19 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20170531T190000 DTEND;TZID=Europe/Berlin:20170531T220000 SUMMARY:Vortrag "React und React-Native: Functional UI Development für Br @@ -1105,9 +1105,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>React ist eine von Facebook entwickelte Ja ammierung eingehen\, die React\nmeines Erachtens so besonders machen.</p> END:VEVENT BEGIN:VEVENT -UID:a0974138-3cc8-4353-950a-ebadedc320ef +UID:46957e32-896f-4ebe-9265-f43ab1fdbeb1 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20170425T190000 DTEND;TZID=Europe/Berlin:20170425T220000 SUMMARY:Vortrag "JDK 9" - Wolfgang Weigend @@ -1140,9 +1140,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Nach der Ausdehnung vom JDK 9 Feature-Comp /a></li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:871bb07c-95b7-4166-b574-a64636cb531d +UID:64e29d39-5911-4bbc-81af-ad332708d2d2 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20170322T190000 DTEND;TZID=Europe/Berlin:20170322T220000 SUMMARY:Vortrag "Angular 2 für Java Entwickler" - Sven Hoffmann @@ -1165,9 +1165,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Mit Angular bietet Google ein komponenten- downloads/juggr_angular.pdf">Folien zum Vortrag</a></li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:61364837-d397-41da-8359-841a53518da2 +UID:ffb3f713-0df9-4990-8d37-f4cde56c6212 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20170222T190000 DTEND;TZID=Europe/Berlin:20170222T220000 SUMMARY:Vortrag "CSS\, Aha-Effekte und Perspektiven" - Uwe Manteuffel @@ -1185,9 +1185,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>CSS ist verwirrend\, entbehrt jeglicher Lo nDa wird selbst JavaScript blass vor Neid.</p> END:VEVENT BEGIN:VEVENT -UID:20871820-903f-434d-9b03-db449dba6f27 +UID:3514608e-3c2c-4d14-8305-f82a5fa9c1dc SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20170125T190000 DTEND;TZID=Europe/Berlin:20170125T220000 SUMMARY:Vortrag "JUnit 5" - Stefan Bley @@ -1205,9 +1205,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Unit Testing in Java - dafür ist JUnit da -gr.de/downloads/juggr_jUnit5.pdf">Folien zum Vortrag</a></li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:12a70e1c-9b20-42c5-8628-f29bbba413a1 +UID:3997d189-33ab-418d-b4c6-4764782f3cf4 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20161130T190000 DTEND;TZID=Europe/Berlin:20161130T220000 SUMMARY:Vortrag "Inside JVM" - Michael Wiedeking @@ -1221,9 +1221,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Wie funktioniert die virtuelle Maschine? W inem Blick unter die Haube der Java Virtual\nMachine.</p> END:VEVENT BEGIN:VEVENT -UID:18df4f3d-6bb2-4e14-aba4-4b066f4159f7 +UID:43546e43-c4d8-484f-997b-4237639dd218 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20160921T190000 DTEND;TZID=Europe/Berlin:20160921T220000 SUMMARY:Vortrag "Kommunikationskultur im Softwareentwicklungsprozess" - Da @@ -1241,9 +1241,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Im Vortrag von Daniel Sernow wird die Komm ranstaltungsort einweihen - siehe unten.</p> END:VEVENT BEGIN:VEVENT -UID:bcea7fd5-148f-4ea7-9415-802ebcce369d +UID:5cc202c2-ade0-494b-8324-28f104b8bdee SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20160727T190000 DTEND;TZID=Europe/Berlin:20160727T220000 SUMMARY:Vortrag "Testwerkzeuge für JavaFX" - Kay Grebenstein @@ -1263,9 +1263,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Softwareentwicklungsprojekte leben vom Ein >Wie werden die Testwerkzeuge in meine Toolkette eingebunden?</li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:bee1c95b-27c4-47cd-a0fe-d9b3bf68a33f +UID:6dd53f2f-2f0b-4fc6-8b47-4c912ffb69a3 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20160525T190000 DTEND;TZID=Europe/Berlin:20160525T220000 SUMMARY:Vortrag "Performance-Analyse mit inspectIT" - Mario Mann @@ -1296,9 +1296,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>In vielen Software-Projekten wissen häufi lay/HOME/inspectIT+Home</a></p> END:VEVENT BEGIN:VEVENT -UID:edd83ccf-a0c0-402e-a02c-f1b3027ca226 +UID:4c97afdd-cfd7-41df-97b5-847c4a5ab8ca SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20160330T190000 DTEND;TZID=Europe/Berlin:20160330T220000 SUMMARY:Vortrag "Haskell und Frege" - Manuel Mauky @@ -1321,9 +1321,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Haskell ist eine funktionale Programmiersp r JVM eine rein funktionale Sprache\nbereit.</p> END:VEVENT BEGIN:VEVENT -UID:897eabf9-4421-496f-accc-d88be910f68a +UID:cc8345a3-5c12-4911-86fd-bd7b229e9cdb SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20160127T190000 DTEND;TZID=Europe/Berlin:20160127T220000 SUMMARY:Vortrag "Funktionale Programmierung mit Java" - Manuel Mauky\, Max @@ -1364,9 +1364,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Mit Java 8 wurden einige Features in die S Y-Combinator in Java</a></li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:2cbaa054-61b8-4a2c-8dbb-466e7f04034c +UID:133832b0-991f-489e-8bda-74c28201bcd1 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20151125T190000 DTEND;TZID=Europe/Berlin:20151125T220000 SUMMARY:Vortrag "JavaFX auf Mobile" - Stefan Barth\, Stefan Heinze @@ -1394,9 +1394,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>JavaFX ist die neue Java-Technologie im De avafx_on_mobile.pdf">Vortragsfolien</a></li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:1bd8b659-ff63-41f6-8cac-fba3dbaea32a +UID:1a46a8f5-ff5e-4636-8b0f-f27a28a4f32f SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20150930T190000 DTEND;TZID=Europe/Berlin:20150930T220000 SUMMARY:Vortrag "Guava" - Steffen Seidler @@ -1430,9 +1430,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Das Framework <a href="https://github.com/ Handling\, Funktionale Ansätze\, Ranges\, ReflectionUtils)</p> END:VEVENT BEGIN:VEVENT -UID:0b04951d-d391-4121-bebf-b3c3186bf114 +UID:010251b7-c74c-4ff0-8bf6-a39118c0d9df SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20150729T190000 DTEND;TZID=Europe/Berlin:20150729T220000 SUMMARY:Vortrag "Regelbasierte Systeme mit JBoss Drools" - Paul Weinhold @@ -1451,9 +1451,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Drools ist ein Business-Rules-Mangement-Sy en</a></li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:fdef5f81-5e27-4975-862d-8668b58049eb +UID:cba8705a-5cb8-4810-8299-0bf6e0168bd7 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20150527T190000 DTEND;TZID=Europe/Berlin:20150527T220000 SUMMARY:Vortrag "Fortgeschrittene Android-Entwicklung" - Max Wielsch @@ -1473,9 +1473,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Aufbauend auf dem letzten Beitrag der Java /muxmax/JugGrNotesApp">Beispiel-Code</a></li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:a2cc278b-c616-409d-9cdf-9b6aa7fe6dc7 +UID:221d108a-69b0-416f-8b70-16a6b2b2ce57 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20150325T190000 DTEND;TZID=Europe/Berlin:20150325T220000 SUMMARY:Vortrag "Einstieg in die Android-App-Entwicklung" - Max Wielsch @@ -1500,9 +1500,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Smartphones und Apps sind für viele Mensc -Code</a></li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:d18d751a-210f-4acb-9603-c10d438da10e +UID:c5fce0a5-8dc4-4325-8356-a5839a7da0ba SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20150128T190000 DTEND;TZID=Europe/Berlin:20150128T220000 SUMMARY:Vortrag "MoSKito - Monitoring Framework" - Steffen Seidler @@ -1529,9 +1529,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Es wird immer wichtiger WebAnwendungen üb interessant sein.</p> END:VEVENT BEGIN:VEVENT -UID:89d86b13-6e03-4ebd-a741-a054e6d719f4 +UID:1bf72560-f2a7-451f-bb8b-a5c42b9ac0b6 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20141203T190000 DTEND;TZID=Europe/Berlin:20141203T220000 SUMMARY:Vortrag "Model-View-*: UI-Design-Patterns im Detail" - Manuel Mauk @@ -1566,9 +1566,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Die meisten Softwareentwickler haben irgen github.com/lestard/juggr_model-view-star">Code auf Github</a></li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:c15c9d1a-93e8-48d1-ae27-5e0ac20ab942 +UID:995ff96d-6a54-49e1-b041-4fc915494ffa SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20141029T190000 DTEND;TZID=Europe/Berlin:20141029T220000 SUMMARY:Vortrag "Infrastructure as Code" - Bruno Devic @@ -1597,9 +1597,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Infrastructure as Code is one of the impor emo.zip">Demos</a></li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:e1f76214-dfda-4ab6-9c82-d78ac91d4771 +UID:68cb9106-8ff0-405f-8523-41b33988e5cd SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20140924T190000 DTEND;TZID=Europe/Berlin:20140924T220000 SUMMARY:Vortrag "Solr - Eine Enterprise-Suchmaschine" - Steffen Seidler @@ -1624,9 +1624,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Solr ist ein mächtiges Werkzeug um strukt rden.</p> END:VEVENT BEGIN:VEVENT -UID:dd1a6d70-10c4-435b-be1c-993a3181b233 +UID:7e4120cb-7db8-4649-9cbc-1a3a947e226a SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20140730T190000 DTEND;TZID=Europe/Berlin:20140730T220000 SUMMARY:Vortrag "Java8 - Streams und Lambdas" - Paul Weinhold @@ -1650,9 +1650,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Seit April ist die neue Version 8 von Java loads/juggr_java8.pdf">Vortragsfolien</a></li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:284812c1-ac1f-410d-b600-32505b22f28f +UID:b5a56d15-e3c1-44b5-96b8-e805e40f2b04 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20140528T190000 DTEND;TZID=Europe/Berlin:20140528T220000 SUMMARY:Vortrag "Hazelcast - Synchronisation von In-Memory-Daten" - Steffe @@ -1672,9 +1672,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Hazelcast ist ein vielseitiges Framework z weiterer (Backup-)Knoten steigern.</p> END:VEVENT BEGIN:VEVENT -UID:d44dbfd9-2a3b-4afe-b7bb-6e6709d1d71c +UID:501db986-72f6-4037-a9f8-5c72ddca8e39 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20140402T190000 DTEND;TZID=Europe/Berlin:20140402T220000 SUMMARY:Vortrag "Besser lesbare Unittests mit AssertJ" - Manuel Mauky @@ -1711,9 +1711,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Damit Testgetriebene Entwicklung in der Pr arke Unittests schreiben zu können.</p> END:VEVENT BEGIN:VEVENT -UID:0d298af9-86a5-4a87-8025-a0fd858d4f4a +UID:088afb26-1c8d-4897-9269-eb15f860dcb2 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20140129T190000 DTEND;TZID=Europe/Berlin:20140129T220000 SUMMARY:Vortrag "Tool-Integration im Softwareentwicklungsprozess" - Max Wi @@ -1743,9 +1743,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Tool-Integration im Softwareentwicklungspr Architektur\nausgehend von einem Fallbeispiel erläutert wird.</p> END:VEVENT BEGIN:VEVENT -UID:f856ea78-80ef-46ba-b277-7e09c4503300 +UID:c75b03dc-302f-4c6a-9f1a-0d33a6e71f7a SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20131127T190000 DTEND;TZID=Europe/Berlin:20131127T220000 SUMMARY:Vortrag "Performance-Optimierung im Web" - Maik Wagner @@ -1761,9 +1761,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Google und Microsoft haben Studien zum The nt sich also\, in die\nPerformance einer Webanwendung zu investieren.</p> END:VEVENT BEGIN:VEVENT -UID:ee02bdfc-63da-4150-841c-bfad20b081b7 +UID:e255d026-b410-482a-ba24-8c1ba6283c6e SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20131030T190000 DTEND;TZID=Europe/Berlin:20131030T220000 SUMMARY:Vortrag "Modernes App-Design am Beispiel von Android" - Max Wielsc @@ -1784,9 +1784,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Die Android-Plattform hat sich in den letz endbar sind.</p> END:VEVENT BEGIN:VEVENT -UID:64886768-f16e-4a2e-a42d-2df0a6cdb1e6 +UID:1596947f-7604-4509-86fa-298284ba0b6b SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20130731T190000 DTEND;TZID=Europe/Berlin:20130731T220000 SUMMARY:Vortrag "Persona - Werkzeug für die GUI-Entwicklung" - Marlene Kn @@ -1803,9 +1803,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>In diesem Vortrag von <strong>Marlene Knoc li><a href="/downloads/juggr_personas.pdf">Vortragsfolien</a></li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:f95224d5-fc01-4a18-a6a3-3f23ce0e8f25 +UID:29eb4adf-4a24-4a6e-8f0d-4b2088c63e51 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20130529T190000 DTEND;TZID=Europe/Berlin:20130529T220000 SUMMARY:Vortrag "JRuby - Ruby auf der Java VM" - Sebastian Schmeck @@ -1826,9 +1826,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p><strong>Sebastian Schmeck</strong> von der > END:VEVENT BEGIN:VEVENT -UID:53246993-8521-4596-8561-aa9b76d885d0 +UID:ed0e6ef3-a113-41e6-950c-a84d13353dad SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20130327T190000 DTEND;TZID=Europe/Berlin:20130327T220000 SUMMARY:Vortrag "Lego NXT-Roboter mit Java programmieren" - Erik Jähne @@ -1846,9 +1846,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Dieses Mal dreht sich alles um Roboter. <s =1oIQh48fBDI">https://www.youtube.com/watch?v=1oIQh48fBDI</a></li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:c43f8eda-2633-4ed2-8f4a-4f7c90fd84be +UID:7170aab3-5bb3-44df-b6a7-a55ba00a02ce SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20121128T190000 DTEND;TZID=Europe/Berlin:20121128T220000 SUMMARY:Vortrag "JavaFX 2" - Alexander Casall\, Michael Thiele @@ -1868,9 +1868,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Als Vortragende konnten wir Alexander Casa https://github.com/sialcasa/jfxusergroup</a>)</li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:ba2a9aa5-0098-4a42-b565-2693a7815bc5 +UID:0ab77c28-9fab-417d-ae6f-eff0687705ca SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20120926T190000 DTEND;TZID=Europe/Berlin:20120926T220000 SUMMARY:Vortrag "JSR-303 BeanValidation" - Manuel Mauky @@ -1895,9 +1895,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p><strong>Manuel Mauky</strong> stellt in se d/juggr_BeanValidation">Beispiel-Code</a></li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:ffb346b9-c5f1-4faa-a805-813a56424c2c +UID:43264e12-3481-4e5a-b6bd-ebf574f297b6 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20120725T190000 DTEND;TZID=Europe/Berlin:20120725T220000 SUMMARY:Vortrag "Selenium/Webdriver in der Praxis" - Maik Wagner @@ -1909,9 +1909,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Selenium/webdriver - In Ergänzung zu der it praktischen\nBeispielen von Maik Wagner</p> END:VEVENT BEGIN:VEVENT -UID:589fd08b-095a-4f03-b870-8621e67f0135 +UID:a9210f20-53ec-439d-a76a-a9f0c1e034a0 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20120627T190000 DTEND;TZID=Europe/Berlin:20120627T220000 SUMMARY:Vortrag "GridGain - Parallel Computing und Data Grid Anwendungen" @@ -1923,9 +1923,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>GridGain - ein Java-Framework für Paralle l Computing und Data Grid Anwendungen von Mario Reichel</p> END:VEVENT BEGIN:VEVENT -UID:64e10231-04f3-463a-94cc-081a2a53847e +UID:60120499-8acd-4d11-ab82-ffaead3b1c98 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20120530T190000 DTEND;TZID=Europe/Berlin:20120530T220000 SUMMARY:Vortrag "JMonkeyEngine 3 - 3D-Applikationen in Java" - Hans Markwa @@ -1937,9 +1937,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>JMonkeyEngine3 und im Allgemeinen 3D-Appli kationen in Java von Hans Markwart</p> END:VEVENT BEGIN:VEVENT -UID:4bc73208-3580-40a2-a120-5e507d9f5730 +UID:8810ccd2-1284-4ec2-bbb6-4d631c9430d8 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20120425T190000 DTEND;TZID=Europe/Berlin:20120425T220000 SUMMARY:Vortrag "Maven" - Thomas Storch @@ -1950,9 +1950,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p><strong>maven</strong> von Thomas Storch</ ownloads/code_maven.zip">Beispiel-Code</a></p> END:VEVENT BEGIN:VEVENT -UID:0d924a95-faac-45be-8582-c8db1b332cc4 +UID:de7ddbde-1187-460b-8b45-f388e44f6e77 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20120328T190000 DTEND;TZID=Europe/Berlin:20120328T220000 SUMMARY:Vortrag "Webtests mit Selenium" - Marcus Döring @@ -1962,9 +1962,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p><strong>Webtests mit Selenium</strong> von Marcus Döring</p> END:VEVENT BEGIN:VEVENT -UID:3867dc8f-3ecc-4d34-9514-5b5178dc1447 +UID:2771490c-a3a7-4df7-909f-7f6ee7d6f66b SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20120229T190000 DTEND;TZID=Europe/Berlin:20120229T220000 SUMMARY:Vortrag "Webentwicklung mit Scala" - Stefan Bradl @@ -1974,9 +1974,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p><strong>Webentwicklung mit Scala</strong> von Stefan Bradl</p> END:VEVENT BEGIN:VEVENT -UID:7d2b86a3-876e-4b3c-a168-fadd00600add +UID:42203069-8cc6-4845-a91a-69de5f48f7c2 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20120125T190000 DTEND;TZID=Europe/Berlin:20120125T220000 SUMMARY:Vortrag "Advanced JSF und CDI" - Manuel Mauky @@ -1997,9 +1997,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Dieser Vortrag baut auf den Vortrag zur <a einander entkoppelt werden können.</p> END:VEVENT BEGIN:VEVENT -UID:547af330-1b12-4649-b42d-84ab99a635b8 +UID:ece8c8ee-6486-48dd-b6eb-5016754f995b SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20120104T190000 DTEND;TZID=Europe/Berlin:20120104T220000 SUMMARY:Vortrag "JPA - Hibernate" - Marko Modsching @@ -2012,9 +2012,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p><strong>JPA - Hibernate</strong> von Marko downloads/code_hibernate.zip">Beispiel-Code</a></li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:461efbb8-38a8-4d8b-a8ba-40cfb596335a +UID:150cff68-9a0f-401e-aa88-e44867358ae3 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20111130T190000 DTEND;TZID=Europe/Berlin:20111130T220000 SUMMARY:Vortrag "JavaServer Faces 2 und CDI" - Manuel Mauky @@ -2038,9 +2038,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Der Vortrag bietet eine Einführung in <st jsf_cdi">Code auf github</a></li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:8861d311-f81a-447e-8afc-575814e4b82e +UID:63a2f2b9-2215-4c73-89a0-3f209cfcca2a SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20111026T190000 DTEND;TZID=Europe/Berlin:20111026T220000 SUMMARY:Vortrag "Android" - Max Wielsch @@ -2060,9 +2060,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Mit einem Vortrag und der Programmierung e -vortrag-in-der-java-user.html">Blog</a> heruntergeladen werden.</p> END:VEVENT BEGIN:VEVENT -UID:f501f67f-6e71-4619-9267-7e3c493d6926 +UID:ac44a937-3b20-4c24-940b-be4d207fbd69 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20110928T190000 DTEND;TZID=Europe/Berlin:20110928T220000 SUMMARY:Vortrag "JDOM" - Mark Ziener @@ -2073,9 +2073,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>JDOM- Einlesen\, Verändern und Erzeugen v on XML-Dokumenten (Mark Ziener)</p> END:VEVENT BEGIN:VEVENT -UID:54b66ca7-5fac-4d2c-9eea-6a4059fd2049 +UID:97cce91e-2269-401f-a2d6-b16e15979e63 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20110928T190000 DTEND;TZID=Europe/Berlin:20110928T220000 SUMMARY:Vortrag "Single Sign-On mit JAAS und JGSS" - Mario Reichel @@ -2086,9 +2086,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Vom Single Sign-On zum sicheren Kanal - Au thentifizierung und Autorisierung mit JAAS und JGSS (Mario Reichel)</p> END:VEVENT BEGIN:VEVENT -UID:6d3ea457-51af-45d0-b373-e63b815165ef +UID:78d8e17c-dccc-4914-9133-0b5d07b9e2aa SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20110831T190000 DTEND;TZID=Europe/Berlin:20110831T220000 SUMMARY:Vortrag "Testen - Patterns und Best Practices" - Marko Modsching @@ -2099,9 +2099,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Das Thema wird diesmal Testen sein. Marko Modsching wird Testpatterns und Best Practices vorstellen</p> END:VEVENT BEGIN:VEVENT -UID:e4122ae1-4901-4752-8732-c29f113e6114 +UID:912e9e3e-8e84-4357-9e93-d15edbe09285 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20110727T190000 DTEND;TZID=Europe/Berlin:20110727T220000 SUMMARY:Vortrag "Scala" - Stefan Bradl @@ -2114,9 +2114,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Scala - Vorstellung der Sprache\, Demo und href="/downloads/code_scala.zip">Beispiel-Code</a></li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:19d31986-4d57-4c29-b6df-8bb148cd063a +UID:09500ea5-5102-4b9d-9b5c-ae78cdf1b0ce SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20110727T190000 DTEND;TZID=Europe/Berlin:20110727T220000 SUMMARY:Vortrag "TestNG" - Marcus Döring @@ -2125,9 +2125,9 @@ DESCRIPTION:TestNG (Marcus Döring) X-ALT-DESC;FMTTYPE=text/html:<p>TestNG (Marcus Döring)</p> END:VEVENT BEGIN:VEVENT -UID:b0a600bd-9176-47da-b494-672092050246 +UID:0388ea8b-74f9-430e-b4ff-84016212d0e7 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20110629T190000 DTEND;TZID=Europe/Berlin:20110629T220000 SUMMARY:Vortrag "JavaEE und JBoss" - Michael Förster @@ -2139,9 +2139,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Diesmal stellt Michael Förster Java EE vo ele\ngeben.</p> END:VEVENT BEGIN:VEVENT -UID:0f0a56ea-63ee-42b2-9bd1-dad077af32e5 +UID:50eede1d-8dc3-49ed-8d5b-44c8cfa1fcea SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20110527T190000 DTEND;TZID=Europe/Berlin:20110527T220000 SUMMARY:Vortrag "Google Guice" - Robert Wirbs @@ -2152,9 +2152,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Google Guice - Dependency Injection (DI) u nd Aspect-Orientierte Programmierung (AOP) von Robert Wirbs</p> END:VEVENT BEGIN:VEVENT -UID:3947e05e-970a-4f19-b107-8a4e20b68103 +UID:09cc8485-e256-43d7-b49f-4464f5a9d21b SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20110427T190000 DTEND;TZID=Europe/Berlin:20110427T220000 SUMMARY:Vortrag "GWT - Google Web Toolkit" - Ingo Körner @@ -2164,9 +2164,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>GWT - Google Web Toolkit (Ingo Körner)</p > END:VEVENT BEGIN:VEVENT -UID:7dc3c193-abc0-4c76-846a-06a5be12cfe8 +UID:81acc150-2f76-4c66-b3bc-2cf45f4c7998 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20110427T190000 DTEND;TZID=Europe/Berlin:20110427T220000 SUMMARY:Vortrag "OSGi mit SpringDM" - Manuel Mauky @@ -2188,9 +2188,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p>Die OSGi beschreibt eine spezifikation\, a ing_dm.pdf">Vortragsfolien</a></li>\n</ul> END:VEVENT BEGIN:VEVENT -UID:3ad3cc0a-4c6c-4e10-b010-31c85281a0b8 +UID:f884588c-c9f1-46fc-b106-c7b791f46c83 SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20110322T190000 DTEND;TZID=Europe/Berlin:20110322T220000 SUMMARY:Vortrag "EasyMock" - Richard Hauswald @@ -2203,9 +2203,9 @@ X-ALT-DESC;FMTTYPE=text/html:<p><a href="http://easymock.org/">EasyMock</a et.</p> END:VEVENT BEGIN:VEVENT -UID:99235a0b-5fde-4c8c-bdb1-1616fcf832df +UID:4fe5b5c9-edc7-408d-afca-4d43a07a0dce SEQUENCE:0 -DTSTAMP:20240111T073442 +DTSTAMP:20240116T224123 DTSTART;TZID=Europe/Berlin:20110322T190000 DTEND;TZID=Europe/Berlin:20110322T220000 SUMMARY:Vortrag "Jenkins/Hudson" - Stefan Scheumann diff --git a/locations/cideon/index.html b/locations/cideon/index.html index 0ede7c34d..745881680 100644 --- a/locations/cideon/index.html +++ b/locations/cideon/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/locations/dser_elisabethstrasse/index.html b/locations/dser_elisabethstrasse/index.html index af9d932b3..568d92f9f 100644 --- a/locations/dser_elisabethstrasse/index.html +++ b/locations/dser_elisabethstrasse/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/locations/dser_steinstrasse/index.html b/locations/dser_steinstrasse/index.html index 2c020faf3..a0d59222c 100644 --- a/locations/dser_steinstrasse/index.html +++ b/locations/dser_steinstrasse/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/locations/expleo/index.html b/locations/expleo/index.html index 318432a44..40a3ec1eb 100644 --- a/locations/expleo/index.html +++ b/locations/expleo/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/locations/fraunhofer/index.html b/locations/fraunhofer/index.html index 9f10ad9e8..444c58d4c 100644 --- a/locations/fraunhofer/index.html +++ b/locations/fraunhofer/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/locations/hochschule_campus/index.html b/locations/hochschule_campus/index.html index 6282fe14d..8fd2ec7e7 100644 --- a/locations/hochschule_campus/index.html +++ b/locations/hochschule_campus/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/locations/hochschule_obermarkt/index.html b/locations/hochschule_obermarkt/index.html index b2e9cf046..a4d066b7b 100644 --- a/locations/hochschule_obermarkt/index.html +++ b/locations/hochschule_obermarkt/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/locations/index.html b/locations/index.html index 5d4b4f676..50fb6836e 100644 --- a/locations/index.html +++ b/locations/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/locations/innolabs/index.html b/locations/innolabs/index.html index d5e228a9c..eea2c7a31 100644 --- a/locations/innolabs/index.html +++ b/locations/innolabs/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/locations/saxsys/index.html b/locations/saxsys/index.html index 38a5c9f9b..6f635ec0b 100644 --- a/locations/saxsys/index.html +++ b/locations/saxsys/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/locations/sqs/index.html b/locations/sqs/index.html index f85e1db9e..d9ded7417 100644 --- a/locations/sqs/index.html +++ b/locations/sqs/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/locations/tallence/index.html b/locations/tallence/index.html index a207ae9d9..2bbb91b94 100644 --- a/locations/tallence/index.html +++ b/locations/tallence/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/locations/zeiss/index.html b/locations/zeiss/index.html index 77078668f..884a960b2 100644 --- a/locations/zeiss/index.html +++ b/locations/zeiss/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/mitmachen/index.html b/mitmachen/index.html index fd6c7c4d6..4e3fde64e 100644 --- a/mitmachen/index.html +++ b/mitmachen/index.html @@ -377,4 +377,4 @@ <h3>Veranstalte das nächste Treffen bei dir</h3> > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/page-data/app-data.json b/page-data/app-data.json index 338c57185..5c740108b 100644 --- a/page-data/app-data.json +++ b/page-data/app-data.json @@ -1 +1 @@ -{"webpackCompilationHash":"5218552558063b6af278"} +{"webpackCompilationHash":"f007bae2c253f92e6865"} diff --git a/page-data/index/page-data.json b/page-data/index/page-data.json index 2d25bdf1e..ce2372e12 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":{"talks":{"edges":[{"node":{"id":"b0252f0d-2a16-5085-913a-7fb7bf5364a6","html":"<p><a href=\"http://easymock.org/\">EasyMock</a> - Was ist ein Mock?, Warum sollte ich mocken? Was ist EasyMock? Wie kann ich es\nbenutzen? All diese Fragen werden in der Präsentation beantwortet.</p>","frontmatter":{"title":"EasyMock","date":"2011-03-22T00:00:00.000Z","time":null,"speaker":["richard_hauswald"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["testen"]},"fields":{"slug":"/talks/2011-03-22-easymock/","sourceName":"talks"}}},{"node":{"id":"c92b2d55-0d33-50f7-a73c-de8f55b7d75e","html":"<p><a href=\"http://hudson-ci.org/\">Hudson</a> bzw. <a href=\"http://jenkins-ci.org/\">Jenkins</a> ist ein Build-Server, der für\n<a href=\"http://de.wikipedia.org/wiki/Kontinuierliche_Integration\">Continuous Integration</a> eingesetzt wird. Darunter versteht\nman das Vorgehen, nach jeder Code-Änderung einen Build-Vorgang (inklusive Kompilieren des Codes und Ausführen der Tests)\ndurchzuführen. Damit kann sichergestellt werden, dass Fehlerhafte Änderungen sofort auffallen und behoben werden können.</p>\n<p>Im Vortrag werden die Begriffe \"Build Management\" und \"Continuous Integration\" näher erleutert und am konkreten Beispiel\nvon Jenkins gezeigt, wie dies in der Praxis umgesetzt werden kann.</p>","frontmatter":{"title":"Jenkins/Hudson","date":"2011-03-22T00:00:00.000Z","time":null,"speaker":["stefan_scheumann"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["build-management"]},"fields":{"slug":"/talks/2011-03-22-jenkins/","sourceName":"talks"}}},{"node":{"id":"6d1edf0b-d32b-5274-baa2-34c7f27786b8","html":"<p>GWT - Google Web Toolkit (Ingo Körner)</p>","frontmatter":{"title":"GWT - Google Web Toolkit","date":"2011-04-27T00:00:00.000Z","time":null,"speaker":["ingo_koerner"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["web","frontend"]},"fields":{"slug":"/talks/2011-04-27-gwt/","sourceName":"talks"}}},{"node":{"id":"2d5fb6de-57a5-54c0-9485-b2ea5bb67a81","html":"<p>Die OSGi beschreibt eine spezifikation, auf deren Basis Software Modular entwickelt werden kann. Die einzelnen Module\nsind in sich geschlossene Einheiten mit einem klaren Interface, welches einerseits ihre angebotene Funktionalität inf\nForm von Services beschreibt und andererseits die Abhängigkeiten auf Services anderer Module enthält.</p>\n<p>Spring-DM (DM steht für Dynamic Modules) ist eine auf OSGi basierende Plattform, die OSGi mit den Vorteilen von Spring,\nallen voran Dependency Injection, verbindet.</p>\n<p>Im Vortrag wird neben den theoretischen Grundlagen vor allem an praktischen Beispielen inklusive Live-Coding gezeigt,\nwie mit Spring-DM und OSGi lose gekoppelte Module erstellt und diese dynamisch zur Laufzeit getauscht werden können.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_osgi_spring_dm.pdf\">Vortragsfolien</a></li>\n</ul>","frontmatter":{"title":"OSGi mit SpringDM","date":"2011-04-27T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":null},"fields":{"slug":"/talks/2011-04-27-osgi_springdm/","sourceName":"talks"}}},{"node":{"id":"54c98b64-64a8-515b-a02c-8a54c51dcca1","html":"<p>Google Guice - Dependency Injection (DI) und Aspect-Orientierte Programmierung (AOP) von Robert Wirbs</p>","frontmatter":{"title":"Google Guice","date":"2011-05-27T00:00:00.000Z","time":null,"speaker":["robert_wirbs"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["patterns"]},"fields":{"slug":"/talks/2011-05-27-guice/","sourceName":"talks"}}},{"node":{"id":"5c110017-4815-5ac0-a4e3-a75e759080ac","html":"<p>Diesmal stellt Michael Förster Java EE vor. Es wird sowohl Einblicke in Theorie, wie auch wieder praktische Beispiele\ngeben.</p>","frontmatter":{"title":"JavaEE und JBoss","date":"2011-06-29T00:00:00.000Z","time":null,"speaker":["michael_foerster"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["javaee"]},"fields":{"slug":"/talks/2011-06-29-javaee_jboss/","sourceName":"talks"}}},{"node":{"id":"603cc23a-9840-5867-b78d-99fbd489d472","html":"<p>Scala - Vorstellung der Sprache, Demo und das Testen (Stefan Bradl)</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_scala.pdf\">Vortragsfolien</a></li>\n<li><a href=\"/downloads/code_scala.zip\">Beispiel-Code</a></li>\n</ul>","frontmatter":{"title":"Scala","date":"2011-07-27T00:00:00.000Z","time":null,"speaker":["stefan_bradl"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["programmiersprachen"]},"fields":{"slug":"/talks/2011-07-27-scala/","sourceName":"talks"}}},{"node":{"id":"4bb73d33-af61-5eac-a5fa-d075fa8660f5","html":"<p>TestNG (Marcus Döring)</p>","frontmatter":{"title":"TestNG","date":"2011-07-27T00:00:00.000Z","time":null,"speaker":["marcus_doering"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["testen"]},"fields":{"slug":"/talks/2011-07-27-testng/","sourceName":"talks"}}},{"node":{"id":"67828855-f7d8-5d6d-9d90-7c3760bb7705","html":"<p>Das Thema wird diesmal Testen sein. Marko Modsching wird Testpatterns und Best Practices vorstellen</p>","frontmatter":{"title":"Testen - Patterns und Best Practices","date":"2011-08-31T00:00:00.000Z","time":null,"speaker":["marko_modsching"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["testen","patterns"]},"fields":{"slug":"/talks/2011-08-31-testen/","sourceName":"talks"}}},{"node":{"id":"9bcc98b0-826d-5513-b828-008dbf11c915","html":"<p>JDOM- Einlesen, Verändern und Erzeugen von XML-Dokumenten (Mark Ziener)</p>","frontmatter":{"title":"JDOM","date":"2011-09-28T00:00:00.000Z","time":null,"speaker":["mark_ziener"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["xml"]},"fields":{"slug":"/talks/2011-09-28-jdom/","sourceName":"talks"}}},{"node":{"id":"6cca53f4-9edd-55ac-a225-75c94aa0dd8b","html":"<p>Vom Single Sign-On zum sicheren Kanal - Authentifizierung und Autorisierung mit JAAS und JGSS (Mario Reichel)</p>","frontmatter":{"title":"Single Sign-On mit JAAS und JGSS","date":"2011-09-28T00:00:00.000Z","time":null,"speaker":["mario_reichel"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["security"]},"fields":{"slug":"/talks/2011-09-28-single-sign-on/","sourceName":"talks"}}},{"node":{"id":"c40cc73f-d2be-5960-b15f-87e4b39429c8","html":"<p>Mit einem Vortrag und der Programmierung einer Biepsiel-App für Notitzen führte Max Wielsch in die\n<strong>Android-Programmierung</strong> ein. Im Vortrag ging es zunächst um die Motivation, eine App für die Android-Plattform zu\nentwickeln. Darauffolgend wurden die grundlegeneden Konzepte und Systemmerkmale erläutert. Nach der Theorie folgte die\nPraxis. Max Wielsch programmierte Schritt für Schritte eine \"kleine\" Notitz-App wobei die theoretischen Konzepte in der\nPraxis erläutert wurden.</p>\n<p>Die Präsentation und das Beispielprojekt können auf seinem\n<a href=\"http://max-wielsch.blogspot.de/2011/10/android-der-vortrag-in-der-java-user.html\">Blog</a> heruntergeladen werden.</p>","frontmatter":{"title":"Android","date":"2011-10-26T00:00:00.000Z","time":null,"speaker":["max_wielsch"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["mobile","android"]},"fields":{"slug":"/talks/2011-10-26-android/","sourceName":"talks"}}},{"node":{"id":"11771522-730a-5373-b0f8-585c9c4f52c1","html":"<p>Der Vortrag bietet eine Einführung in <strong>JavaServer Faces 2</strong> und Beleuchtet unter anderem folgende Aspekte:</p>\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Facelets\">Facelets</a> als Nachfolger von\n<a href=\"https://en.wikipedia.org/wiki/JavaServer_Pages\">JSP</a></li>\n<li>ManagedBeans</li>\n<li>Scopes und Gültigkeitsbereiche</li>\n<li><a href=\"https://en.wikipedia.org/wiki/Expression_Language\">Expression Language</a> (EL)</li>\n<li>JSF-LiveCycle</li>\n</ul>\n<p>Ausserdem wird kurz <strong>Contexts and Dependency Injection</strong> (CDI) vorgestellt und dessen Kombination mit JSF\nhervorgehoben.</p>\n<p>Diese theoretischen Aspekte werden anschließend anhand eines praktischen Beispiels inklusive Live-Coding gezeigt und\nerklärt.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/jsf_cdi/juggr_jsf_cdi.pdf\">Vortragsfolien</a></li>\n<li><a href=\"https://github.com/juggr/juggr_jsf_cdi\">Code auf github</a></li>\n</ul>","frontmatter":{"title":"JavaServer Faces 2 und CDI","date":"2011-11-30T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","web","javaee","jsf"]},"fields":{"slug":"/talks/2011-11-30-jsf-cdi/","sourceName":"talks"}}},{"node":{"id":"e3831714-860d-5867-9952-89ecfe8b81dd","html":"<p><strong>JPA - Hibernate</strong> von Marko Modsching</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_orm_hibernate.pdf\">Vortragsfolien</a></li>\n<li><a href=\"/downloads/code_hibernate.zip\">Beispiel-Code</a></li>\n</ul>","frontmatter":{"title":"JPA - Hibernate","date":"2012-01-04T00:00:00.000Z","time":null,"speaker":["marko_modsching"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["database","javaee"]},"fields":{"slug":"/talks/2012-01-01-hibernate/","sourceName":"talks"}}},{"node":{"id":"67e2091a-15eb-56f9-bb65-586c4b2a809d","html":"<p>Dieser Vortrag baut auf den Vortrag zur <a href=\"/talks/2011-11-30-jsf-cdi\">\"Einführung in JavaServer Faces 2\"</a> auf. Es werden\nfortgeschrittene Techniken aus dem Bereich JSF vorgestellt:</p>\n<ul>\n<li>Navigation mit JSF</li>\n<li>Templates und Wiederverwendung von Facelets</li>\n<li>Ajax</li>\n<li>PrimeFaces</li>\n</ul>\n<p>Im Bereich CDI wird zunächst das Konzept der CDI-Producer beleuchtet, mit welchem der Entwickler Einfluss auf die\nDependency Injection nehmen kann. Anschließend wird das Design Pattern \"Observer\" mit den Techniken von CDI\nimplementiert und gezeigt, wie damit (im Gegensatz zur klassischen Observer-Implementierung) der Beobachter und die\nbeobachtete Klasse komplett von einander entkoppelt werden können.</p>","frontmatter":{"title":"Advanced JSF und CDI","date":"2012-01-25T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","web","javaee","jsf"]},"fields":{"slug":"/talks/2012-01-25-jsf_cdi_advanced/","sourceName":"talks"}}},{"node":{"id":"7881a4dc-ab76-5124-b9b1-dc13c982a250","html":"<p><strong>Webentwicklung mit Scala</strong> von Stefan Bradl</p>","frontmatter":{"title":"Webentwicklung mit Scala","date":"2012-02-29T00:00:00.000Z","time":null,"speaker":["stefan_bradl"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","web","programmiersprachen"]},"fields":{"slug":"/talks/2012-02-29-scala_webapps/","sourceName":"talks"}}},{"node":{"id":"bd3b256f-6609-52bb-9d05-5a57482e4f42","html":"<p><strong>Webtests mit Selenium</strong> von Marcus Döring</p>","frontmatter":{"title":"Webtests mit Selenium","date":"2012-03-28T00:00:00.000Z","time":null,"speaker":["marcus_doering"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","web","testen"]},"fields":{"slug":"/talks/2012-03-28-webtests/","sourceName":"talks"}}},{"node":{"id":"fa3c70d9-f376-541d-be0b-ca24e0ac6b89","html":"<p><strong>maven</strong> von Thomas Storch</p>\n<p><a href=\"/downloads/juggr_maven.pdf\">Folien</a></p>\n<p><a href=\"/downloads/code_maven.zip\">Beispiel-Code</a></p>","frontmatter":{"title":"Maven","date":"2012-04-25T00:00:00.000Z","time":null,"speaker":["thomas_storch"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["build-management"]},"fields":{"slug":"/talks/2012-04-25-maven/","sourceName":"talks"}}},{"node":{"id":"88119287-b9a3-5745-bd33-a7735cb39b4b","html":"<p>JMonkeyEngine3 und im Allgemeinen 3D-Applikationen in Java von Hans Markwart</p>","frontmatter":{"title":"JMonkeyEngine 3 - 3D-Applikationen in Java","date":"2012-05-30T00:00:00.000Z","time":null,"speaker":["hans_markwart"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend"]},"fields":{"slug":"/talks/2012-05-30-jmonkey-engine3/","sourceName":"talks"}}},{"node":{"id":"5e4ab94f-157d-5292-864d-57606942e1ff","html":"<p>GridGain - ein Java-Framework für Parallel Computing und Data Grid Anwendungen von Mario Reichel</p>","frontmatter":{"title":"GridGain - Parallel Computing und Data Grid Anwendungen","date":"2012-06-27T00:00:00.000Z","time":null,"speaker":["mario_reichel"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["cluster"]},"fields":{"slug":"/talks/2012-06-27-gridgain/","sourceName":"talks"}}},{"node":{"id":"09982d70-f13f-5626-8a14-2d8d92abf724","html":"<p>Selenium/webdriver - In Ergänzung zu der <a href=\"/talks/2012-03-28-webtests/\">Vorstellung von Marcus Döring</a> mit praktischen\nBeispielen von Maik Wagner</p>","frontmatter":{"title":"Selenium/Webdriver in der Praxis","date":"2012-07-25T00:00:00.000Z","time":null,"speaker":["maik_wagner"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["web","frontend","testen"]},"fields":{"slug":"/talks/2012-07-25-selenium_praxis/","sourceName":"talks"}}},{"node":{"id":"c044b319-accb-5fca-8339-9f01293583e6","html":"<p><strong>Manuel Mauky</strong> stellt in seinem Vortrag den zu JavaEE 6 gehörenden Standard <strong>BeanValidation</strong> vor.</p>\n<p>Dabei wird mittels Annotationen im Java-Code bestimmt, welche Werte für bestimmte Felder valide sind, z.B. <code>@NotNull</code>\nfür einen Wert, der nicht <code>null</code> sein darf oder <code>@Size(min=1, max=20)</code> für einen String, der mindestens 1 und maximal 10\nZeichen lang sein darf. Ein Validator kann dann anhand dieser Metainformationen prüfen, ob der Zustand eines Objekts\nvalide ist oder nicht.</p>\n<p>Im Vortrag wird zunächst allgemein auf das Thema Validierung eingegangen und anschließend Beispiele für\nBeanValidation-Annotationen gezeigt. Ebenfalls behandelt wird, wie BeanValidation im Frontend mit JavaServer Faces und\nim Backend mit JPA kombiniert werden kann.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_beanvalidation.pdf\">Vortragsfolien</a></li>\n<li><a href=\"https://github.com/lestard/juggr_BeanValidation\">Beispiel-Code</a></li>\n</ul>","frontmatter":{"title":"JSR-303 BeanValidation","date":"2012-09-26T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["javaee"]},"fields":{"slug":"/talks/2012-09-26-bean_validation/","sourceName":"talks"}}},{"node":{"id":"90157438-0e03-57ef-870f-701aac0b6210","html":"<p>Als Vortragende konnten wir Alexander Casall und Michael Thiele, zwei Mittarbeiter der Saxonia Systems AG aus Dresden\ngewinnen, die zum Thema <strong>JavaFX 2</strong> sprechen werden.</p>\n<p>Sie werden über das neue UI-Framework von Oracle berichten, welches angetreten ist, um das etwas angestaubte Swing\nabzulösen und neuen Schwung in das Thema Java+Desktop zu bringen. Dabei werden sie speziell auf die Touch-Fähigkeiten\nvon JavaFX 2 eingehen und diese an einem großen Touchscreen live vorführen.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li>[Beispielcode]](<a href=\"https://github.com/sialcasa/jfxusergroup\">https://github.com/sialcasa/jfxusergroup</a>)</li>\n</ul>","frontmatter":{"title":"JavaFX 2","date":"2012-11-28T00:00:00.000Z","time":null,"speaker":["alexander_casall","michael_thiele"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","javafx"]},"fields":{"slug":"/talks/2012-11-28-javafx2/","sourceName":"talks"}}},{"node":{"id":"a13fb811-969f-5eb3-91f8-c71970bff046","html":"<p>Dieses Mal dreht sich alles um Roboter. <strong>Erik Jähne</strong> beschäftigt sich in seinem Studium mit <strong>NXT-Robotern von Lego</strong>\nund wird in seinem Vortrag die Programmierung dieser Roboter mit Java vorstellen. Natürlich wird es dabei auch eine\nLive-Vorführung der Roboter geben.</p>\n<p>Videos:</p>\n<ul>\n<li><a href=\"https://www.youtube.com/watch?v=0dzeTUoiY1k\">https://www.youtube.com/watch?v=0dzeTUoiY1k</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=1oIQh48fBDI\">https://www.youtube.com/watch?v=1oIQh48fBDI</a></li>\n</ul>","frontmatter":{"title":"Lego NXT-Roboter mit Java programmieren","date":"2013-03-27T00:00:00.000Z","time":null,"speaker":["erik_jaehne"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["hardware","roboter"]},"fields":{"slug":"/talks/2013-03-27-nxt_lego/","sourceName":"talks"}}},{"node":{"id":"df78a5f7-4e2e-5f4d-83dd-6ad6432ef93e","html":"<p><strong>Sebastian Schmeck</strong> von der Saxonia Systems AG aus Dresden wird in diesem Vortrag die Programmiersprache <strong>Ruby</strong>\nvorstellen und anschließend genauer auf die Implementierung <strong>JRuby</strong> eingehen. Damit lassen sich Ruby-Programme auf der\nJava VM ausführen, was einige konkrete Vorteile gegenüber der Standard-Implementierung bietet.</p>\n<p>Ausserdem wird er zeigen, wie die Integration von Java und Ruby in beiden Richtungen funktioniert, d.h. wie man\nRuby-Code in Java benutzt und wie von Ruby aus auf Java-Klassen zugegriffen werden kann.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_jruby.pdf\">Vortragsfolien</a></li>\n</ul>","frontmatter":{"title":"JRuby - Ruby auf der Java VM","date":"2013-05-29T00:00:00.000Z","time":null,"speaker":["sebastian_schmeck"],"location":"hochschule_campus","virtual":null,"poster":null,"poster_alt":null,"tags":["programmiersprachen"]},"fields":{"slug":"/talks/2013-05-29-jruby/","sourceName":"talks"}}},{"node":{"id":"6cde30c0-930e-5a8f-9a80-e0bfc34878a6","html":"<p>In diesem Vortrag von <strong>Marlene Knoche</strong> geht es um Usability, genauer um so genannte <strong>Persona</strong>. Personas sind Modelle\nvon Usern. Sie personifizieren eine bestimmte (Ziel-)Gruppe von Benutzern einer Software. Ziel ist es, Entwickler und\n(Usability-)Tester in die Lage zuversetzen, sich besser in Nutzer hinein denken zu können.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_personas.pdf\">Vortragsfolien</a></li>\n</ul>","frontmatter":{"title":"Persona - Werkzeug für die GUI-Entwicklung","date":"2013-07-31T00:00:00.000Z","time":null,"speaker":["marlene_knoche"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","softwareentwicklung"]},"fields":{"slug":"/talks/2013-07-31-persona/","sourceName":"talks"}}},{"node":{"id":"fb329b7c-5599-55bf-85c5-54a1a6b821bb","html":"<p>Die Android-Plattform hat sich in den letzten 2 Jahren sehr stark weiterentwickelt. Sie wurde nicht nur um\nFunktionalitäten erweitert, sondern hat seit der Android-Version 4.0 eine attraktive und sehr gut dokumentierte\nDesign-Sprache erhalten. Die Bedeutung eines konsistenten und funktionalen Designs ist damit ein kritischer\nErfolgsfaktor für eine App. Dies ist die Motivation sich intensiver mit dem Thema UI und UX-Design auseinandersetzen. In\neinem Vortrag wird dies zwar auf die Entwicklung von Android-Apps bezogen, jedoch werden auch allgemeine Konzepte\nvorgestellt, die auf das App-Design plattformübergreifend anwendbar sind.</p>","frontmatter":{"title":"Modernes App-Design am Beispiel von Android","date":"2013-10-30T00:00:00.000Z","time":null,"speaker":["max_wielsch"],"location":"hochschule_campus","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","mobile","android"]},"fields":{"slug":"/talks/2013-10-30-app-design/","sourceName":"talks"}}},{"node":{"id":"a8a6dc9d-ed19-56f9-9fd3-8c83531f61d0","html":"<p>Google und Microsoft haben Studien zum Thema \"Ladezeiten von Webseiten\" durchgeführt. Kurzgefasst: Schnelle Websites\nhaben eine bessere User Experience, Nutzer bleiben länger, und auch die Konversionsraten sind besser. Ab einer halben\nSekunde gingen die Umsätze pro Nutzer messbar zurück, ab 2 Sekunden waren es über 4%. Es lohnt sich also, in die\nPerformance einer Webanwendung zu investieren.</p>","frontmatter":{"title":"Performance-Optimierung im Web","date":"2013-11-27T00:00:00.000Z","time":null,"speaker":["maik_wagner"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["web","performance"]},"fields":{"slug":"/talks/2013-11-27-web-performance/","sourceName":"talks"}}},{"node":{"id":"f39e922a-28fe-514b-838c-4b89e4ec981e","html":"<p>Tool-Integration im Softwareentwicklungsprozess ist kein neues Thema. Dennoch gibt es immer noch Bedarf, die Integration\nvon Tools und Systemen zu verbessern. Je nach konkretem Entwicklungsvorgehen bzw. -prozess werden weitere ergänzende\nFunktionalitäten und Daten benötigt, die wenige Tools allein nicht liefern können. Das heißt, es ist notwendig,\nIntegration zwischen Tools und Systemen verschiedener Hersteller zu schaffen, sodass diese so verwendet werden können,\nwie es nötig ist. Ziel ist dabei, Daten und Funktionalitäten unabhängig von konkreten Tools oder Systemen dynamisch\nverwenden zu können. Neue und bestehende Tools und kleine Skripte sollen genau an den Entwicklungsprozess und die\nMenschen in diesem Prozess anpassbar sein. Einmal entwickelte Funktionalität soll frei wiederverwendbar sein. Unter\nanderem für diese Ziele wurde OpenDIP, eine offene Platform für die Integration im Entwicklungsprozess, entworfen. Über\ndie Konzepte und die Realisierung dieser Platform wurden zwei Masterarbeiten und ein Paper\n<a href=\"http://arxiv.org/find/all/1/all:+AND+Max+Wielsch/0/1/0/all/0/1\">http://arxiv.org/find/all/1/all:+AND+Max+Wielsch/0/1/0/all/0/1</a>\ngeschrieben. Im Vortrag wird auf die Motivation und die Verwendung der Platform eingangen, wobei die Architektur\nausgehend von einem Fallbeispiel erläutert wird.</p>","frontmatter":{"title":"Tool-Integration im Softwareentwicklungsprozess","date":"2014-01-29T00:00:00.000Z","time":null,"speaker":["max_wielsch"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["integration","platform","softwareentwicklung"]},"fields":{"slug":"/talks/2014-01-29-opendip/","sourceName":"talks"}}},{"node":{"id":"27050ce5-4d13-504b-90e0-8a4c3f2e6514","html":"<p>Damit Testgetriebene Entwicklung in der Praxis funktionieren kann, müssen sich Tests möglichst einfach und trotzdem\nausdrucksstark schreiben lassen und gut lesbar sein. Auch die (Neben-)Aufgabe von Unittests, eine lebendige\nEntwicklerdokumentation zu bilden, kann nur erfüllt werden, wenn die Tests gut lesbar sind.</p>\n<p>Die klassischen Assertions von JUnit lassen hier teilweise zu wünschen übrig. Neben <code>assertTrue</code> und <code>assertNotNull</code>\nbestehen viele Unittests nur aus unzähligen <code>assertEquals</code>-Anweisungen, was in der Regel sehr weit weg von natürlicher\nSprache ist. Diese Lücke versucht das <strong>Hamcrest</strong>-Projekt zu schließen, welches mittlerweile teilweise in JUnit\neingeflossen ist. Hamcrest ist jedoch ebenfalls nicht unproblematisch und bietet durch seinen Aufbau aus statischen\nMethoden in der Praxis zahlreiche Schwächen und Nachteile.</p>\n<p>Einen moderneren Ansatz verfolgt das Framework <strong>AssertJ</strong> bzw. <strong>FEST-Assert</strong>. Auf den ersten Blick sehen die\nAssertions denen von Hamcrest zwar sehr ähnlich, jedoch wurde für die Implementierung statt statischer Methoden der\nmodernere Ansatz einer Fluent-API gewählt, wodurch sich einige Vorteile ergeben, wie z.B. bessere IDE-Integration.</p>\n<p>Im Vortrag wird das eigentliche Problem und die bisherige Lösung mit Hamcrest gezeigt. Dem wird anschließend das\nFramework <strong>AssertJ</strong> gegenüber gestellt. Anhand von zahlreichen Core-Beispielen soll gezeigt werden, wie einfach sich\nlesbare Unittests formulieren lassen, wenn man die richtigen Werkzeuge zur Hand hat. Anschließend wird ebenfalls darauf\neingegangen, wie mit AssertJ eigene, domänenspezifische Assertions erstellt werden können. Damit kann sich der Anwender\nseine eigenen Werkzeuge erstellen, um in seiner Domäne gut lesbare und ausdrucksstarke Unittests schreiben zu können.</p>","frontmatter":{"title":"Besser lesbare Unittests mit AssertJ","date":"2014-04-02T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["junit","testen"]},"fields":{"slug":"/talks/2014-04-02-assertj/","sourceName":"talks"}}},{"node":{"id":"09dfae71-65f1-52de-81a7-e0746238f502","html":"<p>Hazelcast ist ein vielseitiges Framework zur einfachen Synchronization von Daten, die sich In-Memory innerhalb einer\nApplikation befinden. Damit ist es für Anwendungen gedacht, bei denen eine Synchronization durch eine \"externe\"\nTechnologie wie Datenbanken zu einem erheblichen Performanceverlust führt.</p>\n<p>Durch die Verteilung der Daten auf mehrere Knoten ist es ein gutes Mittel zur horizontalen Skalierbarkeit bei\nSynchronität der Daten innerhalb des Clusters. Zusätzlich lässt sich die Verfügbarkeit/Ausfallsicherheit durch die\nHinzunahme weiterer (Backup-)Knoten steigern.</p>","frontmatter":{"title":"Hazelcast - Synchronisation von In-Memory-Daten","date":"2014-05-28T00:00:00.000Z","time":null,"speaker":["steffen_seidler"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["cluster"]},"fields":{"slug":"/talks/2014-05-28-hazelcast/","sourceName":"talks"}}},{"node":{"id":"bd5b8775-c069-521b-803e-4a62493c8247","html":"<p>Seit April ist die neue Version 8 von Java offiziell verfügbar. Dieses Update ist sicherlich das bedeutendste Update\nseit Java 5, da zahlreiche interessante Neuerungen Einzug in die Sprache und das JDK gehalten haben.</p>\n<p>Die am meisten diskutierte Neuerung stellt sicherlich die Einführung von Lambda-Ausdrücken dar, mit denen Java nun auch\nfunktionale Eigenschaften bekommt.</p>\n<p>Im Vortrag wird <strong>Paul Weinhold</strong> die praktische Anwendung von Lambdas vorstellen und dabei vor allem auch auf die neue\nStreams-API von Java eingehen, da diese ganz besonders von Lambda-Ausdrücken profitiert.</p>\n<p>Paul Weinhold ist Master-Student im Studiengang Informatik an der Hochschule in Görlitz. Daneben arbeitet er als\nWerksstudent bei der Deutschen Bahn AG und setzt dort seit einiger Zeit aktiv die neuen Möglichkeiten von Java 8 ein.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_java8.pdf\">Vortragsfolien</a></li>\n</ul>","frontmatter":{"title":"Java8 - Streams und Lambdas","date":"2014-07-30T00:00:00.000Z","time":null,"speaker":["paul_weinhold"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["java","functional-programming"]},"fields":{"slug":"/talks/2014-07-30-java8-streams/","sourceName":"talks"}}},{"node":{"id":"ded25abd-db1f-5b9b-9cd2-8c905bc15ab0","html":"<p>Solr ist ein mächtiges Werkzeug um strukturierte Dokumente durchsuchbar zu machen. Solr kann als ein Aufsatz für Apache\nLucene verstanden werden und wartet mit zahlreichen Erweiterungen auf.</p>\n<p>Unter Anderem kann Solr in einem Apache Tomcat laufen und kommuniziert über HTTP. Dabei können nicht nur mittels HTTP\nGET Suchanfragen auf den indizierten Datenbestand ausgelöst werden, sondern mittels HTTP POST auch neue Dokumente\nhinzugefügt werden.</p>\n<p>Dabei können verschiedene Datequellen (Filesystem, Datenbanken, REST-Services, ...) angebunden werden, um den\nDatenbestand des Suchindex zu füllen. Dabei besteht ein großer Vorteil bei den vielen Erweiterung bei der Indizierung\nder Daten. Z.B. Silbentrennung, Wortstammbildung, ...</p>\n<p>Zur eigentlichen Suche existiert eine leicht zu erlernende Syntax. Insbesondere lassen sich mehrere Felder der\nstrukturierten Dokumente gleichzeitig abfragen und durch ein Ranking können die Suchergebnisse noch weiter verfeinert\nwerden.</p>","frontmatter":{"title":"Solr - Eine Enterprise-Suchmaschine","date":"2014-09-24T00:00:00.000Z","time":null,"speaker":["steffen_seidler"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["database"]},"fields":{"slug":"/talks/2014-09-24-solr/","sourceName":"talks"}}},{"node":{"id":"5840ef2b-08af-57a6-81b0-7a69c1d1beb0","html":"<p>Infrastructure as Code is one of the important cornerstones of continuous delivery. The concept that infrastructure\nshould be treated as code is really powerful. Server configuration, services, installed packages, relationships with\nother servers etc...should be modeled as code to be automated and have a predictable outcome, removing manual steps\nprone to errors and decreasing the cycle time.</p>\n<p>Spinning up a new virtual environment or a new version of the environment then becomes a matter of executing a script\nthat can create and provision an image or set of images – from the barebone operating system to the complete application\nstack installed and configured.</p>\n<p>This concept is increasingly important today when the number of environments and their instances has gone up by orders\nof magnitudes and the release frequency has moved from monthly to weekly or even daily releases.</p>\n<p>In this session we will showcase a few popular tools used to implement this concept: <code>Vagrant</code>, <code>Puppet</code> and <code>Docker</code>.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/infrastructure_as_code/slides-infrastructure-as-code.html\">Vortragsfolien</a></li>\n<li><a href=\"/downloads/infrastructure_as_code/infrastructure_as_code_demo.zip\">Demos</a></li>\n</ul>","frontmatter":{"title":"Infrastructure as Code","date":"2014-10-29T00:00:00.000Z","time":null,"speaker":["bruno_devic"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["devops"]},"fields":{"slug":"/talks/2014-10-29-infrastructure_as_code/","sourceName":"talks"}}},{"node":{"id":"2fdb9675-dfcf-55b8-899d-8e6d04242b4a","html":"<p>Die meisten Softwareentwickler haben irgendwann einmal <strong>Model-View-Controller</strong> als Design-Pattern gelernt. In der\nPraxis existieren aber viele verschiedene Ansichten darüber, was MVC eigentlich genau bedeutet und wie es implementiert\nwird. Darüber hinaus haben sich mit der Zeit auch neue, eigenständige UI-Design-Patterns entwickelt, die aber oft noch\ngewissen Gemeinsamkeiten mit dem klassischen MVC aufweisen. Dazu gehören z.B. <strong>Model-View-Presenter</strong>,\n<strong>Presentation-Model</strong> und <strong>Model-View-ViewModel</strong>.</p>\n<p>In diesem Vortrag soll zum einen ein Überblick über UI-Design-Patterns gegeben werden, zum anderen aber auch ein\ntieferer Eindruck über die tatsächliche Umsetzung und der praktischen Konsequenzen dieser Patterns gegeben werden. Dabei\nsollen weniger UML-Diagramme als viel mehr Code-Beispiele im Vordergrund stehen. Es wird dabei auch auf Aspekte wie\n<em>Testbarkeit</em>, <em>Koppelung</em> und <em>Wiederverwendung</em> eingegangen.</p>\n<p>Der Vortragende ist Softwareentwickler bei der Saxonia Systems AG und ist dort vor allem im UI-Bereich tätig. Er hat\nErfahrungen gesammelt mit <em>JavaServer-Faces</em>, <em>HTML(5)+JavaScript</em> sowie im Bereich Desktop-Oberflächen mit JavaFX.\nAktuell arbeitet er als Hauptentwickler an dem OpenSource-Framework <a href=\"https://github.com/sialcasa/mvvmFX\">MvvmFX</a>,\nwelches Komponenten zur Umsetzung des Design-Patterns <em>Model-View-ViewModel</em> für JavaFX bereitstellt.</p>\n<ul>\n<li><a href=\"https://github.com/lestard/juggr_model-view-star/raw/master/jug_slides.pdf\">Vortragsfolien</a></li>\n<li><a href=\"https://github.com/lestard/juggr_model-view-star\">Code auf Github</a></li>\n</ul>","frontmatter":{"title":"Model-View-*: UI-Design-Patterns im Detail","date":"2014-12-03T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","patterns"]},"fields":{"slug":"/talks/2014-12-03-model-view-star/","sourceName":"talks"}}},{"node":{"id":"d88d92c2-cf39-5768-b424-1b211f08c8e8","html":"<p>Es wird immer wichtiger WebAnwendungen überwachen zu können, um Probleme frühzeitig zu erkennen und Gegenmaßnahmen\neinleiten zu können. Hierfür wurde MoSKito geschaffen. Ursprünglich wurde es für Parship entwickelt, aber inzwischen ist\nes in ein eigenständiges Projekt auf GitHub ausgegliedert und steht nun allen Interessierten zur Verfügung.</p>\n<p>In dem Vortrag werden wir die einzelnen Komponenten der MoSKito-Toolbox anhand einer simplen Beispiel-Anwendung\nvorstellen. Dazu zählen die Datenerhebung für das Monitoring technischer Auffälligkeiten, die Visualisierung über eine\nintegriertes oder standalone WebUI, zentrale Persistierung zur späteren Auswertung, sowie ein Kontrollzentrum, welches\ndurchaus auch als Wall-Monitor eignet.</p>\n<p>Desweiteren werden wir die einfache Integration, sowie Möglichkeiten zur Erweiterung näher beleuchten. Denn in MoSKito\nkann man nicht nur Informationen technischer Natur sammeln, die für Entwickler relevant sind (Verarbeitungszeiten,\nSystemlast, etc.), sondern auch Daten mit Businessvalue (Verkaufszahlen, etc.). So kann MoSKito auch für Management und\nMarketing interessant sein.</p>","frontmatter":{"title":"MoSKito - Monitoring Framework","date":"2015-01-28T00:00:00.000Z","time":null,"speaker":["steffen_seidler"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["web","monitoring"]},"fields":{"slug":"/talks/2015-01-28-moskito/","sourceName":"talks"}}},{"node":{"id":"d853656a-6dac-5d38-b25a-c241c13cbadb","html":"<p>Smartphones und Apps sind für viele Menschen mittlerweile unentbehrlich. Nahezu für jeden Aspekt des Alltags und auch in\nder Geschäftswelt gibt es Anwendungen. Bei diesem JUG-Treffen werden wir in einer Praxisveranstaltung den Start eines\nApp-Entwicklungsprojekts mit Android betrachten. Die Veranstaltung richtet sich vor allem auch an\nProgrammier-Einsteiger, die einen Einblick in die Android-App-Entwicklung bekommen wollen.</p>\n<hr>\n<p>These days mobile phones and apps are indispensable to people. Nearly for every aspect of life and also in the business\nworld there are applications. In this JUG meeting we will take a look at how to start an app development project in\npractice. The session is especially addressed to programming beginners who like to get started with Android app\ndevelopment.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_android_programming.pdf\">Vortragsfolien</a></li>\n<li><a href=\"https://github.com/muxmax/JugGrNotesApp\">Beispiel-Code</a></li>\n</ul>","frontmatter":{"title":"Einstieg in die Android-App-Entwicklung","date":"2015-03-25T00:00:00.000Z","time":null,"speaker":["max_wielsch"],"location":"hochschule_campus","virtual":null,"poster":null,"poster_alt":null,"tags":["android","mobile"]},"fields":{"slug":"/talks/2015-03-25-android/","sourceName":"talks"}}},{"node":{"id":"1faa8cf7-10f9-54d5-a480-6d2e44896011","html":"<p>Aufbauend auf dem letzten Beitrag der Java User Group Görlitz\n(<a href=\"http://www.jug-gr.de/2015/03/25/android.html\">Einstieg in die Android-App-Entwicklung</a>) soll das Beispiel der Notiz\nApp live weiterentwickelt werden, um Konzepte und deren Umsetzung für die fortgeschrittene Android-Programmierung zu\nzeigen.</p>\n<p>Mit dem Ziel, eine testbare und entkoppelte Applikationsarchitektur zu erreichen wird der Einsatz geeigneter Patterns\nund Frameworks diskutiert.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_advanced_android.pdf\">Vortragsfolien</a></li>\n<li><a href=\"https://github.com/muxmax/JugGrNotesApp\">Beispiel-Code</a></li>\n</ul>","frontmatter":{"title":"Fortgeschrittene Android-Entwicklung","date":"2015-05-27T00:00:00.000Z","time":null,"speaker":["max_wielsch"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["mobile","android"]},"fields":{"slug":"/talks/2015-05-27-advanced-android/","sourceName":"talks"}}},{"node":{"id":"a3c8bbba-0df8-503b-a702-21589e288614","html":"<p>Drools ist ein Business-Rules-Mangement-System, mit dem sich Regelbasierte Systeme entwickeln lassen. Dazu stellt es\neine Domainen-Spezifische Sprache zur Verfügung, mit der Regeln definiert und anschließend durch die Rule-Engine\nverarbeitet werden können.</p>\n<p>Paul Weinhold ist Student im Masterstudiengang Informatik der Hochschule Zittau/Görlitz. Daneben arbeitet er bei der\nDB-Netz AG und setzt dort u.a. auch Drools ein. Im Vortrag stellt er die Technik vor und gibt einen Einblick anhand\npraktischer Beispiele.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_drools.pdf\">Vortragsfolien</a></li>\n</ul>","frontmatter":{"title":"Regelbasierte Systeme mit JBoss Drools","date":"2015-07-29T00:00:00.000Z","time":null,"speaker":["paul_weinhold"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["dsl"]},"fields":{"slug":"/talks/2015-07-29-drools/","sourceName":"talks"}}},{"node":{"id":"eff228ab-8f49-5773-905c-fee144de429f","html":"<p>Das Framework <a href=\"https://github.com/google/guava\">Guava</a> wurde von Google geschaffen, um eine einheitliche und einfach zu\nhandhabende Lösung für verschiedenste alltäglich wiederkehrende Probleme anzubieten. Insbesondere für die Codebasis von\nGoogle selbst. Dabei wurde großen Wert darauf gelegt ältere JDK-Versionen 5+ (ab Release 12 inzwischen JDK 6+) zu\nunterstützen. Damit ist Guava ein Framework, mit dem sich jeder JAVA-Entwickler näher beschäftigen sollte, um sich die\neigene Arbeit zu erleichtern.</p>\n<p>Auch wenn inzwischen einige Features mit JDK 7 (wie bspw. die Klasse Objects) und JDK 8 (wie bspw. Funktionale Ansätze)\nin ähnlicher Form inzwischen auch direkt in JAVA nutzbar sind, lohnt die Verwendung von Guava immernoch. Zudem ist Guava\nnicht als Konkurrenz zu Lösungen des JDKs oder ähnlicher Libaries wie Apache Commons zu verstehen, sondern als\nsymbiotische Ergänzung.</p>\n<p>Zu einer solchen Ergänzung zählt definitiv die umfangreiche Erweiterung der JDK-Collection-Vielfalt um viele weitere\nnützliche Typen zu den Vozügen von Guava. Insbesondere kann der spezielle Ansatz bei deren Verarbeitung immernoch\nVorteile gegenüber Streams bieten. Andersherum lassen viele Dinge in Guava mit Lambdas inzwischen noch komfortabler\nbedienen.</p>\n<p>In dem Vortrag wird ein Überblick über die zahlreichen Möglichkeiten von Guava gegeben. Auch unter dem Gesichtspunkt der\nneuen Möglichkeiten unter JDK 7/8. Die genannte Collection-Erweiterung ist dabei nur ein Bruchteil dessen was Guava\nbietet. (Object- und StringUtils, Orderings, Comparisons, Preconditions, ExceptionHandler, neue Collections und ihr\nHandling, Funktionale Ansätze, Ranges, ReflectionUtils)</p>","frontmatter":{"title":"Guava","date":"2015-09-30T00:00:00.000Z","time":null,"speaker":["steffen_seidler"],"location":"dser_elisabethstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["java"]},"fields":{"slug":"/talks/2015-09-30-guava/","sourceName":"talks"}}},{"node":{"id":"43538367-514c-5009-b9eb-0f730f52bfd9","html":"<p>JavaFX ist die neue Java-Technologie im Desktop-Bereich und somit die Ablösung von Swing. Damit ist es möglich\nJava-Anwendungen für Desktop, Browser und mobile Geräte zu entwickeln. Allerdings bietet Oracle keinen direkten Support\nfür mobile Endgeräte an, sondern überlässt dies der Community.</p>\n<p>In dem Vortrag geht es um den Aktuellen Stand der Entwicklung in diesem Bereich. Was muss gemacht werden, um eine\nJavaFX-Anwendung auf einem Smartphone zum laufen zu bekommen und welche Grenzen hat dieser Ansatz für die Entwicklung\nvon mobilen Anwendungen mit JavaFX.</p>\n<p>Einen weiteren Ansatz verfolgt die Firma <a href=\"http://gluonhq.com/\">Gluon</a> zum Erstellen von mobilen Anwendungen auf JavaFX.\nEine gemeinsame Code-Basis für IOS- und Android-Anwendungen basierend auf JavaFX. Was derzeit damit möglich ist wird\nebenfalls Inhalt des Vortrages sein.</p>\n<p>Abschließend wird unser Ansatz für mobile Anwendungen in JavaFX vorgestellt. Mittels des MVVM-Pattern in Kombination mit\nJavaFX-Ports. Vorgestellt wird der aktuelle Entwicklungsstand mit einer offenen Diskussion über Vor- und Nachteile des\nAnsatzes.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_javafx_on_mobile.pdf\">Vortragsfolien</a></li>\n</ul>","frontmatter":{"title":"JavaFX auf Mobile","date":"2015-11-25T00:00:00.000Z","time":null,"speaker":["stefan_heinze","stefan_barth"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","javafx","mobile","android"]},"fields":{"slug":"/talks/2015-11-25-javafx-mobile/","sourceName":"talks"}}},{"node":{"id":"79835d68-651b-57a2-8c75-042baeba5b30","html":"<p>Mit Java 8 wurden einige Features in die Sprache integriert, die von funktionaler Programmierung inspiriert sind. Im\nVortrag <a href=\"http://www.jug-gr.de/2014/07/30/java8-streams.html\">Java 8: Lambdas und Streams</a> im Juli 2014 hat Paul uns die\ntechnischen Möglichkeiten dazu bereits vorgestellt. Doch ist Java damit nun auch eine Funktionale Sprache? Gibt es\nüberhaupt noch Gründe, andere funktionale Sprachen zu beachten?</p>\n<p>In diesem Vortrag möchten wir tiefer in die Materie der funktionalen Programmierung eintauchen und die Konzepte dieses\nParadigmas betrachten. Wir werden sehen, wie Java-Programmierer von funktionalen Konzepten profitieren können. Dabei\ngehen wir unter anderem auf Dinge wie <em>Rekursion</em>, <em>Pure Funktionen</em>, <em>Immutable Datenstrukturen</em>, <em>Monaden</em> und\n<em>Funktionskomposition</em> ein.</p>\n<p>Wir werden aber auch zeigen, wo die Grenzen von Java liegen und warum wir der Meinung sind, dass Java letztlich doch\nkeine wirklich funktionale Sprache ist und weshalb wir unbedingt empfehlen, sich mit funktionalen Sprachen zu\nbeschäftigen. In diesem Sinne werden wir beim darauf folgenden JUG-Treffen die funktionale Sprache \"Haskell\" vorstellen\nund dabei viele der hier vorgestellten Konzepte wiederfinden. Außerdem werden wir die Haskell-Variante \"Frege\"\nbesprechen, die auch auf der JVM läuft.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_funktionale_programmierung_java.pdf\">Vortragsfolien</a></li>\n</ul>\n<p><strong>Links:</strong></p>\n<ul>\n<li><a href=\"http://sebastian-millies.blogspot.de/2015/09/cartesian-products-with-kleisli.html\">Blog: Kleisli Composition in Java</a></li>\n<li><a href=\"http://techblog.realestate.com.au/how-we-used-category-theory-to-solve-a-problem-in-java/\">Blog: How we used Category Theory to solve a problem in Java</a></li>\n<li><a href=\"http://mvanier.livejournal.com/2897.html?nojs=1\">Blog: Ausführliche Erklärung und Herleitung des Y-Combinators in Scheme</a></li>\n<li><a href=\"http://sebastian-millies.blogspot.de/2013/09/the-y-combinator.html\">Blog: Y-Combinator in Java</a></li>\n</ul>","frontmatter":{"title":"Funktionale Programmierung mit Java","date":"2016-01-27T00:00:00.000Z","time":null,"speaker":["manuel_mauky","max_wielsch"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"627917ce-c50f-59e9-98d8-4897b4f220c5","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d86838","images":{"fallback":{"src":"/static/1c76b19b6896e55dd13bb48cd2313b20/b6707/plakat_2016_01.png","srcSet":"/static/1c76b19b6896e55dd13bb48cd2313b20/0e3b9/plakat_2016_01.png 750w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/7aaf4/plakat_2016_01.png 1080w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/006ba/plakat_2016_01.png 1366w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/b6707/plakat_2016_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/1c76b19b6896e55dd13bb48cd2313b20/ebc34/plakat_2016_01.webp 750w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/47da9/plakat_2016_01.webp 1080w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/659f9/plakat_2016_01.webp 1366w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/c86cf/plakat_2016_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen trägt einen Anzug und grinst. Er hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das griechische Zeichen Lambda zu sehen.","tags":["java","functional-programming"]},"fields":{"slug":"/talks/2016-01-27-functional_java/","sourceName":"talks"}}},{"node":{"id":"7d996009-4040-5330-a46c-5877cc5668af","html":"<p>Haskell ist eine funktionale Programmiersprache, die das Paradigma der funktionalen Programmierung so konsequent\numsetzt, wie kaum eine andere Sprache. Beispielsweise sind Funktionen in Haskell standardmäßig \"pure\", können also keine\nSeiteneffekte besitzen, was durch das statische Typ-System sichergestellt wird. Eine weitere Eigenschaft, die Haskell\nvon den meisten anderen Sprachen unterscheidet, ist die nicht-strikte Auswertung von Ausdrücken, was im allgemeinen\ndurch Lazy-Evaluation umgesetzt wird. Dadurch kann Haskell beispielsweise ohne weiteres mit unendlichen Listen umgehen,\nohne dafür besondere Sprachkonstrukte zu benötigen.</p>\n<p>Haskell selbst läuft nicht auf der Java-VM, allerdings existiert mit der Programmiersprache \"Frege\" eine\nHaskell-Variante, die zu Java-Sourcecode kompiliert. Damit steht nun auch auf der JVM eine rein funktionale Sprache\nbereit.</p>","frontmatter":{"title":"Haskell und Frege","date":"2016-03-30T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"5c9d56a7-72a3-5960-83a9-42dc599be063","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#588888","images":{"fallback":{"src":"/static/64acc764c3779735c4ad382e9f9c0e6e/5ffd7/plakat_2016_03.png","srcSet":"/static/64acc764c3779735c4ad382e9f9c0e6e/5ffd7/plakat_2016_03.png 744w","sizes":"100vw"},"sources":[{"srcSet":"/static/64acc764c3779735c4ad382e9f9c0e6e/874d1/plakat_2016_03.webp 744w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4139784946236558}}},"poster_alt":"Poster: Jürgen sitzt auf einem Sessel und liest ein Buch. Er trägt eine Lese-Brille und schaut konzentriert aus. Auf dem Buch ist das Haskell-Logo, ein Lambda-Symbol, zusehen","tags":["programmiersprachen","functional-programming","non-jvm-language"]},"fields":{"slug":"/talks/2016-03-30-haskell_frege/","sourceName":"talks"}}},{"node":{"id":"4dc84ec4-23f6-5438-a2e6-b5944dc868c9","html":"<p>In vielen Software-Projekten wissen häufig nicht nur Anwender sondern auch Entwickler nicht, warum sich ihre Anwendung\nverhält wie sie sich eben verhält. Wieso ist meine Anwendung so langsam? An Performance-Tests wurde während der\nEntwicklung nicht gespart. Was kann also das Problem sein? Abhilfe kann in solchen Fällen ein Application Performance\nManagement Werkzeug schaffen, wie beispielsweise das Open Source-Werkzeug inspectIT.</p>\n<p>inspectIT ist ein leistungsstarkes Werkzeug, dass dazu dient, die Leistung von Software-Anwendungen sowohl zu überwachen\nals auch zu analysieren. Mithilfe verschiedener Sensoren erfasst inspectIT Informationen über Abfragen des Endnutzers\nund die Verarbeitung im Business-Layer bis hin zum Backend. Mit der Nutzung von inspectIT sind Informationen über die\nSoftware-Anwendung verfügbar, um jedes potenzielle Funktions-, Leistungs- oder Zuverlässigkeitsproblem mühelos\nanalysieren zu können. Dieser Vortrag wird das Open Source Projekt inspectIT vorstellen und einen einfachen Einstieg in\ndie Performance-Analyse mit inspectIT bieten.</p>\n<p>Website: <a href=\"http://inspectit.rocks\">http://inspectit.rocks</a></p>\n<p>Git: <a href=\"https://github.com/inspectIT/inspectIT\">https://github.com/inspectIT/inspectIT</a></p>\n<p>Dokumentation:\n<a href=\"https://inspectit-performance.atlassian.net/wiki/display/HOME/inspectIT+Home\">https://inspectit-performance.atlassian.net/wiki/display/HOME/inspectIT+Home</a></p>","frontmatter":{"title":"Performance-Analyse mit inspectIT","date":"2016-05-25T00:00:00.000Z","time":null,"speaker":["mario_mann"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"34708531-529f-5d8b-9a4f-7e69705d60db","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#880818","images":{"fallback":{"src":"/static/db7f178be40d0c331569338538d31bac/5ffd7/plakat_2016_05.png","srcSet":"/static/db7f178be40d0c331569338538d31bac/5ffd7/plakat_2016_05.png 744w","sizes":"100vw"},"sources":[{"srcSet":"/static/db7f178be40d0c331569338538d31bac/874d1/plakat_2016_05.webp 744w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4139784946236558}}},"poster_alt":"Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert.","tags":["performance","monitoring"]},"fields":{"slug":"/talks/2016-05-25-performance-analyse-inspectit/","sourceName":"talks"}}},{"node":{"id":"e14cd50a-435a-5855-ae06-c0d1eb30d8af","html":"<p>Softwareentwicklungsprojekte leben vom Einsatz von modernen Werkzeugen, die die Projektbeteiligten bei ihrer Arbeit\nunterstützen. JavaFX-Entwicklungsprojekte haben hier eine besondere Herausforderung. Die „neue“ Technologie stellt eine\nHerausforderung an die Testwerkzeuge, speziell an die Werkzeuge zur Testautomatisierung. Viele Hersteller werben mit\nJavaFX-Unterstützung, aber nicht immer wird JavaFX vollständig unterstützt.</p>\n<p>Der Vortrag geht den Fragen nach:</p>\n<ul>\n<li>Welche Kategorien von Testwerkzeugen für JavaFX gibt es?</li>\n<li>Welche Unterschiede gibt es zwischen den Testwerkzeugen?</li>\n<li>Wie werden die Testwerkzeuge in meine Toolkette eingebunden?</li>\n</ul>","frontmatter":{"title":"Testwerkzeuge für JavaFX","date":"2016-07-27T00:00:00.000Z","time":null,"speaker":["kay_grebenstein"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["javafx","testen"]},"fields":{"slug":"/talks/2016-07-27-testwerkzeuge_javafx/","sourceName":"talks"}}},{"node":{"id":"a4cfc466-b5f6-5b10-be7e-13c92d3ab2f7","html":"<p>Im Vortrag von Daniel Sernow wird die Kommunikation in Software-Projekten und mit den Projekt-Partnern thematisiert. Er\nwird uns an seinen Erfahrungen und Erkenntnissen aus langjähriger Praxis im Projektgeschäft teilhaben lassen. Für\nEntwickler dürfte dabei vor allem auch die Perspektive der Qualitätssicherung interessante neue Einblicke bereithalten.</p>\n<p>Eine Besonderheit: Wir werden eine neuen Veranstaltungsort einweihen - siehe unten.</p>","frontmatter":{"title":"Kommunikationskultur im Softwareentwicklungsprozess","date":"2016-09-21T00:00:00.000Z","time":null,"speaker":["daniel_sernow"],"location":"sqs","virtual":null,"poster":{"childImageSharp":{"id":"d76f475f-a8c8-5319-96d2-a1474885f516","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#788818","images":{"fallback":{"src":"/static/614b8174b903933ed9c7392c29039be7/b6707/plakat_2016_09.png","srcSet":"/static/614b8174b903933ed9c7392c29039be7/0e3b9/plakat_2016_09.png 750w,\n/static/614b8174b903933ed9c7392c29039be7/7aaf4/plakat_2016_09.png 1080w,\n/static/614b8174b903933ed9c7392c29039be7/006ba/plakat_2016_09.png 1366w,\n/static/614b8174b903933ed9c7392c29039be7/b6707/plakat_2016_09.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/614b8174b903933ed9c7392c29039be7/ebc34/plakat_2016_09.webp 750w,\n/static/614b8174b903933ed9c7392c29039be7/47da9/plakat_2016_09.webp 1080w,\n/static/614b8174b903933ed9c7392c29039be7/659f9/plakat_2016_09.webp 1366w,\n/static/614b8174b903933ed9c7392c29039be7/c86cf/plakat_2016_09.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen benutzt ein uraltes Telefon mit separatem Hörer und Mikrofon. Er hält sich den kabelgebundenen Hörer ans Ohr und hält das Mikrofon vor sich in der Hand","tags":["testen","softwareentwicklung"]},"fields":{"slug":"/talks/2016-09-21-kommunikationskultur/","sourceName":"talks"}}},{"node":{"id":"c67796c2-6477-5658-a163-1de4870f548e","html":"<p>Wie funktioniert die virtuelle Maschine? Wo kommt der Just-in-Time-Compiler ins Spiel und was hat es mit InvokeDynamic\nauf sich? Diese und weitere Fragen beantwortet Michael Wiedeking bei einem Blick unter die Haube der Java Virtual\nMachine.</p>","frontmatter":{"title":"Inside JVM","date":"2016-11-30T00:00:00.000Z","time":null,"speaker":["michael_wiedeking"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"d5ac0466-71cb-5950-ad4c-692645dec780","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#185818","images":{"fallback":{"src":"/static/df12c15a6674e50adc8ef8427b49c6e7/84817/plakat_2016_11.png","srcSet":"/static/df12c15a6674e50adc8ef8427b49c6e7/0e3b9/plakat_2016_11.png 750w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/e5839/plakat_2016_11.png 1080w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/006ba/plakat_2016_11.png 1366w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/84817/plakat_2016_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/df12c15a6674e50adc8ef8427b49c6e7/ebc34/plakat_2016_11.webp 750w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/0671f/plakat_2016_11.webp 1080w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/659f9/plakat_2016_11.webp 1366w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/e2c0d/plakat_2016_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und trägt eine Weihnachtsmütze zu seinem üblichen Anzug. Er hält einen Teller mit Keksen vor sich.","tags":["java","jvm"]},"fields":{"slug":"/talks/2016-11-30-inside_jvm/","sourceName":"talks"}}},{"node":{"id":"cf0f1947-1449-5df5-b546-aa31d25046a7","html":"<p>Unit Testing in Java - dafür ist JUnit das Werkzeug der Wahl. Die letzte Version JUnit 4 tat dabei viele Jahre ihre\nDienste und wurde kontinuierlich weiterentwickelt, stieß allerdings nun doch an ihre Grenzen. Der Nachfolger JUnit 5 ist\neine komplette Neuentwicklung und steht kurz vor dem Release. Wir wollen uns ansehen, welche Neuerungen JUnit 5 mit sich\nbringt und was es beim Umstieg zu beachten gilt.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"http://jug-gr.de/downloads/juggr_jUnit5.pdf\">Folien zum Vortrag</a></li>\n</ul>","frontmatter":{"title":"JUnit 5","date":"2017-01-25T00:00:00.000Z","time":null,"speaker":["stefan_bley"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"389f1a05-558e-58a8-a8f2-8f0f783fbb5f","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#3868c8","images":{"fallback":{"src":"/static/c46109cdd380f6d96989746b9b268b59/84817/plakat_2017_01.png","srcSet":"/static/c46109cdd380f6d96989746b9b268b59/0e3b9/plakat_2017_01.png 750w,\n/static/c46109cdd380f6d96989746b9b268b59/e5839/plakat_2017_01.png 1080w,\n/static/c46109cdd380f6d96989746b9b268b59/006ba/plakat_2017_01.png 1366w,\n/static/c46109cdd380f6d96989746b9b268b59/84817/plakat_2017_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/c46109cdd380f6d96989746b9b268b59/ebc34/plakat_2017_01.webp 750w,\n/static/c46109cdd380f6d96989746b9b268b59/0671f/plakat_2017_01.webp 1080w,\n/static/c46109cdd380f6d96989746b9b268b59/659f9/plakat_2017_01.webp 1366w,\n/static/c46109cdd380f6d96989746b9b268b59/e2c0d/plakat_2017_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt einen roten Bauarbeiter-Helm zu seinem Anzug. In der Hand hält er ein Klemmbrett mit dem Logo von JUnit 5 darauf","tags":["testen","junit"]},"fields":{"slug":"/talks/2017-01-25-junit5/","sourceName":"talks"}}},{"node":{"id":"f009504d-3327-52e9-8948-6cd4d3ba952e","html":"<p>CSS ist verwirrend, entbehrt jeglicher Logik und rendert mein HTML völlig willkürlich. Ziel von CSS ist es, den Alltag\neines Webentwicklers möglichst qualvoll zu gestalten. FALSCH Mit Live-Coding gehen wir CSS auf den Grund und werden\neinige Aha-Effekte erzielen. Dafür erklären wir Grundlagen, welche vielen Entwicklern unbekannt sind, und zeigen den\nMehrwert von Präprozessoren. Um euch dann vollends von CSS zu überzeugen, haben wir als Special Guest CSS3 eingeladen.\nDa wird selbst JavaScript blass vor Neid.</p>","frontmatter":{"title":"CSS, Aha-Effekte und Perspektiven","date":"2017-02-22T00:00:00.000Z","time":null,"speaker":["uwe_manteuffel"],"location":"hochschule_obermarkt","virtual":null,"poster":{"childImageSharp":{"id":"f98f07d3-05f0-5b44-a8c4-f59df52e978d","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#087868","images":{"fallback":{"src":"/static/17a163b60d0c34cbe1f0cc72f8380225/84817/plakat_2017_02.png","srcSet":"/static/17a163b60d0c34cbe1f0cc72f8380225/0e3b9/plakat_2017_02.png 750w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/e5839/plakat_2017_02.png 1080w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/006ba/plakat_2017_02.png 1366w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/84817/plakat_2017_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/17a163b60d0c34cbe1f0cc72f8380225/ebc34/plakat_2017_02.webp 750w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/0671f/plakat_2017_02.webp 1080w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/659f9/plakat_2017_02.webp 1366w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/e2c0d/plakat_2017_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt eine Künstler-Mütze zu seinem Anzug. In der Hand hält er eine Maler-Palette und einen Pinsel.","tags":["frontend","web"]},"fields":{"slug":"/talks/2017-02-22-css/","sourceName":"talks"}}},{"node":{"id":"d7528a15-3b10-587c-9543-5c372945763a","html":"<p>Mit Angular bietet Google ein komponenten-basiertes Webframework an, welches den Anspruch erhebt, die Anforderungen an\nzeitgemäße Softwareentwicklung ganzheitlich zu unterstützen.</p>\n<p>Seit dem Release von Angular 2 war es für gestandene Java Entwickler noch nie so einfach in die Webentwicklung\neinzusteigen. Mit Klassen, Dependency Injection, Annotations und Data-Binding bietet Angular dem versierten Desktop\nEntwickler ein vertrautes Umfeld, in dem man sich schnell zurecht findet.</p>\n<p>In dieser Veranstaltung möchte ich am lebenden Beispiel zeigen, wie es sich heutzutage anfühlt eine Webanwendung,\nkonkret mit Angular 2, zu erstellen.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"http://jug-gr.de/downloads/juggr_pretalk_astrofotografie.pdf\">Folien zum Lightning-Talk</a></li>\n<li><a href=\"http://jug-gr.de/downloads/juggr_angular.pdf\">Folien zum Vortrag</a></li>\n</ul>","frontmatter":{"title":"Angular 2 für Java Entwickler","date":"2017-03-22T00:00:00.000Z","time":null,"speaker":["sven_hoffmann"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"eddd4dc5-4156-509b-bf5c-e09b0c5c330e","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#084858","images":{"fallback":{"src":"/static/402904640aadf345c0f4e136c31ec42a/84817/plakat_2017_03.png","srcSet":"/static/402904640aadf345c0f4e136c31ec42a/0e3b9/plakat_2017_03.png 750w,\n/static/402904640aadf345c0f4e136c31ec42a/e5839/plakat_2017_03.png 1080w,\n/static/402904640aadf345c0f4e136c31ec42a/006ba/plakat_2017_03.png 1366w,\n/static/402904640aadf345c0f4e136c31ec42a/84817/plakat_2017_03.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/402904640aadf345c0f4e136c31ec42a/ebc34/plakat_2017_03.webp 750w,\n/static/402904640aadf345c0f4e136c31ec42a/0671f/plakat_2017_03.webp 1080w,\n/static/402904640aadf345c0f4e136c31ec42a/659f9/plakat_2017_03.webp 1366w,\n/static/402904640aadf345c0f4e136c31ec42a/e2c0d/plakat_2017_03.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen schaut ernst. Er trägt ein Schwert in der Hand und ein Schild mit dem einem großen A darauf. Das Schild ist eine Referenz auf das Angular-Logo, welches ebenfalls wie ein Schild aussieht.","tags":["frontend","web","javascript"]},"fields":{"slug":"/talks/2017-03-22-angular/","sourceName":"talks"}}},{"node":{"id":"9ba71f6c-f0dd-5c4e-b70f-3d7ac1ec19ca","html":"<p>Nach der Ausdehnung vom JDK 9 Feature-Complete-Status, begann die Fehlerbereinigung, mit allen notwendigen Vorarbeiten,\num den finalen Release-Candidate für das JDK 9 bereitzustellen. Der Schwerpunkt vom JDK 9 liegt bei der neuen\nPlattformmodularisierung mit dem Projekt Jigsaw. Über die JDK-Enhancement-Vorschläge JEP 200 (Modulares JDK), JEP 201\n(Modularer Source-Code) und JEP 220 (Modulare Laufzeit-Images) gelangen die technischen Vorschläge ins JDK 9. Der JSR\n376 (Java Platform Module System) schafft die Grundlage für die Referenzimplementierung vom OpenJDK Projekt Jigsaw.\nDiese Veränderungen lassen es zu, mit dem JDK 9 die gewünschte technische Paketierung von ausgewählter\nJava-Funktionalität selbst zu bestimmen. Das Projekt Jigsaw hat die primäre Aufgabe, das Design und die Implementierung\neines Standard-Modulsystems für die Java-Plattform und für das JDK 9 bereitzustellen. Dabei soll die durchgängige,\ndynamische und einfache Anpassbarkeit der Java-SE-Plattform & dem JDK, auch für kleine Endgeräte berücksichtigt werden,\nsowie die Verbesserung von Sicherheit und Wartbarkeit von Java-SE-Plattform-Implementierungen, speziell vom JDK,\nverwirklicht werden. Im Vortrag werden Demo-Beispiele gezeigt, die eine Erstellung von individueller Java Runtime mit\nAnwendung anhand der JDK 9-Werkzeuge verdeutlichen. Die geplante Verfügbarkeit vom JDK 9 ist für Ende Juli 2017\nvorgesehen.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"http://jug-gr.de/downloads/juggr_JDK_9_Java_Platform_Module_System.pdf\">Folien zum Vortrag</a></li>\n</ul>","frontmatter":{"title":"JDK 9","date":"2017-04-25T00:00:00.000Z","time":null,"speaker":["wolfgang_weigend"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"2573407c-9387-55d4-81ac-f02dffdbfe14","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#38a838","images":{"fallback":{"src":"/static/68885bd1bc71b7c02926be143e289b72/84817/plakat_2017_04.png","srcSet":"/static/68885bd1bc71b7c02926be143e289b72/0e3b9/plakat_2017_04.png 750w,\n/static/68885bd1bc71b7c02926be143e289b72/e5839/plakat_2017_04.png 1080w,\n/static/68885bd1bc71b7c02926be143e289b72/006ba/plakat_2017_04.png 1366w,\n/static/68885bd1bc71b7c02926be143e289b72/84817/plakat_2017_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/68885bd1bc71b7c02926be143e289b72/ebc34/plakat_2017_04.webp 750w,\n/static/68885bd1bc71b7c02926be143e289b72/0671f/plakat_2017_04.webp 1080w,\n/static/68885bd1bc71b7c02926be143e289b72/659f9/plakat_2017_04.webp 1366w,\n/static/68885bd1bc71b7c02926be143e289b72/e2c0d/plakat_2017_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt am Tisch vor einem Puzzle. Er überlegt, wo er das nächste Puzzle-Teil einsetzen soll. Man erkennt bereits, dass das Puzzle ein Java-Duke darstellt, das Maskottchen von Java.","tags":["java","jdk"]},"fields":{"slug":"/talks/2017-04-26-jdk9/","sourceName":"talks"}}},{"node":{"id":"935f30df-c07e-5cfa-9188-3564b4e0fab7","html":"<p>React ist eine von Facebook entwickelte JavaScript-Bibliothek zur Entwicklung von UI-Komponenten. Dabei macht React\neiniges anders als andere Web-Frameworks, beispielsweise der Verzicht auf Templates und die Limitierung auf\nunidirektionalen Datenfluss. Interessant ist auch der vollständig deklarative Ansatz, der es u.a. ermöglicht,\nUI-Komponenten als Funktionen zu entwickeln.</p>\n<p>React ist aber nicht auf den Browser beschränkt: Mit React-Native können darüber hinaus auf die gleiche Art und Weise\nauch native Mobile-Apps entwickelt werden. Aber anders die meisten HTML5-Hybrid-Frameworks ist bei React-Native kein\nHTML im Spiel. Stattdessen werden tatsächlich native UI-Controls gerendert.</p>\n<p>In diesem Vortrag möchte ich React und auch React-Native vorstellen und mittels Live-Coding einen Eindruck von dem\nFramework vermitteln. Dabei möchte ich aber auch auf die Ansätze aus der funktionalen Programmierung eingehen, die React\nmeines Erachtens so besonders machen.</p>","frontmatter":{"title":"React und React-Native: Functional UI Development für Browser und mobile Endgeräte","date":"2017-05-31T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"6b8717ce-a995-58f6-82e5-62fb5ef3cca9","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#58c8d8","images":{"fallback":{"src":"/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/a2ae3/plakat_2017_05.png","srcSet":"/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/f1722/plakat_2017_05.png 750w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/3e58d/plakat_2017_05.png 1080w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/8b6fa/plakat_2017_05.png 1366w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/a2ae3/plakat_2017_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/55786/plakat_2017_05.webp 750w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/8631a/plakat_2017_05.webp 1080w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/9b1f9/plakat_2017_05.webp 1366w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/fc882/plakat_2017_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4119791666666668}}},"poster_alt":"Poster: Jürgen hält einen Kasten in der Hand, welcher oben und unten Trichter-Öffnungen besitzt. In den oberen Trichter gibt er zwei Dokumente hinein, während beim unteren Trichter das Bild einer Webseite herausfällt. Auf der Box ist das Logo von React zu sehen.","tags":["frontend","javascript","web","mobile","functional-programming"]},"fields":{"slug":"/talks/2017-05-31-react/","sourceName":"talks"}}},{"node":{"id":"29eb8b61-615f-5f82-afc0-25abdc540af7","html":"<p>Amazon Alexa ist eine Smart-Home-Technologie, die vor allem als Lösung für Spracherkennung bekannt ist. Für Entwickler\nist dabei vor allem die Möglichkeit interessant, eigene Anwendungen mit Spracherkennung erstellen zu können.</p>\n<p>Andre und Maik beleuchten in ihrem Vortrag die Theorie hinter Spracherkennung und zeigen am Beispiel von Amazon Alexa,\nwie damit Anwendungen gebaut werden können.</p>","frontmatter":{"title":"Spracherkennung mit Amazon Alexa","date":"2017-08-30T00:00:00.000Z","time":null,"speaker":["andre_tepper","maik_wagner"],"location":"dser_elisabethstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["ki"]},"fields":{"slug":"/talks/2017-08-30-alexa/","sourceName":"talks"}}},{"node":{"id":"fd607630-d7dd-503a-8da0-25a963df4df3","html":"<p>Kaum haben wir uns von dem klassischen Monolithen und der zugehörigen Ablaufumgebung namens Application Server,\nzugunsten von Microservices und Embedded Runtimes, verabschiedet, taucht am Horizont mit Serverless Applications bzw.\nArchitectures schon die nächste Evolutionsstufe auf. Was bitte ist das jetzt schon wieder? Und wer braucht so etwas? Die\nSession zeigt, wie sich dank BaaS, FaaS und einiger anderer Akronyme, Mobile und Enterpriese Anwendungen implementieren\nlassen - ganz ohne Server! Ganz ohne? Naja, fast.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"https://www.dropbox.com/s/nrt9jb5mtwkxh2s/se_serverless.pdf\">Folien zum Vortrag</a></li>\n</ul>\n<hr>\n<p>Bei bei diesem Treffen verlosen wir unter den Teilnehmern ein Tutorial von\n<a href=\"https://tutorials.entwickler.de/\">https://tutorials.entwickler.de/</a>. Mit freundlicher Unterstützung durch <strong>Software &\nSupport Media GmbH</strong>.</p>","frontmatter":{"title":"Serverless Application - Who the heck needs a Server?","date":"2017-10-25T00:00:00.000Z","time":null,"speaker":["lars_roewekamp"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"754076b2-57c3-5796-89f2-711200e78c58","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#389858","images":{"fallback":{"src":"/static/2d68f12104a5e2d317ff8ac24a6467cc/b2ce9/plakat_2017_10.png","srcSet":"/static/2d68f12104a5e2d317ff8ac24a6467cc/b2ce9/plakat_2017_10.png 661w","sizes":"100vw"},"sources":[{"srcSet":"/static/2d68f12104a5e2d317ff8ac24a6467cc/fa5c8/plakat_2017_10.webp 661w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145234493192134}}},"poster_alt":"Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand.","tags":["architektur","serverless"]},"fields":{"slug":"/talks/2017-10-25-serverless/","sourceName":"talks"}}},{"node":{"id":"92f30cfa-20d5-5aba-8db4-e6e1de091225","html":"<p>Im letzten Jahr waren die Panama Papers in aller Munde, die Journalisten der Süddeutschen Zeitung und des ICIJ\nuntersuchten und publizierten die breite Nutzung von Briefkastenfirmen durch Politiker, Geschäftsleute, Banken usw. Für\ndie Untersuchung des größten Leaks einer Geldwäschefirma wurde unter anderem auch Neo4j genutzt. Heute werde ich\ndemonstrieren, wie solche Daten in einem Graph modelliert, importiert und abgefragt werden können. Da die Informationen\nöffentlich verfügbar sind, kann jetzt jeder zum Journalisten werden.</p>","frontmatter":{"title":"Neo4j: Panama Papers","date":"2017-11-29T00:00:00.000Z","time":null,"speaker":["michael_hunger"],"location":"sqs","virtual":null,"poster":{"childImageSharp":{"id":"0d8148d9-9587-5da3-aaf0-f92c5603d344","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#587828","images":{"fallback":{"src":"/static/b722dd1b2e5bde00c9706fb3bb19bd30/84817/plakat_2017_11.png","srcSet":"/static/b722dd1b2e5bde00c9706fb3bb19bd30/0e3b9/plakat_2017_11.png 750w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/e5839/plakat_2017_11.png 1080w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/006ba/plakat_2017_11.png 1366w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/84817/plakat_2017_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/b722dd1b2e5bde00c9706fb3bb19bd30/ebc34/plakat_2017_11.webp 750w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/0671f/plakat_2017_11.webp 1080w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/659f9/plakat_2017_11.webp 1366w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/e2c0d/plakat_2017_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt im Sessel mit seiner Lesebrille und liest ein Buch. Auf dem Buch ist der Neo4J-Schriftzug zu lesen und darunter der Titel 'Graf Datenbankula' als Anspielung auf Graf Drakula. Entsprechend sieht man bei Jurgen spitze Schneidezähne, wie bei einem Vampir.","tags":["database"]},"fields":{"slug":"/talks/2017-11-29-neo4j/","sourceName":"talks"}}},{"node":{"id":"259289d0-862c-5044-bdb1-38c8d853780d","html":"<p>Beim Bauen monolithischer Systeme nutzen Entwicklerteams eine Reihe typischer Muster um die Interaktion verschiedener\nSystemteile zu implementieren. Behält man diese Interaktionsmuster bei, während man ein System in verschiedene aufteilt,\nergeben sich oft große Komplexität und architektonische Nachteile, die oft die ursprüngliche Idee, die hinter der\nAufteilung stand, konterkarieren.</p>\n<p>Der Vortrag betrachtet ein konkretes Beispiel von Modulinteraktion in einem monolithischen System und identifiziert die\nProblemstellungen die sich ergeben, wenn man dieses System in exakt dem gleichen Interaktionsstil aufteilt. Danach wird\neine alternative Implementierungsstrategie für das monolithische System diskutiert, die die Modularität des\nUrsprungssystems stark verbessert und im Falle einer Aufteilung in unabhängige Teilsysteme zu einer besseren Architektur\nführt.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"https://speakerdeck.com/olivergierke/refactoring-to-a-system-of-systems\">Folien zum Vortrag</a></li>\n</ul>","frontmatter":{"title":"Refactoring to a System of Systems","date":"2018-01-31T00:00:00.000Z","time":null,"speaker":["oliver_drotbohm"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"9685adbf-d27b-5f98-934a-54d7dc3fcdb8","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#383898","images":{"fallback":{"src":"/static/88afeee4b9b4d069f5896633d252a8d6/242cd/plakat_2018_01.png","srcSet":"/static/88afeee4b9b4d069f5896633d252a8d6/0e3b9/plakat_2018_01.png 750w,\n/static/88afeee4b9b4d069f5896633d252a8d6/e5839/plakat_2018_01.png 1080w,\n/static/88afeee4b9b4d069f5896633d252a8d6/242cd/plakat_2018_01.png 1241w","sizes":"100vw"},"sources":[{"srcSet":"/static/88afeee4b9b4d069f5896633d252a8d6/ebc34/plakat_2018_01.webp 750w,\n/static/88afeee4b9b4d069f5896633d252a8d6/0671f/plakat_2018_01.webp 1080w,\n/static/88afeee4b9b4d069f5896633d252a8d6/cbc2f/plakat_2018_01.webp 1241w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4141821112006447}}},"poster_alt":"Poster: Wir sehen Jürgen über die Schulter, wie er einen Bauplan in der Hand hält und mit einer Schere in kleinere Stücke zerschneidet.","tags":["architektur"]},"fields":{"slug":"/talks/2018-01-31-system_of_systems/","sourceName":"talks"}}},{"node":{"id":"67f5c805-4443-51af-9f87-0a9aff577dce","html":"<p>Die SAP Cloud Platform (SCP) beschreibt ein „Platform as a Service“ (PaaS) Angebot der SAP. Mit der SCP liefert SAP\nsowohl die Entwicklungsumgebung als auch die Laufzeitumgebung zur Realisierung kundenindividueller Erweiterungen von\nCloud- und On-Premise-Lösungen (z.B. SAP S/4HANA). Basierend auf der In-Memory-Plattform SAP HANA stellt die SCP eine\nVielzahl an Datenbank- und Cloud-Services zur Verfügung, welche das PaaS Angebot erweitern und die Integration von SAP-\nund Non-SAP-Lösungen ermöglichen. Im Vortrag wird illustriert, wie die Verbindung aus einer Java EE Applikation zu einem\nSAP On-Premise System hergestellt und dessen Funktionalität in der Cloud genutzt wird.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"https://github.com/juggr/juggr.github.io/blob/master/downloads/juggr_java_auf_sap_cloud.pdf\">Folien zum Vortrag</a></li>\n</ul>","frontmatter":{"title":"Entwicklung von Java Applikationen auf der SAP Cloud Platform","date":"2018-02-28T00:00:00.000Z","time":null,"speaker":["jens_leuschner","mariusz_zienkiewicz"],"location":"cideon","virtual":null,"poster":{"childImageSharp":{"id":"65d7329c-3fb6-5a77-8b25-3984a599f9e8","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#78b8b8","images":{"fallback":{"src":"/static/55c9a31f3c453bcd2592f54f307655df/84817/plakat_2018_02.png","srcSet":"/static/55c9a31f3c453bcd2592f54f307655df/0e3b9/plakat_2018_02.png 750w,\n/static/55c9a31f3c453bcd2592f54f307655df/e5839/plakat_2018_02.png 1080w,\n/static/55c9a31f3c453bcd2592f54f307655df/006ba/plakat_2018_02.png 1366w,\n/static/55c9a31f3c453bcd2592f54f307655df/84817/plakat_2018_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/55c9a31f3c453bcd2592f54f307655df/ebc34/plakat_2018_02.webp 750w,\n/static/55c9a31f3c453bcd2592f54f307655df/0671f/plakat_2018_02.webp 1080w,\n/static/55c9a31f3c453bcd2592f54f307655df/659f9/plakat_2018_02.webp 1366w,\n/static/55c9a31f3c453bcd2592f54f307655df/e2c0d/plakat_2018_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hält einige kleine Programm-Fenster in der Hand. Er hebt die Programme in eine Wolke, die sich hinter ihm befindet. Die Wolke sieht aus wie das Cloud-Symbol.","tags":["cloud"]},"fields":{"slug":"/talks/2018-02-28-java_auf_sap_cloud/","sourceName":"talks"}}},{"node":{"id":"dad0ee9f-ea34-5ce1-b7fe-a0e45b09e845","html":"<p>Während in einer klassischen Konzern-IT Standards und Blaupausen für immer gleiche Anwendungsarchitekturen sorgen,\nbetonen Microservice-Ansätze die technologische Freiheit. Zwei extreme Spielarten der Ausgestaltung von Makro- und\nMikroarchitektur. In diesem Vortrag lernt Ihr neben dem Konzept selbst auch die auf Eure Ziele abgestimmte Richtung, die\nIhr in dieser Fragestellung einschlagen solltet. Wie sieht in Eurem Kontext die Balance aus -- was gebt Ihr für alle\nElemente Eurer Anwendung(slandschaft) vor, wo lasst Ihr bewusst Spielraum? Und gibt es auch noch etwas dazwischen? Zu\ndiesem Zweck passen wir organisatorische und technologische Trends wie 2-Speed/Bimodale Architekturen, Cloud und\nDomänenorientierung in das Entwurfsdoppel Makro und Mikro ein.</p>","frontmatter":{"title":"Mikro- vs. Makroarchitektur – Spielraum und Spielregeln","date":"2018-03-20T00:00:00.000Z","time":null,"speaker":["stefan_zoerner"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"96d1873a-e218-5bea-9d77-8dc2e42dbbc6","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#082868","images":{"fallback":{"src":"/static/6067d1db118af9c9218894cda3ecec37/84817/plakat_2018_03.png","srcSet":"/static/6067d1db118af9c9218894cda3ecec37/0e3b9/plakat_2018_03.png 750w,\n/static/6067d1db118af9c9218894cda3ecec37/e5839/plakat_2018_03.png 1080w,\n/static/6067d1db118af9c9218894cda3ecec37/006ba/plakat_2018_03.png 1366w,\n/static/6067d1db118af9c9218894cda3ecec37/84817/plakat_2018_03.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/6067d1db118af9c9218894cda3ecec37/ebc34/plakat_2018_03.webp 750w,\n/static/6067d1db118af9c9218894cda3ecec37/0671f/plakat_2018_03.webp 1080w,\n/static/6067d1db118af9c9218894cda3ecec37/659f9/plakat_2018_03.webp 1366w,\n/static/6067d1db118af9c9218894cda3ecec37/e2c0d/plakat_2018_03.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen freut sich und hält einen Bauplan in der Hand.","tags":["architektur"]},"fields":{"slug":"/talks/2018-03-20-mikro_vs_makroarchitektur/","sourceName":"talks"}}},{"node":{"id":"1b2f3079-33fa-52a7-8f63-17ed40feb17e","html":"<p>Die Ankündigung der Unterstützung von Kotlin für die Android-Entwicklung auf der Google I/O Keynote 2017 bewirkte\nspontan kräftigen Applaus. Kotlin ist nur eine weitere Programmiersprache für die JVM. Warum also bewirkt die\nverhältnismäßig dröge Ankündigung zur Unterstützung einer JVM-Sprache solche Begeisterung? Was ist das Besondere an\nKotlin gegenüber Java? Der Vortrag gibt einen ersten allgemeinen Einblick in die Sprachfeatures von Kotlin und gibt\nKotlin-Neulingen die Möglichkeit, sich selbst einen Eindruck über die Sprache zu verschaffen.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"https://gaerfield.github.io/2018-04-26_Kotlin_jug-gr/\">Folien zum Vortrag</a></li>\n<li><a href=\"https://github.com/gaerfield/2018-04-26_Kotlin_jug-gr\">Code auf Github</a></li>\n</ul>","frontmatter":{"title":"Kotlin","date":"2018-04-25T00:00:00.000Z","time":null,"speaker":["tobias_blaschke"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"1a259f6b-01d1-58d9-9813-e4fb56a34153","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d8b808","images":{"fallback":{"src":"/static/7425eb2154d8ac0def6b6a91b1bc7b2d/84817/plakat_2018_04.png","srcSet":"/static/7425eb2154d8ac0def6b6a91b1bc7b2d/0e3b9/plakat_2018_04.png 750w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/e5839/plakat_2018_04.png 1080w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/006ba/plakat_2018_04.png 1366w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/84817/plakat_2018_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/7425eb2154d8ac0def6b6a91b1bc7b2d/ebc34/plakat_2018_04.webp 750w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/0671f/plakat_2018_04.webp 1080w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/659f9/plakat_2018_04.webp 1366w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/e2c0d/plakat_2018_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hält einen Globus in der Hand und platziert eine kleine Fahne an die Stelle der russischen Insel 'Kotlin'. Er trägt eine russische Fell-Mütze","tags":["programmiersprachen"]},"fields":{"slug":"/talks/2018-04-25-kotlin/","sourceName":"talks"}}},{"node":{"id":"bba11502-e73b-5c5e-9ce7-f4102b1daed5","html":"<p>Die RESTful-Architektur ist eine etablierte Möglichkeit, Schnittstellen zwischen Client und Server zu gestalten. Dies\nbringt allerdings einige Nachteile mit sich. Als Beispiel können hier die hohe Anzahl an benötigten Requests sowie die\nnur unvollständige Dokumentation der Schnittstelle genannt werden. Mit GraphQL entwickelte Facebook eine alternative\nAbfragesprache, welche die genannten Nachteile beseitigen sollte. Dabei wird eine Abfrage ähnlich der Struktur der\nJSON-Syntax an den Server übermittelt, welcher die gewünschten Daten mit nur einer Antwort zur Verfügung stellt.</p>\n<p>Im Vortrag wird GraphQL anhand von Beispielen vorgestellt und dabei sowohl die Client- als auch Serverseite betrachtet.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"https://docs.google.com/presentation/d/1WQEpOns5tpV-u5VixhJYCfIV_1TJXmCWgfqQ28_oZms/edit?usp=sharing\">Folien zum Vortrag</a></li>\n<li><a href=\"https://github.com/StevieSteven/graphql-example\">Code auf Github</a></li>\n</ul>","frontmatter":{"title":"GraphQL","date":"2018-05-30T00:00:00.000Z","time":null,"speaker":["stephan_strehler"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"90e1be0b-07fd-5977-ad85-c716671424c1","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e838a8","images":{"fallback":{"src":"/static/70801d1cf0778b63b022c58e167483bf/84817/plakat_2018_05.png","srcSet":"/static/70801d1cf0778b63b022c58e167483bf/b8e70/plakat_2018_05.png 750w,\n/static/70801d1cf0778b63b022c58e167483bf/e5839/plakat_2018_05.png 1080w,\n/static/70801d1cf0778b63b022c58e167483bf/f51d5/plakat_2018_05.png 1366w,\n/static/70801d1cf0778b63b022c58e167483bf/84817/plakat_2018_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/70801d1cf0778b63b022c58e167483bf/e5d6f/plakat_2018_05.webp 750w,\n/static/70801d1cf0778b63b022c58e167483bf/0671f/plakat_2018_05.webp 1080w,\n/static/70801d1cf0778b63b022c58e167483bf/7e884/plakat_2018_05.webp 1366w,\n/static/70801d1cf0778b63b022c58e167483bf/e2c0d/plakat_2018_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das GraphQL-Logo zu sehen.","tags":["programmiersprachen","web","architektur"]},"fields":{"slug":"/talks/2018-05-30-graphql/","sourceName":"talks"}}},{"node":{"id":"f17a3451-b9a5-5b42-b740-3c15fe9268f5","html":"<p>Unveränderliche Datenstrukturen sind ein wichtiges Werkzeug der funktionalen Programmierung. Aber auch abseits dessen\nkönnen Immutables ungemein nützlich sein: Richtig angewandt erhöhen sie die Verständlichkeit des Codes, da\nEntwicklerInnen nicht mehr auf die mühsame Suche gehen müssen, an welcher Stelle ein Objekt möglicherweise ungewollt\nverändert wurde. Darüber hinaus sind Immutables inhärent Threadsafe und können auch hier die Nachvollziehbarkeit des\nCodes erhöhen.</p>\n<p>Da Java als Sprache aber keine besondere Unterstützung für Immutables mitbringt, müssen EntwicklerInnen auf Patterns und\nBibliotheken zurückgreifen, um in den Genuss von unveränderlichen Datenstrukturen zu kommen. Denn natürlich müssen auch\nin funktionalen Programmen letztlich Veränderungen der Daten abgebildet werden und dafür bedarf es geeigneter\nUnterstützung.</p>\n<p>Im Vortrag möchte ich neben einer grundsätzlichen Einführung in die Thematik auch einige dieser Techniken vorstellen und\nihre Vor- und Nachteile besprechen.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"https://docs.google.com/presentation/d/1xKfrXV5XY7NBdpdlHapW6-88vtN9ASdjmEDtGEAWGpk/edit?usp=sharing\">Folien zum Vortrag</a></li>\n</ul>","frontmatter":{"title":"Immutable Data - Unveränderliche Daten im Griff","date":"2018-06-27T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"314ba704-f1f4-5d2c-8535-b32da028a3c9","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#780838","images":{"fallback":{"src":"/static/1fae33eb72f57d492a22e010e53219f1/84817/plakat_2018_06.png","srcSet":"/static/1fae33eb72f57d492a22e010e53219f1/b8e70/plakat_2018_06.png 750w,\n/static/1fae33eb72f57d492a22e010e53219f1/e5839/plakat_2018_06.png 1080w,\n/static/1fae33eb72f57d492a22e010e53219f1/f51d5/plakat_2018_06.png 1366w,\n/static/1fae33eb72f57d492a22e010e53219f1/84817/plakat_2018_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/1fae33eb72f57d492a22e010e53219f1/e5d6f/plakat_2018_06.webp 750w,\n/static/1fae33eb72f57d492a22e010e53219f1/0671f/plakat_2018_06.webp 1080w,\n/static/1fae33eb72f57d492a22e010e53219f1/7e884/plakat_2018_06.webp 1366w,\n/static/1fae33eb72f57d492a22e010e53219f1/e2c0d/plakat_2018_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen steht vor einem großen Steinblock, der fast aussieht wie ein Grabstein. Auf dem Stein sind lauter Nullen und Einsen eingraviert. Er hält einen Hammer und Meißel in der Hand.","tags":["programmiersprachen","functional-programming"]},"fields":{"slug":"/talks/2018-06-27-immutable-data/","sourceName":"talks"}}},{"node":{"id":"f3a5b0e9-0351-58c1-a827-a5f39196ddee","html":"<p>Spätestens seit Java 8 gibt es monadische Typen in Java. Aber was bedeutet das eigentlich? Was sind die Eigenschaften,\ndie Monaden ausmachen? Und wo liegen unsere Schwierigkeiten beim Verständnis von Monaden? Dieser Vortrag beschreibt, was\neine Monade ist und wie wir eine monadische Transaktion nutzen können, um in domänenspezifischer Sprache mit einer\nDatenbank zu reden. Hierbei bauen wir monadische Transaktionen in ein vorhandenes Repository ein. Weiter beleuchten wir\ndie Vor- und Nachteile dieses Ansatzes und diskutieren die Unterstützung von Monaden in Java. Voraussetzung sind erste\nErfahrungen mit funktionaler Programmierung und Lambdas.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"http://jug-gr.de/downloads/juggr_refactoring_towards_monadic_transactions.pdf\">Folien zum Vortrag</a></li>\n</ul>","frontmatter":{"title":"Monadische Transaktionen","date":"2018-11-23T00:00:00.000Z","time":null,"speaker":["gregor_trefs"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"918002c9-e393-5b8d-a2d6-ee73c1735383","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#680838","images":{"fallback":{"src":"/static/d29473cce93e3ade3231fd7ea7b0188e/84817/plakat_2018_11.png","srcSet":"/static/d29473cce93e3ade3231fd7ea7b0188e/b8e70/plakat_2018_11.png 750w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/e5839/plakat_2018_11.png 1080w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/f51d5/plakat_2018_11.png 1366w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/84817/plakat_2018_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/d29473cce93e3ade3231fd7ea7b0188e/e5d6f/plakat_2018_11.webp 750w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/0671f/plakat_2018_11.webp 1080w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/7e884/plakat_2018_11.webp 1366w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/e2c0d/plakat_2018_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und hält ein Tablett in der Hand. Auf dem Tablett steht eine durchsichtige Flasche mit gelber Limo darin. Auf dem Etikett steht 'Li-Monade' geschrieben.","tags":["functional-programming"]},"fields":{"slug":"/talks/2018-11-23-monadische_transaktionen/","sourceName":"talks"}}},{"node":{"id":"6c6f82f3-26da-59ee-a8b6-8c178256b6b7","html":"<p>Anstelle über Microservices, NO-SQL Lösungen oder Container-Management zu reden werden im Workshop Bestandteile des\nStandard Java API vorgestellt. Diese Java Features helfen jedem Entwickler eine wartbare und zukunftssichere Anwendung\nzu entwickeln, egal ob mit Spring, JavaFX oder JavaEE. Verschiedene Sprach-Features und Konzepte der Standard Java APIs\nwerden genauer unter die Lupe genommen und deren sinnvoller Einsatz anhand von Beispielen gezeigt. Hierdurch werden\nunter anderem folgende Fragen beantwortet: Wie funktionieren eigentlich Annotations? Wie entwickle ich Plug-In\nFunktionalität ohne auf OSGI zurückgreifen zu müssen? Wie gehe ich am besten mit NullPointerExceptions um? Wie schreibe\nich nebenläufigen Code der trotzdem wartbar ist?</p>","frontmatter":{"title":"Java APIs - the missing manual","date":"2019-01-31T00:00:00.000Z","time":null,"speaker":["hendrik_ebbers"],"location":"cideon","virtual":null,"poster":{"childImageSharp":{"id":"8509bc59-0ad5-5d24-87e3-f253d53d68b2","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#3858b8","images":{"fallback":{"src":"/static/8c4759d0cca5ff005992863b4cbbfd0c/84817/plakat_2019_01.png","srcSet":"/static/8c4759d0cca5ff005992863b4cbbfd0c/b8e70/plakat_2019_01.png 750w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/e5839/plakat_2019_01.png 1080w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/f51d5/plakat_2019_01.png 1366w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/84817/plakat_2019_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/8c4759d0cca5ff005992863b4cbbfd0c/e5d6f/plakat_2019_01.webp 750w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/0671f/plakat_2019_01.webp 1080w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/7e884/plakat_2019_01.webp 1366w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/e2c0d/plakat_2019_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt mit seiner Lesebrille in seinem Sessel und liest ein Buch. Auf dem Buchrücken steht 'Javadoc'","tags":["java"]},"fields":{"slug":"/talks/2019-01-31_java_apis_missing_manual/","sourceName":"talks"}}},{"node":{"id":"f37a3185-cf74-5401-9461-328751a5a63e","html":"<p>Java Reflections sind ein Feature der Java Sprache und werden von der JVM für das interne Handling von Klassen, Feldern\nund Methoden verwendet. Intern werden darüber Methodenaufrufe, Zugriffsrechte wie public/privat oder seit Java 9 auch\ndie Modulexporte geregelt.</p>\n<p>Dieses Feature kann man sich in der normalen Java Umgebung zu Nutze machen, um auf alle Informationen einer Klasse\nzuzugreifen. So ist es möglich, auf deren Methoden und Felder zuzugreifen, selbst wenn diese privat sind. Felder können\nüberschreiben, Template-Parameter in Feldern und Methoden angezeigt, sowie auch Annotationen der Klasse, Methoden und\nFelder gelesen werden. Am Beispiel eines abstrakten Klassen-Editors werden diese Möglichkeiten in dem Vortrag näher\nbetrachtet.</p>","frontmatter":{"title":"Java Reflection: Classes behind the scenes","date":"2019-02-27T00:00:00.000Z","time":null,"speaker":["erik_jaehne"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"b2cb5256-0c61-5e8b-8a34-23f74562f16f","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#78b8b8","images":{"fallback":{"src":"/static/15923e5b77de857597a70091dfe03bd5/84817/plakat_2019_02.png","srcSet":"/static/15923e5b77de857597a70091dfe03bd5/b8e70/plakat_2019_02.png 750w,\n/static/15923e5b77de857597a70091dfe03bd5/e5839/plakat_2019_02.png 1080w,\n/static/15923e5b77de857597a70091dfe03bd5/f51d5/plakat_2019_02.png 1366w,\n/static/15923e5b77de857597a70091dfe03bd5/84817/plakat_2019_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/15923e5b77de857597a70091dfe03bd5/e5d6f/plakat_2019_02.webp 750w,\n/static/15923e5b77de857597a70091dfe03bd5/0671f/plakat_2019_02.webp 1080w,\n/static/15923e5b77de857597a70091dfe03bd5/7e884/plakat_2019_02.webp 1366w,\n/static/15923e5b77de857597a70091dfe03bd5/e2c0d/plakat_2019_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand.","tags":["java"]},"fields":{"slug":"/talks/2019-02-27_reflection/","sourceName":"talks"}}},{"node":{"id":"dd2fc902-b2b3-5256-b24b-e09f17f45415","html":"<p>Die Website der JUG Görlitz läuft fast <em>Serverless</em>. Natürlich muss ein Webserver Dateien ausliefern aber ansonsten sind\nkeine Datenbank, Applicationserver, PHP oder sonstige aktive Serverkomponenten im Einsatz. Stattdessen sind alle Inhalte\nals Markdown-Textdateien in einem <a href=\"https://github.com/juggr/juggr.github.io\">Git-Repository</a> abgelegt (dieser Talk\nbeispielsweise\n<a href=\"https://github.com/juggr/juggr.github.io/blob/source/content/talks/2019-03-27-static-site-generators.md\">hier</a>). Ein so\ngenannter \"Static-Site-Generator\" generiert daraus HTML-, CSS- und JavaScript-Dateien, die nur noch von einem ganz\nnormalen HTTP-Server ausgeliefert werden müssen. Dieses Vorgehen vereinfacht das Hosting, beschleunigt Website-Aufrufe\nund minimiert die Angriffsfläche des Servers.</p>\n<p>Im Vortrag wird das Konzept von Static-Site-Generators erklärt und die möglichen Einsatzgebiete beschrieben. Mit dem\nTool <a href=\"https://www.gatsbyjs.org/\">Gatsby</a> werden wir eine einfache Blog-Website bauen. Am Beispiel der JUG-Website wird\naber auch gezeigt, wie komplexere Daten-Modelle mit mehreren Entitäten (<a href=\"/talks\">Vorträge</a>, <a href=\"/speakers\">Speaker</a>,\n<a href=\"/locations\">Veranstaltungsorte</a>, <a href=\"/tags\">Tags</a>) umgesetzt werden können. Die technische Grundlage von Gatsby stellt\n<a href=\"/talks/2017-05-31-react\">React</a> für Templates und <a href=\"/talks/2018-05-30-graphql\">GraphQL</a> für die Daten-Organisation dar.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"https://docs.google.com/presentation/d/1YtvQDv-VwHDlmTsF-B6_9NfJ4GYfmdyBZLGsNo4_BRM/edit?usp=sharing\">Folien zum Vortrag</a></li>\n</ul>","frontmatter":{"title":"Static-Site-Generators","date":"2019-03-27T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"bffb7b05-0e58-5922-92df-21ce241ccd84","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#a8c868","images":{"fallback":{"src":"/static/a69cadfbb400620dadfb89d178c1c8db/a6b6d/plakat_2019_03.png","srcSet":"/static/a69cadfbb400620dadfb89d178c1c8db/0e3b9/plakat_2019_03.png 750w,\n/static/a69cadfbb400620dadfb89d178c1c8db/7aaf4/plakat_2019_03.png 1080w,\n/static/a69cadfbb400620dadfb89d178c1c8db/a6b6d/plakat_2019_03.png 1240w","sizes":"100vw"},"sources":[{"srcSet":"/static/a69cadfbb400620dadfb89d178c1c8db/ebc34/plakat_2019_03.webp 750w,\n/static/a69cadfbb400620dadfb89d178c1c8db/47da9/plakat_2019_03.webp 1080w,\n/static/a69cadfbb400620dadfb89d178c1c8db/5c55f/plakat_2019_03.webp 1240w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.414516129032258}}},"poster_alt":"Poster: Jürgen hält einen Kasten in der Hand mit jeweils einem Trichter oben und unten. Oben gibt er zwei Dokumente hinein und unten fällt das Bild einer Webseite heraus. Auf dem Kasten ist das Logo von Gatsbyjs zu sehen.","tags":["web","javascript"]},"fields":{"slug":"/talks/2019-03-27-static-site-generators/","sourceName":"talks"}}},{"node":{"id":"9a7e9567-b7fe-59cd-90fe-aec93c90f2af","html":"<p>Mit dem JDK-Enhancement-Proposal (JEP 322) wird die zeitbasierte Java-Release-Versionierung definiert, die auf dem\naktuellen Java SE Version-String-Schema basiert und die Namensgebung für die kommenden Versionen der Java SE Plattform\nund vom JDK vorgibt. Seit dem Jahr 2018 erscheinen die künftigen Java-Feature-Releases alle 6 Monate. Das JDK 11 wurde\nals Long-Term-Support-Release (LTS-Release) im September 2018 veröffentlicht und nach sechs Monaten folgte das OpenJDK\n12 im März 2019. Mit dem zeitlichen Abstand von sechs Monaten bekommen die Entwickler wesentlich schneller neue\nJava-Funktionsmerkmale als dies mit dem bisherigen Dreijahreszyklus der Fall war. Zwischen den\nOpenJDK/JDK-Feature-Releases sind zwei Updates geplant, bei denen es um die Wartung und Bugfixes geht, die wie gewohnt,\njeweils im Januar, April, Juli und Oktober eines Jahres als Java Critical Patch Update erscheinen werden. Die Planung\nsieht vor, jeweils alle drei Jahre ein weiteres Java-LTS-Release zu veröffentlichen, damit der Anwendungsbetrieb eine\nstabile und ausgereifte Java-Basis bekommt, die mit der nachfolgenden Versionierung $FEATURE.$INTERIM.$UPDATE.$PATCH\ngekennzeichnet wird. Im Vortrag werden Beispiele zum Version-String besprochen, sowie Empfehlungen diskutiert, wie die\nkünftige Java-Strategie mit dem OpenJDK, Oracle JDK (LTS) und der neuen Java SE Subscription (Support) für die\nEntwickler und für den Anwendungsbetrieb aussehen soll. Zudem wird die Weiterentwicklung der OpenJFX/JavaFX\nUI-Technologie mit den Aktivitäten der Developer-Community dargestellt.</p>","frontmatter":{"title":"It's a JDK jungle out there - oder wie es mit den neuen Java-Versionen geordnet weitergeht","date":"2019-04-24T00:00:00.000Z","time":null,"speaker":["wolfgang_weigend"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"e335d1a1-3789-5e42-9670-a3e1c361eadc","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/32de550f9e63747cb85192fa0598ae2c/b6707/plakat_2019_04.png","srcSet":"/static/32de550f9e63747cb85192fa0598ae2c/0e3b9/plakat_2019_04.png 750w,\n/static/32de550f9e63747cb85192fa0598ae2c/7aaf4/plakat_2019_04.png 1080w,\n/static/32de550f9e63747cb85192fa0598ae2c/006ba/plakat_2019_04.png 1366w,\n/static/32de550f9e63747cb85192fa0598ae2c/b6707/plakat_2019_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/32de550f9e63747cb85192fa0598ae2c/ebc34/plakat_2019_04.webp 750w,\n/static/32de550f9e63747cb85192fa0598ae2c/47da9/plakat_2019_04.webp 1080w,\n/static/32de550f9e63747cb85192fa0598ae2c/659f9/plakat_2019_04.webp 1366w,\n/static/32de550f9e63747cb85192fa0598ae2c/c86cf/plakat_2019_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen hält eine Schriftrolle mit offiziellen Siegel in der Hand und liest wie ein mittelalterlicher Herold daraus vor. Wir sehen leider nicht den Text auf der Schriftrolle.","tags":["java","jdk"]},"fields":{"slug":"/talks/2019-04-24_jdk_jungle/","sourceName":"talks"}}},{"node":{"id":"a5f7b4d5-03e6-588d-9778-62b4b8c44286","html":"<p>Der Vortrag erläutert zunächst die Grundlagen der Standards OAuth 2.0 und OpenID-Connect und geht danach auf den Einsatz\ndieser Standards mittels Keycloak ein. Dabei wird anhand einer Beispielanwendung (React, Spring Boot) gezeigt, wie man\nKeycloak in seine Anwendung einbinden kann.</p>","frontmatter":{"title":"OAuth 2.0/OpenIDConnect mit Keycloak","date":"2019-05-29T00:00:00.000Z","time":null,"speaker":["denny_israel"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"cb4beaed-8514-5a8a-8dfe-7bec12fbdd27","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#386898","images":{"fallback":{"src":"/static/eaf6c5845a5ab5a40e0dd634a7eaed23/b6707/plakat_2019_05.png","srcSet":"/static/eaf6c5845a5ab5a40e0dd634a7eaed23/0e3b9/plakat_2019_05.png 750w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/7aaf4/plakat_2019_05.png 1080w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/006ba/plakat_2019_05.png 1366w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/b6707/plakat_2019_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/eaf6c5845a5ab5a40e0dd634a7eaed23/ebc34/plakat_2019_05.webp 750w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/47da9/plakat_2019_05.webp 1080w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/659f9/plakat_2019_05.webp 1366w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/c86cf/plakat_2019_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten.","tags":["java","security"]},"fields":{"slug":"/talks/2019-05-29-oauth/","sourceName":"talks"}}},{"node":{"id":"6895717e-291c-581d-8fef-3b5e73bc8369","html":"<p>HashMap und ArrayList kennt jeder, na klar. Aber wann stellen diese eigentlich die richtige Wahl dar? Und vor allem:\nWann nicht? Das Collections Framework enthält zahlreiche, teils recht spezialisierte Implementierungen. Doch viele\nEntwickler kennen nur einen kleinen Teil davon. Schon mal was von EnumSet oder WeakHashMap gehört? Und was ist der\nUnterschied zwischen ConcurrentSkipListMap und ConcurrentHashMap? Für jeden Java-Entwickler ist es wichtig, die Stärken\nund Schwächen der einzelnen Implementierungen zu kennen. Dieser Vortrag diskutiert Details wie Threadsicherheit,\nLaufzeitverhalten und sinnvolle Initialisierung anhand einiger ausgewählter Collection-Klassen.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_java_collections.pdf\">Folien zum Vortrag</a></li>\n</ul>","frontmatter":{"title":"Wie gut kennst Du das Collections Framework?","date":"2019-06-26T00:00:00.000Z","time":null,"speaker":["thilo_frotscher"],"location":"cideon","virtual":null,"poster":{"childImageSharp":{"id":"ecc9b098-2be1-50e1-87d8-48488a256061","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#389838","images":{"fallback":{"src":"/static/359c95f2d624a1b8d7167b6ff2c5340c/b6707/plakat_2019_06.png","srcSet":"/static/359c95f2d624a1b8d7167b6ff2c5340c/0e3b9/plakat_2019_06.png 750w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/7aaf4/plakat_2019_06.png 1080w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/006ba/plakat_2019_06.png 1366w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/b6707/plakat_2019_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/359c95f2d624a1b8d7167b6ff2c5340c/ebc34/plakat_2019_06.webp 750w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/47da9/plakat_2019_06.webp 1080w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/659f9/plakat_2019_06.webp 1366w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/c86cf/plakat_2019_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen trägt eine Sonnenbrille und ein buntes Hemd mit Blumen darauf. Er hält sich die Hand ans Kinn und grinst, so als würde er gerade einen Plan schmieden. An seinem Hemd hängt ein Schild mit der Aufschrift 'Sommer Collection'.","tags":["java"]},"fields":{"slug":"/talks/2019-06-26-collection-framework/","sourceName":"talks"}}},{"node":{"id":"a0f32bfb-f9fa-5c9c-a70d-ffd93be7d859","html":"<p>Hattest du auch schon mal das Problem, dass du deine eigenen komplizierten und unleserlichen Testfälle nicht mehr\nverstanden hast? Wir kennen das Problem und zeigen euch mögliche Lösungen.</p>","frontmatter":{"title":"Advanced BDD Tests","date":"2019-11-28T00:00:00.000Z","time":null,"speaker":["maik_wagner"],"location":"tallence","virtual":null,"poster":{"childImageSharp":{"id":"6f443280-7e6e-5951-ab2a-0815064e81b4","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d86868","images":{"fallback":{"src":"/static/c5e4690e979964e9c44af61d883856f8/b6707/plakat_2019_11.png","srcSet":"/static/c5e4690e979964e9c44af61d883856f8/0e3b9/plakat_2019_11.png 750w,\n/static/c5e4690e979964e9c44af61d883856f8/7aaf4/plakat_2019_11.png 1080w,\n/static/c5e4690e979964e9c44af61d883856f8/006ba/plakat_2019_11.png 1366w,\n/static/c5e4690e979964e9c44af61d883856f8/b6707/plakat_2019_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/c5e4690e979964e9c44af61d883856f8/ebc34/plakat_2019_11.webp 750w,\n/static/c5e4690e979964e9c44af61d883856f8/47da9/plakat_2019_11.webp 1080w,\n/static/c5e4690e979964e9c44af61d883856f8/659f9/plakat_2019_11.webp 1366w,\n/static/c5e4690e979964e9c44af61d883856f8/c86cf/plakat_2019_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier zusehen ist. Auf dem Blatt steht 'Testplan' oben und darunter sind drei Checkboxen mit angedeuteten Textzeilen daneben.","tags":["java","testen"]},"fields":{"slug":"/talks/2019-11-28-advanced-bdd-tests/","sourceName":"talks"}}},{"node":{"id":"c7067e06-b5be-50ec-83d2-9ea30dc14640","html":"<p>\"Create Apps, Not the Platform\" - Cloud Foundry verspricht, dass sich Entwicker voll und ganz auf die\nAnwendungsentwicklung fokussieren können, anstatt einen erheblichen Teil ihrer Zeit auf Infrastruktur, Deployment usw.\nverwenden zu müssen. Was ist Cloud Foundry überhaupt? Und hält sie, was sie verspricht?</p>","frontmatter":{"title":"Innovationsmotor Cloud Foundry!?","date":"2020-01-29T00:00:00.000Z","time":null,"speaker":["simon_roloff"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"abe046a7-29a3-5710-9b2b-cf4a5ff0c1a2","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#583898","images":{"fallback":{"src":"/static/5ef746b99e05db0762f96d0a28f278da/84817/plakat_2020-01.png","srcSet":"/static/5ef746b99e05db0762f96d0a28f278da/b8e70/plakat_2020-01.png 750w,\n/static/5ef746b99e05db0762f96d0a28f278da/e5839/plakat_2020-01.png 1080w,\n/static/5ef746b99e05db0762f96d0a28f278da/f51d5/plakat_2020-01.png 1366w,\n/static/5ef746b99e05db0762f96d0a28f278da/84817/plakat_2020-01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/5ef746b99e05db0762f96d0a28f278da/e5d6f/plakat_2020-01.webp 750w,\n/static/5ef746b99e05db0762f96d0a28f278da/0671f/plakat_2020-01.webp 1080w,\n/static/5ef746b99e05db0762f96d0a28f278da/7e884/plakat_2020-01.webp 1366w,\n/static/5ef746b99e05db0762f96d0a28f278da/e2c0d/plakat_2020-01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Wir sehen das typische Cloud-Symbol einer Wolke im Vordergrund. Jürgen stützt sich auf die Wolke, so als wäre es ein Kopfkissen. Er stützt seinen Kopf mit einem Arm ab und schaut ein bisschen verträumt. Er wirkt wie in Gedanken versunken.","tags":["cloud"]},"fields":{"slug":"/talks/2020-01-27-cloud-foundry/","sourceName":"talks"}}},{"node":{"id":"92ec8c3c-c428-5ca1-bb98-7b8ebac5cdfb","html":"<p>Nach der Freigabe vom JDK 14 werden die aktuellen Merkmale vorgestellt. Neben Bug-Fixes und Security-Patches, stecken im\nJDK 14 Feature-Release, Sprach- und JVM-Änderungen, Erweiterungen, zugefügte und entfernte Klassen und Methoden,\ndeprecated markierte Features und JDK-Tool-Änderungen. Bereits mit der Einführung der JDK Version 11 wurden die\ntechnischen Unterschiede bei der Gleichstellung vom Oracle JDK mit dem Oracle OpenJDK entfernt. Bei diesem\nTechnologietransfer sind alle Bestandteile vom Oracle JDK als Open-Source-Implentierungen in das OpenJDK geflossen,\nsodass das Oracle JDK 14 durch das OpenJDK 14 augetauscht werden kann. Die Anwender können ein JDK oder ein OpenJDK\nverschiedener Hersteller frei auswählen. Dazu werden die Migrationsaspekte älterer Java-Anwendungen zum JDK 14\nerläutert. Im Vortrag wird auch ein Blick auf den langfristigen Einsatz vom Java Modulsystem geworfen und dies anhand\nvon Beispielen durch Erstellung einer individueller Java Runtime mit der Anwendung verdeutlicht. Zudem wird die die\nGraalVM als universelle Virtuelle Maschine (VM) für Anwendungen im Java Ökosystem betrachtet.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/JDK_14_und_GraalVM_im_Java-%C3%96kosystem_WW.pdf\">Folien zum Vortrag</a></li>\n</ul>\n<hr>\n<h2>Hinweis</h2>\n<p><strong>Dieser Vortrag findet Online statt.</strong> Dazu hat Wolfgang ein Zoom-Meeting aufgesetzt. Dieser Meeting-Raum ist\nPasswortgeschützt. Bitte meldet euch vorab per E-Mail an. Wir schicken euch dann vor dem Meeting das Passwort per Mail\nzu.</p>\n<p>Dieses Mal geht es schon <strong>18:00 Uhr los</strong>.</p>","frontmatter":{"title":"JDK 14 und GraalVM im Java Ökosystem","date":"2020-04-29T00:00:00.000Z","time":"18:00","speaker":["wolfgang_weigend"],"location":null,"virtual":true,"poster":{"childImageSharp":{"id":"59ef0a09-a854-5bc5-a122-2d35ddcf6987","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#486888","images":{"fallback":{"src":"/static/1b5849494114993b21e29316b4af1f35/84817/plakat_2020_04.png","srcSet":"/static/1b5849494114993b21e29316b4af1f35/b8e70/plakat_2020_04.png 750w,\n/static/1b5849494114993b21e29316b4af1f35/e5839/plakat_2020_04.png 1080w,\n/static/1b5849494114993b21e29316b4af1f35/f51d5/plakat_2020_04.png 1366w,\n/static/1b5849494114993b21e29316b4af1f35/84817/plakat_2020_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/1b5849494114993b21e29316b4af1f35/e5d6f/plakat_2020_04.webp 750w,\n/static/1b5849494114993b21e29316b4af1f35/0671f/plakat_2020_04.webp 1080w,\n/static/1b5849494114993b21e29316b4af1f35/7e884/plakat_2020_04.webp 1366w,\n/static/1b5849494114993b21e29316b4af1f35/e2c0d/plakat_2020_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt in seinem Sessel. Er trägt sein übliches Jacket, eine Schlafanzug-Hose und Latschen. Neben dem Sessel sieht man seine üblichen schicken Schnürschuhe herumliegen. Er hat ein Headset aufgesetzt und seinen Laptop im Schoß. Jürgen verfolgt den Vortrag aus dem Home-Office. Auf dem Laptop-Deckel ist eine angebissene Banane zusehen.","tags":["java","jdk","graalvm"]},"fields":{"slug":"/talks/2020-04-29-jdk14_graalvm/","sourceName":"talks"}}},{"node":{"id":"0ebf9412-38af-5831-82e8-2b0aa744f924","html":"<p>Als Softwareentwickler ist man auf die Verwendung von Versionsverwaltungssystemen und deren Branching- und\nMerging-Strategien angewiesen. Vorgaben, wie diese Strategien angewendet werden müssen, liefern diverse\nBranching-Modelle. Sie sollen vor Allem den Entwickleralltag erleichtern, indem sie für eine saubere Historie sorgen,\nden Softwarereleaseprozess unterstützen oder verhindern, dass man in der Merge-Hölle landet. In dem Vortrag werden\neinige Branching-Modelle vorgestellt. Dabei wird der Frage auf den Grund gegangen, welche Art von Modell zu welcher Art\nvon Softwareprojekt passt und welche allgemeingültigen Vorgehensweisen beim Branching und Merging daraus gezogen werden\nkönnen.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_branching_models.pdf\">Folien zum Vortrag</a></li>\n</ul>\n<hr>\n<h2>Hinweis</h2>\n<p><strong>Dieser Vortrag findet Online statt.</strong> Dazu haben wir ein Jitsi-Meeting aufgesetzt:\n<a href=\"https://meet.digitale-oberlausitz.eu/jug\">https://meet.digitale-oberlausitz.eu/jug</a></p>","frontmatter":{"title":"Branching-Modelle","date":"2020-07-22T00:00:00.000Z","time":null,"speaker":["hannes_kretschmer"],"location":null,"virtual":true,"poster":{"childImageSharp":{"id":"1908832c-2f77-598f-a24b-2bcdee954b3a","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d86838","images":{"fallback":{"src":"/static/595b224b634a1c6694d94578a61bc06c/84817/plakat_2020_07.png","srcSet":"/static/595b224b634a1c6694d94578a61bc06c/b8e70/plakat_2020_07.png 750w,\n/static/595b224b634a1c6694d94578a61bc06c/e5839/plakat_2020_07.png 1080w,\n/static/595b224b634a1c6694d94578a61bc06c/f51d5/plakat_2020_07.png 1366w,\n/static/595b224b634a1c6694d94578a61bc06c/84817/plakat_2020_07.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/595b224b634a1c6694d94578a61bc06c/e5d6f/plakat_2020_07.webp 750w,\n/static/595b224b634a1c6694d94578a61bc06c/0671f/plakat_2020_07.webp 1080w,\n/static/595b224b634a1c6694d94578a61bc06c/7e884/plakat_2020_07.webp 1366w,\n/static/595b224b634a1c6694d94578a61bc06c/e2c0d/plakat_2020_07.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hat einen Schaffner-Hut auf dem Kopf. Er hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier mit der Überschrift 'Fahrplan' geheftet ist. Unter der Überschrift ist ein Streckenplan mit Verzweigungen angedeutet.","tags":["java","git"]},"fields":{"slug":"/talks/2020-07-22-branching_modelle/","sourceName":"talks"}}},{"node":{"id":"fee8a0ec-6360-5446-9bb0-9ecbe5695536","html":"<p>Durch die Veröffentlichung von immer neuen Schwachstellen in Softwareprodukten rückt das Thema Application Security\nzunehmend in den Fokus vieler Softwareentwickler. Sichere Software zu erstellen muss aber keine große Herausforderung\nsein, wenn man Best Practices befolgt und der Application Security einen festen Platz im Entwicklungszyklus einräumt.\nZiel des Vortrags ist es, einen Überblick zu Secure Coding in Java zu vermitteln und die Wichtigkeit dieses Themas\nhervorzuheben. Im Detail wird außerdem an praktischen Beispielen demonstriert, wie Sicherheitsschwachstellen im\nProgrammcode aussehen, ausgenutzt und behoben werden können.</p>\n<hr>\n<h2>Hinweis</h2>\n<p><strong>Dieser Vortrag findet Online statt.</strong> Dazu haben wir ein Jitsi-Meeting aufgesetzt:\n<a href=\"https://meet.digitale-oberlausitz.eu/jug\">https://meet.digitale-oberlausitz.eu/jug</a></p>","frontmatter":{"title":"Java Secure Coding in der Praxis","date":"2020-11-25T00:00:00.000Z","time":null,"speaker":["nico_foerster"],"location":null,"virtual":true,"poster":{"childImageSharp":{"id":"b5a8cec9-632e-5d2d-acc3-45cfdedb6dfa","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#182838","images":{"fallback":{"src":"/static/c2b6e13c2719de1c7a0da2b790067455/84817/plakat_2020_11.png","srcSet":"/static/c2b6e13c2719de1c7a0da2b790067455/b8e70/plakat_2020_11.png 750w,\n/static/c2b6e13c2719de1c7a0da2b790067455/e5839/plakat_2020_11.png 1080w,\n/static/c2b6e13c2719de1c7a0da2b790067455/f51d5/plakat_2020_11.png 1366w,\n/static/c2b6e13c2719de1c7a0da2b790067455/84817/plakat_2020_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/c2b6e13c2719de1c7a0da2b790067455/e5d6f/plakat_2020_11.webp 750w,\n/static/c2b6e13c2719de1c7a0da2b790067455/0671f/plakat_2020_11.webp 1080w,\n/static/c2b6e13c2719de1c7a0da2b790067455/7e884/plakat_2020_11.webp 1366w,\n/static/c2b6e13c2719de1c7a0da2b790067455/e2c0d/plakat_2020_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt eine schwarze Woll-Mütze und eine schwarze Maske. Er trägt Handschuhe und sieht aus wie ein Einbrecher. Im Hintergrund sieht man eine Wohnungstür, vor der Jürgen kniet. Er hat einen Dietrich in der Hand und versucht gerade, dass Schloß zu knacken. Wir sehen Jürgens Rücken und er schaut zu uns über die Schulter. Seinem Blick zu urteilen, ist er überrascht weil wir ihn beim Einbrechen erwischt haben.","tags":["java","security"]},"fields":{"slug":"/talks/2020-11-25-secure_coding/","sourceName":"talks"}}},{"node":{"id":"3c969ad0-d843-57d0-92c4-91340d71851d","html":"<p>Web-Components sind eine Möglichkeit, auf Basis von Web-Standards wiederverwendbare UI-Komponenten zu bauen, die sich\nbrowserübergreifend und unabhängig von JavaScript-Frameworks einsetzen lassen. Im Vortrag möchte ich die relevanten\nWeb-Standards kurz vorstellen und im Live-Coding eine Web-Componente from Scratch bauen.</p>\n<p>Dabei möchte ich auch auf die Stärken und Schwächen von Web-Components eingehen und einige Erfahrungen teilen, die ich\nbei der Entwicklung einer firmeninternen Component-Library machen konnte.</p>\n<hr>\n<h2>Hinweis</h2>\n<p><strong>Dieser Vortrag findet Online statt.</strong> Dazu haben wir ein Jitsi-Meeting aufgesetzt:\n<a href=\"https://meet.digitale-oberlausitz.eu/jug\">https://meet.digitale-oberlausitz.eu/jug</a></p>","frontmatter":{"title":"Web Components","date":"2021-01-27T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":null,"virtual":true,"poster":{"childImageSharp":{"id":"9bba5bef-9d0e-50c8-b451-ffed64ad6bd4","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#981848","images":{"fallback":{"src":"/static/540abccd98049d14ae192d2ada3cbcc3/84817/plakat_2021_01.png","srcSet":"/static/540abccd98049d14ae192d2ada3cbcc3/b8e70/plakat_2021_01.png 750w,\n/static/540abccd98049d14ae192d2ada3cbcc3/e5839/plakat_2021_01.png 1080w,\n/static/540abccd98049d14ae192d2ada3cbcc3/f51d5/plakat_2021_01.png 1366w,\n/static/540abccd98049d14ae192d2ada3cbcc3/84817/plakat_2021_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/540abccd98049d14ae192d2ada3cbcc3/e5d6f/plakat_2021_01.webp 750w,\n/static/540abccd98049d14ae192d2ada3cbcc3/0671f/plakat_2021_01.webp 1080w,\n/static/540abccd98049d14ae192d2ada3cbcc3/7e884/plakat_2021_01.webp 1366w,\n/static/540abccd98049d14ae192d2ada3cbcc3/e2c0d/plakat_2021_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Wir sehen ein großes Spinnennetz, in dem Jürgen gefangen ist. Er hängt verkehrt herum im Netz und sieht ziemlich erschrocken aus.","tags":["web"]},"fields":{"slug":"/talks/2021-01-27-webcomponents/","sourceName":"talks"}}},{"node":{"id":"1249d4ab-1401-5936-92b8-3d6dee7f14bb","html":"<p>MicroStream ist ein fundamental neues Persistenz-Framework für die native Speicherung komplexer Java Objektgraphen.\nD.h., Objekte werden damit genau so persistent gespeichert, wie diese im Hauptspeicher von der JVM verwaltet werden.\nUmgekehrt lassen sich zu jeder Zeit einzelne Subgraphen in den RAM laden und der Objektgraph im Hauptspeicher wird\nautomatisch aktualisiert.</p>\n<p>Dadurch ergeben sich völlig neue Möglichkeiten: Objektgraphen lassen sich als In-Memory Datenbank verwenden. Ein\nObjektgraph ist dabei eine sehr mächtige Multi-Model Datenstruktur. Es lassen sich beliebige Java-Typen, Collections\nsowie Formate wie JSON verwenden und beliebig kombinieren. Passend dazu bietet Java die perfekte Abfragesprache. Mit\nJava Streams dauert das Durchsuchen selbst sehr großer und komplexer Objektgraphen nur Mikrosekunden - bis zu 1000 Mal\nschneller als vergleichbare SQL-Abfragen und sogar sehr viel schneller als das direkte Lesen von Abfrageergebnissen aus\neinem lokalen Cache. DB-spezifische Datenstrukturen oder Formate werden damit bedeutungslos für Java. Keine teuren\nMappings mehr. Keine Datentyp-Konvertierungen mehr. Keine DB-spezifischen Abfragesprachen. Nur noch ein Datenmodell:\nJava-Klassen (POJOs). Kein zusätzliches Caching-Framework mehr. Keine unkomfortablen Objektkopien mehr. Simple\nArchitektur und typsicherer Abfrage-Code. Reine Core-Java Features anstatt DB-spezifische Konzepte. Das Endresultat ist\neine ultraschnelle Java In-Memory Datenbankanwendung oder Microservice.</p>\n<p>MicroStream wird bereits seit über 5 Jahren in Unternehmensanwendung produktiv eingesetzt. Jetzt wird MicroStream Open\nSource und Teil der populären Microservice Frameworks Helidon und Open Liberty.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/Java-In-Memory-DB-Applications-with-MicroStream-JUG-Goerlitz_PDF.pdf\">Folien zum Vortrag</a></li>\n</ul>\n<hr>\n<h2>Hinweis</h2>\n<p><strong>Dieser Vortrag findet Online statt.</strong> Dazu haben wir ein Jitsi-Meeting aufgesetzt:\n<a href=\"https://meet.digitale-oberlausitz.eu/jug\">https://meet.digitale-oberlausitz.eu/jug</a></p>","frontmatter":{"title":"Ultraschnelle Java In-Memory Datenbank-Anwendungen & Microservices mit MicroStream","date":"2021-06-30T00:00:00.000Z","time":null,"speaker":["markus_kett","christian_kuemmel"],"location":null,"virtual":true,"poster":{"childImageSharp":{"id":"1567f34a-c228-511c-a368-2041cf79e3fa","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f85838","images":{"fallback":{"src":"/static/8f427a4552cb3ca64fe96511228f5a57/84817/plakat_2021_06.png","srcSet":"/static/8f427a4552cb3ca64fe96511228f5a57/b8e70/plakat_2021_06.png 750w,\n/static/8f427a4552cb3ca64fe96511228f5a57/e5839/plakat_2021_06.png 1080w,\n/static/8f427a4552cb3ca64fe96511228f5a57/f51d5/plakat_2021_06.png 1366w,\n/static/8f427a4552cb3ca64fe96511228f5a57/84817/plakat_2021_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/8f427a4552cb3ca64fe96511228f5a57/e5d6f/plakat_2021_06.webp 750w,\n/static/8f427a4552cb3ca64fe96511228f5a57/0671f/plakat_2021_06.webp 1080w,\n/static/8f427a4552cb3ca64fe96511228f5a57/7e884/plakat_2021_06.webp 1366w,\n/static/8f427a4552cb3ca64fe96511228f5a57/e2c0d/plakat_2021_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt am Tisch und überlegt. Er spielt Memory und hat gerade eine aufgedeckte Memory-Karte mit dem Java-Duke darauf in der Hand. Auf dem Tisch sind die anderen Karten zugedeckt, bis auf eine offene Karte. Auf dieser ist ein Datenbank-Symbol zu sehen.","tags":["database","java"]},"fields":{"slug":"/talks/2021-06-30-microstream/","sourceName":"talks"}}},{"node":{"id":"2e3945a5-7de9-5188-b447-47134c218967","html":"<p>Die Persistenz von IoT Daten sowie die Steuerung von IoT-Endgeräten benötigt im klassischen Verständnis eine\nServereinheit. Bei den Bastlern sind das oft on-premise Raspberry-Pi-Geräte oder gehostete Linux-Maschinen. Ihre\nkorrekte Konfiguration und anschließende Wartung kann Kopfzerbrechen bereiten. Es ist jedoch möglich, diese\nVerantwortung an den Cloud-Betreiber zu übertragen und eine entsprechende Infrastruktur zu schaffen. In der\nHands-On-Session wird gezeigt, wie man mit der Erstellung der gewünschten Infrastruktur in der AWS-Cloud beginnen kann.\nDazu wird ein Mikrocontroller vom Typ ESP als physisches IoT-Gerät verwendet.</p>\n<hr>\n<p>Hinweis: Bitte meldet euch zur <strong>Teilnahme über jug-gr(at)digitale-oberlausitz.eu</strong> an. Wir haben eine begrenzte Anzahl\nvon 25 Plätzen zur Verfügung, die nicht überschritten werden darf.</p>","frontmatter":{"title":"Hebe deine IoT-Infrastruktur auf das Serverless-Level an","date":"2022-06-22T00:00:00.000Z","time":null,"speaker":["pawel_adaszewski"],"location":"zeiss","virtual":null,"poster":{"childImageSharp":{"id":"fff1b9ff-e9ff-5fc3-ac26-c00c71f16bde","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8b838","images":{"fallback":{"src":"/static/16e022022a45fa9f5687edc16e865aec/84817/plakat_2022_06.png","srcSet":"/static/16e022022a45fa9f5687edc16e865aec/b8e70/plakat_2022_06.png 750w,\n/static/16e022022a45fa9f5687edc16e865aec/e5839/plakat_2022_06.png 1080w,\n/static/16e022022a45fa9f5687edc16e865aec/f51d5/plakat_2022_06.png 1366w,\n/static/16e022022a45fa9f5687edc16e865aec/84817/plakat_2022_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/16e022022a45fa9f5687edc16e865aec/e5d6f/plakat_2022_06.webp 750w,\n/static/16e022022a45fa9f5687edc16e865aec/0671f/plakat_2022_06.webp 1080w,\n/static/16e022022a45fa9f5687edc16e865aec/7e884/plakat_2022_06.webp 1366w,\n/static/16e022022a45fa9f5687edc16e865aec/e2c0d/plakat_2022_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen spielt eine Flöte. Hinter ihm sieht man einen Weg auf dem Jürgen gelaufen kommt. Hinter ihm ist ein Smartphone und eine Waschmaschine, jeweils mit Armen, Beinen und Gesicht. Die Gesichter der Geräte sehen aus wie paralysiert und sie halten ihre Arme wie Zombies nach Vorn. Sie folgen Jürgen, so als wäre er der Rattenfänger von Hameln.","tags":["cloud","iot","serverless","infrastructure"]},"fields":{"slug":"/talks/2022-06-22-iot-infrastruktur-serverless/","sourceName":"talks"}}},{"node":{"id":"2b8e8a71-59c4-53fb-baa2-5b6136f7efe8","html":"<p>Mit der <em>fischertechnik</em> Lernfabrik haben wir eine Fabrik im Kleinformat! Steuerung, Edge und Cloud in Einem!</p>\n<p><span\n class=\"gatsby-resp-image-wrapper\"\n style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 694px; \"\n >\n <a\n class=\"gatsby-resp-image-link\"\n href=\"/static/903efdec1e01931509b749db26582149/31198/lernfabrik.png\"\n style=\"display: block\"\n target=\"_blank\"\n rel=\"noopener\"\n >\n <span\n class=\"gatsby-resp-image-background-image\"\n style=\"padding-bottom: 147.5%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,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'); background-size: cover; display: block;\"\n ></span>\n <img\n class=\"gatsby-resp-image-image\"\n alt=\"Lernfabrik\"\n title=\"Lernfabrik\"\n src=\"/static/903efdec1e01931509b749db26582149/31198/lernfabrik.png\"\n srcset=\"/static/903efdec1e01931509b749db26582149/772e8/lernfabrik.png 200w,\n/static/903efdec1e01931509b749db26582149/e17e5/lernfabrik.png 400w,\n/static/903efdec1e01931509b749db26582149/31198/lernfabrik.png 694w\"\n sizes=\"(max-width: 694px) 100vw, 694px\"\n style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n loading=\"lazy\"\n decoding=\"async\"\n />\n </a>\n </span></p>\n<p>In diesem Vortrag lernen wir die Technologien und Möglichkeiten von Industrie 4.0 praktisch kennen. Wir nutzen das\nIndustrieprotokoll <em>OPC-UA</em> zur Maschinenkommunikation und Edge-Services um Fabrikdaten in die Cloud zu laden. Wir sehen\nuns die Services hinter einem Dashboard an und mit der Siemens <em>S7</em> Steuerung tunen wir unsere Fabrik.</p>\n<hr>\n<p>Hinweis: Bitte meldet euch zur <strong>Teilnahme über jug-gr(at)digitale-oberlausitz.eu</strong> an. Wir haben eine begrenzte Anzahl\nvon 25 Plätzen zur Verfügung, die nicht überschritten werden darf.</p>","frontmatter":{"title":"Industrie 4.0? Das JUGt mich!","date":"2022-10-12T00:00:00.000Z","time":null,"speaker":["marco_gotthans"],"location":"zeiss","virtual":null,"poster":{"childImageSharp":{"id":"1a0dbc74-dd80-5566-aa7d-5a4aac2ba518","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#28b898","images":{"fallback":{"src":"/static/f522849df2b2b8add5330999b1f5a484/84817/plakat_2022_10.png","srcSet":"/static/f522849df2b2b8add5330999b1f5a484/b8e70/plakat_2022_10.png 750w,\n/static/f522849df2b2b8add5330999b1f5a484/e5839/plakat_2022_10.png 1080w,\n/static/f522849df2b2b8add5330999b1f5a484/f51d5/plakat_2022_10.png 1366w,\n/static/f522849df2b2b8add5330999b1f5a484/84817/plakat_2022_10.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/f522849df2b2b8add5330999b1f5a484/e5d6f/plakat_2022_10.webp 750w,\n/static/f522849df2b2b8add5330999b1f5a484/0671f/plakat_2022_10.webp 1080w,\n/static/f522849df2b2b8add5330999b1f5a484/7e884/plakat_2022_10.webp 1366w,\n/static/f522849df2b2b8add5330999b1f5a484/e2c0d/plakat_2022_10.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und auf der Wolke ist ein Baukran zusehen.","tags":["cloud","iot","industrie4.0","infrastructure"]},"fields":{"slug":"/talks/2022-10-12-indistrie_4.0/","sourceName":"talks"}}},{"node":{"id":"a0820bff-9a0d-5989-b837-8f769fcc2ba6","html":"<p>Keycloak ist ein Open Source IAM (Identity and Access Management) System, das größtenteils in Java implementiert ist.<br>\nEs wird von vielen Unternehmen eingesetzt, um Authentifizierung und Authorisierung für verschiedenste Anwendungen\numzusetzen. Eine große Stärke von Keycloak ist die Konfigurierbarkeit und Erweiterbarkeit.<br>\nIm Vortrag wird ein Überblick über die Konfigurations- und Erweiterungsmöglichkeiten gegeben. In einer Live-Demo wird\ngezeigt, wie man diese Möglichkeiten nutzen kann, um ein kundenspezifisches IAM bereitzustellen.</p>","frontmatter":{"title":"Kundenspezifisches IAM mit Keycloak","date":"2022-11-30T00:00:00.000Z","time":null,"speaker":["daniel_fesenmeyer"],"location":"innolabs","virtual":null,"poster":{"childImageSharp":{"id":"0b48a461-1420-5309-b315-926387e3fc44","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/4313899aa2d31ed4b1e24d7d91e8c20a/84817/plakat_2022_11.png","srcSet":"/static/4313899aa2d31ed4b1e24d7d91e8c20a/b8e70/plakat_2022_11.png 750w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/e5839/plakat_2022_11.png 1080w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/f51d5/plakat_2022_11.png 1366w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/84817/plakat_2022_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/4313899aa2d31ed4b1e24d7d91e8c20a/e5d6f/plakat_2022_11.webp 750w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/0671f/plakat_2022_11.webp 1080w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/7e884/plakat_2022_11.webp 1366w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/e2c0d/plakat_2022_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten.","tags":["security"]},"fields":{"slug":"/talks/2022-11-30-iam-keycloak/","sourceName":"talks"}}},{"node":{"id":"5d96ee33-16f6-5b4c-aca8-557c4c24c14e","html":"<p>Die Mehrheit aktueller Content Management Systeme (CMS) verwaltet Inhalte auf vergleichbare Art wie Dateien in einem Windows-Netzwerkordner. Wie könnte dagegen ein CMS aussehen, wenn wir nochmal von Null starten und auf heutige Technologien wie Git, GraphQL und der Cloud aufbauen?\nIm Vortrag sehen wir uns die Architektur von Contentlab an, einem Git-basierten Open Source CMS, und erstellen live eine CMS Instanz zum Verwalten von Veranstaltungen.</p>","frontmatter":{"title":"Content Management neu gedacht mit Contentlab","date":"2023-01-25T00:00:00.000Z","time":null,"speaker":["markus_weiland"],"location":"cideon","virtual":null,"poster":{"childImageSharp":{"id":"86c1c8d2-94ea-5866-bbdb-3ac21398dcc3","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#9868a8","images":{"fallback":{"src":"/static/8f15082e67d772dd339121432ea649d9/84817/plakat_2023_01.png","srcSet":"/static/8f15082e67d772dd339121432ea649d9/b8e70/plakat_2023_01.png 750w,\n/static/8f15082e67d772dd339121432ea649d9/e5839/plakat_2023_01.png 1080w,\n/static/8f15082e67d772dd339121432ea649d9/f51d5/plakat_2023_01.png 1366w,\n/static/8f15082e67d772dd339121432ea649d9/84817/plakat_2023_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/8f15082e67d772dd339121432ea649d9/e5d6f/plakat_2023_01.webp 750w,\n/static/8f15082e67d772dd339121432ea649d9/0671f/plakat_2023_01.webp 1080w,\n/static/8f15082e67d772dd339121432ea649d9/7e884/plakat_2023_01.webp 1366w,\n/static/8f15082e67d772dd339121432ea649d9/e2c0d/plakat_2023_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt einen Laborkittel und eine Schutzbrille. In der Hand trägt er zwei Reagenzgläser. Scheinbar ist bei seinem Experiment etwas explodiert denn über Jürgen und den Gläsern ziehen Rauchschwaden auf, Jürgen ist komplett grau vom Explosionsstaub.","tags":["platform","web"]},"fields":{"slug":"/talks/2023-01-25-contentlab/","sourceName":"talks"}}},{"node":{"id":"8fa19a6d-7e84-5d43-a513-0644ddb362d6","html":"<p>Fehler sind ein fester Bestandteil unserer Arbeit. Die Suche und das Verstehen dieser nimmt viel Zeit in Anspruch. Die Fehlerbehebung ist häufig nur eine Zeile Code. Wie kann der Prozess des Suchens und Verstehens optimiert werden? Dies ist durch eine strategische Vorbereitung der Codebasis möglich.</p>\n<p>Hierfür stelle ich zwei Transformationen vor. Ziel der ersten Transformation: Beim Auftreten eines Fehlers erfolgt der sofortige Ausstieg aus dem Code mit einer aussagekräftigen Exception. Das ist sehr ähnlich zur Validierung. Auf Ähnlichkeiten und Unterschiede gehe ich im Detail ein. Ziel der zweiten Transformation: Trennung der Standard-Logik von den Sonderfällen. Dies verbessert die Lesbarkeit. Zusätzlich ergänzt es die erste Transformation.</p>\n<p>Anhand der vorgestellten Beispiele kannst du schon morgen deinen Code stabilisieren und deine eigenen Analysen effizienter durchführen. Außerdem gebe ich einen Ausblick darauf, wie du noch mehr aus diesem Konzept rausholen kannst.</p>","frontmatter":{"title":"Exception First – Stabilisiere deinen Code mit mehr Exceptions","date":"2023-02-22T00:00:00.000Z","time":null,"speaker":["sergej_tihonov"],"location":"zeiss","virtual":null,"poster":{"childImageSharp":{"id":"85b5c33a-1b3d-5625-8375-408b5c1f84bf","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e88838","images":{"fallback":{"src":"/static/69a227ac221f5d70680e1772e2b66652/84817/plakat_2023_02.png","srcSet":"/static/69a227ac221f5d70680e1772e2b66652/b8e70/plakat_2023_02.png 750w,\n/static/69a227ac221f5d70680e1772e2b66652/e5839/plakat_2023_02.png 1080w,\n/static/69a227ac221f5d70680e1772e2b66652/f51d5/plakat_2023_02.png 1366w,\n/static/69a227ac221f5d70680e1772e2b66652/84817/plakat_2023_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/69a227ac221f5d70680e1772e2b66652/e5d6f/plakat_2023_02.webp 750w,\n/static/69a227ac221f5d70680e1772e2b66652/0671f/plakat_2023_02.webp 1080w,\n/static/69a227ac221f5d70680e1772e2b66652/7e884/plakat_2023_02.webp 1366w,\n/static/69a227ac221f5d70680e1772e2b66652/e2c0d/plakat_2023_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert.","tags":["architektur"]},"fields":{"slug":"/talks/2023-02-22-exception_first/","sourceName":"talks"}}},{"node":{"id":"f5233192-6039-5c35-9957-b7023ed9e701","html":"<p>Die Architektur und das Design einer Applikation beeinflussen ihre Wartbarkeit, Testbarkeit und Qualität im Allgemeinen.\nSpring war schon immer ein vielseitiges Werkzeug, das Architekt:innen dabei unterstützt, Muster zu implementieren, mit\nHilfe derer technische Bausteine der Applikation mit Domänenkonzepten und -grenzen verknüpft werden können. Es erlaubt\nEntwickler:innen Anwendungen zu schreiben, die ihre architektonischen Ideen deutlich reflektieren und so ultimativ\nänder- und damit wartbarere Anwendungen zu schreiben. Schlüsselaspekte dahin gehend sind Codeorganisation, das\nSpring-Bean-Arrangement und die Nutzung von Domänen-Events, um fachlich individuelle Teile der Applikation voneinander\nzu entkoppeln. Der Vortrag diskutiert diese Muster und Ansätze und stellt Blibliotheken wie jMolecules und Moduliths\nvor, um zu zeigen, wie Spring-Entwickler in die Lage versetzt werden, besonders gut strukturierte und wartbare\nAnwendungen zu schreiben.</p>\n<hr>\n<p><strong>Hinweis</strong>: Wir treffen uns heute das erste mal im Fraunhofer-Institut IOSB. Hier wird vor allem im Bereich\nIT-Sicherheit für Kritische Infrastrukturen für Energie und Wasser geforscht und wir haben die Möglichkeit, eine kurze\nFührung durch das Institut zu bekommen. Deshalb treffen wir uns dieses Mal bereits 18:30 Uhr. Der reguläre Vortrag\nstartet wie gewohnt um 19:00 Uhr.</p>\n<p>Einen kurzen Einblick darüber, was wir in diesen Ersten Teil gesehen und gehört haben, könnt ihr auf der <a href=\"https://digitale-oberlausitz.eu/news/2023/fraunhoferbesuch_jug/\">Website der Digitalen Oberlausitz e. V.</a> nachlesen.</p>","frontmatter":{"title":"Spring für architekturinteressierte Entwickler:innen","date":"2023-03-29T00:00:00.000Z","time":"18:30","speaker":["oliver_drotbohm"],"location":"fraunhofer","virtual":null,"poster":{"childImageSharp":{"id":"ab1c70db-cea4-586b-be81-643ef56fc65a","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8a808","images":{"fallback":{"src":"/static/bd3df371bc1bfedf9acf732740ac6b34/84817/plakat_2023_03.png","srcSet":"/static/bd3df371bc1bfedf9acf732740ac6b34/b8e70/plakat_2023_03.png 750w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/e5839/plakat_2023_03.png 1080w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/f51d5/plakat_2023_03.png 1366w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/84817/plakat_2023_03.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/bd3df371bc1bfedf9acf732740ac6b34/e5d6f/plakat_2023_03.webp 750w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/0671f/plakat_2023_03.webp 1080w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/7e884/plakat_2023_03.webp 1366w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/e2c0d/plakat_2023_03.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgens Kopf ist auf einer Sprungfeder in einer Box, die wie ein Springteufel herausragt.","tags":["architektur","spring"]},"fields":{"slug":"/talks/2023-03-29-spring_fuer_architekturinteressierte_entwickler_innen/","sourceName":"talks"}}},{"node":{"id":"79b0298f-b45a-5707-a02c-37ea990349ee","html":"<p>Architektur und Code driften immer weiter auseinander? Die Umsetzung von nicht-funktionalen Anforderungen und Querschnittsaspekten wird häufig vergessen? Zu viel Spaghetti-Code durch zyklische Abhängigkeiten? Solche Dinge kommen leider viel zu häufig vor und führen schnell zu einer unwartbaren Codebasis.\nIm Java-Umfeld ist die Bibliothek ArchUnit eine mögliche Lösung für diese Situation. Wir schauen, wie wir mit ArchUnit unsere Architektur innerhalb von Unit-Tests testen können und endlich wieder Struktur ins System bekommen. Außerdem schauen wir uns darauf aufbauend jMolecules an, womit wir Architekturkonzepte direkt im Code abbilden können.</p>","frontmatter":{"title":"ArchUnit: Unit-Tests für deine Java-Architektur","date":"2023-04-26T00:00:00.000Z","time":null,"speaker":["roland_weisleder"],"location":"expleo","virtual":null,"poster":{"childImageSharp":{"id":"197c670b-992f-54d0-9a49-0aac78c4b5e4","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#58a848","images":{"fallback":{"src":"/static/3783aca0b180d59828528ae2e9f37788/84817/plakat_2023_04.png","srcSet":"/static/3783aca0b180d59828528ae2e9f37788/b8e70/plakat_2023_04.png 750w,\n/static/3783aca0b180d59828528ae2e9f37788/e5839/plakat_2023_04.png 1080w,\n/static/3783aca0b180d59828528ae2e9f37788/f51d5/plakat_2023_04.png 1366w,\n/static/3783aca0b180d59828528ae2e9f37788/84817/plakat_2023_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/3783aca0b180d59828528ae2e9f37788/e5d6f/plakat_2023_04.webp 750w,\n/static/3783aca0b180d59828528ae2e9f37788/0671f/plakat_2023_04.webp 1080w,\n/static/3783aca0b180d59828528ae2e9f37788/7e884/plakat_2023_04.webp 1366w,\n/static/3783aca0b180d59828528ae2e9f37788/e2c0d/plakat_2023_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgens trägt ein grünes Cape und einen Hut mit einer Feder. Er sieht aus wie Robin Hood. In den Händen hat er Pfeil und Bogen parat, am Rücken trägt er einen Köcher mit weiteren Pfeilen.","tags":["architektur","testen"]},"fields":{"slug":"/talks/2023-04-26-archunit_unit_tests_java_architektur/","sourceName":"talks"}}},{"node":{"id":"d1758688-b708-5de7-8e59-5646800cc19a","html":"<p>Dániel Sulyok von der Tallence AG stellt seine Arbeit im Rahmen des Themas <em>Accessibility</em> (Barrierefreiheit) vor. Das Team wurde beauftragt mit der Umsetzung des Redesigns und technischem Neubau der Webanwendung \"Account Manager\" mit einem besonderen Fokus auf Barrierefreiheit. In enger Abstimmung zwischen Design, Entwicklung und Endnutzern wurden entwicklungsbegleitende UX-Tests durchgeführt und iterativ die Zugänglichkeit und Bedienbarkeit der Anwendung verbessert.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_a11y.pdf\">Folien zum Vortrag</a></li>\n</ul>","frontmatter":{"title":"Accessibility in the Wild","date":"2023-05-31T00:00:00.000Z","time":null,"speaker":["daniel_sulyok"],"location":"tallence","virtual":null,"poster":{"childImageSharp":{"id":"2289c524-859b-5899-a8d7-b9ae17afcad5","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e85888","images":{"fallback":{"src":"/static/4d37935c5d380cb8d64e34d12cbd80d2/84817/plakat_2023_05.png","srcSet":"/static/4d37935c5d380cb8d64e34d12cbd80d2/b8e70/plakat_2023_05.png 750w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/e5839/plakat_2023_05.png 1080w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/f51d5/plakat_2023_05.png 1366w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/84817/plakat_2023_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/4d37935c5d380cb8d64e34d12cbd80d2/e5d6f/plakat_2023_05.webp 750w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/0671f/plakat_2023_05.webp 1080w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/7e884/plakat_2023_05.webp 1366w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/e2c0d/plakat_2023_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hat einen Baseballschläger in den Händen und zerstört damit eine Verkehrsbake.","tags":["java","a11y"]},"fields":{"slug":"/talks/2023-05-31-accessibility_in_the_wild/","sourceName":"talks"}}},{"node":{"id":"8a2e331b-0f3c-52b6-823e-852ecfff1ba4","html":"<p>Die GraalVM ist eine Virtuelle Maschine (VM) für Anwendungen, die in JavaScript, Python, Ruby, R oder mit den JVM-basierten Programmiersprachen Java, Scala, Kotlin, Clojure und LLVM-basierten Sprachen C/C++ geschrieben wurden. Am 13. Juni 2023 wurde die GraalVM 23 freigegeben, mit Performanceverbesserungen und Native-Image-Optimierungen, sowie polyglotter Unterstützung für verschiedene Programmiersprachen, zur Interoperabilität in einer gemeinsamen Laufzeitumgebung. GraalVM kann eigenständig oder im Kontext von OpenJDK, Node.js und Datenbanken betrieben werden. Mit GraalVM‘s Ahead-of-Time-Fähigkeit kompilierte Native Images verfügen über eine optimierte Startup-Time und sie verringern den Memory-Verbrauch von JVM-basierten Applikationen. Die GraalVM kann wahlweise als Open-Source-Community-Edition (CE) oder als optimierte Oracle GraalVM mit GFTC-Lizenz “GraalVM Free Terms and Conditions (GFTC) including License for Early Adopter Versions” verwendet werden. Im Vortrag wird die GraalVM-Architektur im Java-Ökosystem dargestellt und die Einsatzgebiete erläutert, beispielsweise der in Java entwickelte C2-JIT-Compiler und die Verwendung von GraalVM Native Images. GraalVM kann für Spring Boot und Microservices-Frameworks verwendet werden.</p>","frontmatter":{"title":"GraalVM 23 – Konzepte und Features","date":"2023-06-28T00:00:00.000Z","time":null,"speaker":["wolfgang_weigend"],"location":"zeiss","virtual":null,"poster":{"childImageSharp":{"id":"61b0d0a8-fa3a-58b5-b6f0-eef9f3716b60","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#b878a8","images":{"fallback":{"src":"/static/d62e1742243833e9e67ff3a5e8ba41e0/84817/plakat_2023_06.png","srcSet":"/static/d62e1742243833e9e67ff3a5e8ba41e0/b8e70/plakat_2023_06.png 750w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/e5839/plakat_2023_06.png 1080w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/f51d5/plakat_2023_06.png 1366w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/84817/plakat_2023_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/d62e1742243833e9e67ff3a5e8ba41e0/e5d6f/plakat_2023_06.webp 750w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/0671f/plakat_2023_06.webp 1080w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/7e884/plakat_2023_06.webp 1366w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/e2c0d/plakat_2023_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hat ein Prisma in der Hand aus dem ein regenbogenfarbener Lichtstrahl ausdringt. Er schaut erstaunt auf das Prisma.","tags":["java","jdk","graalvm"]},"fields":{"slug":"/talks/2023-06-28-graalvm_23/","sourceName":"talks"}}},{"node":{"id":"4f2a426a-5b98-5f61-8750-46aac0c6c9f3","html":"<p>Erkunden Sie das aufregende Feature von Java 21: Virtuelle Threads. Diese neue Ergänzung revolutioniert die Art und\nWeise, wie Threads in Java verwaltet werden. Erfahren Sie, wie virtuelle Threads eine leichtgewichtige und effiziente\nAlternative zu herkömmlichen Threads bieten und die Leistung Ihrer Anwendungen verbessern können. Dieser Vortrag bietet\nEinblicke in virtuelle Threads und zeigt praktische Anwendungsbeispiele für deren Einsatz in Java 21. Entwickler aller\nErfahrungsstufen sind herzlich willkommen, sich dieser spannenden Diskussion anzuschließen.</p>","frontmatter":{"title":"Java 21: Virtuelle Threads","date":"2023-09-27T00:00:00.000Z","time":null,"speaker":["patryk_lewandowski"],"location":"zeiss","virtual":null,"poster":{"childImageSharp":{"id":"c6ed33d8-5c5c-5ba5-bf35-c5d30ff717b8","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#289898","images":{"fallback":{"src":"/static/7809ea1a362146b531abece65510447f/84817/plakat_2023_09.png","srcSet":"/static/7809ea1a362146b531abece65510447f/b8e70/plakat_2023_09.png 750w,\n/static/7809ea1a362146b531abece65510447f/e5839/plakat_2023_09.png 1080w,\n/static/7809ea1a362146b531abece65510447f/f51d5/plakat_2023_09.png 1366w,\n/static/7809ea1a362146b531abece65510447f/84817/plakat_2023_09.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/7809ea1a362146b531abece65510447f/e5d6f/plakat_2023_09.webp 750w,\n/static/7809ea1a362146b531abece65510447f/0671f/plakat_2023_09.webp 1080w,\n/static/7809ea1a362146b531abece65510447f/7e884/plakat_2023_09.webp 1366w,\n/static/7809ea1a362146b531abece65510447f/e2c0d/plakat_2023_09.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hat sich in einem virtuellen Faden verheddert und schaut etwas verzweifelt.","tags":["java","performance"]},"fields":{"slug":"/talks/2023-09-27-virtual-threads/","sourceName":"talks"}}},{"node":{"id":"34d30efa-4f03-53e5-8043-fa73d75cbd58","html":"<p>Heutzutage gibt es viele Möglichkeiten, um Cloud-Infrastrukturen aufzubauen. Dazu gehören die Containerisierung, die manuelle Erstellung von Ressourcen (auch bekannt als Click-Ops) und die populären deklarativen YAML-Definitionen. Jede dieser Lösungen hat ihre Vorteile. Allerdings haben sie auch Limitierungen, die bei der Entwicklung von Produktionssoftware vermieden werden sollten.</p>\n<p>Einige Lösungen bieten einen einfachen Einstieg, dafür muss mangelnde Skalierbarkeit und Replizierbarkeit in Kauf genommen werden. Andere bieten zwar Skalierbarkeit, können aber nicht modularisiert werden, was den Aufbau und die Wartung großer Infrastrukturen erschwert.</p>\n<p>Das AWS CDK Framework löst diese Probleme und ermöglicht die Erstellung von Ressourcen mit bekannten Programmiersprachen wie Java. Mit dessen Hilfe wird vorgestellt, wie die Entwicklung von Cloud-Infrastrukturen auf ein höheres Level gebracht werden kann. Der Vortrag wird aus der Sicht eines Anfängers, der in der neuen Technologie die Lösung für alle Probleme der Welt sieht, und aus der Sicht eines erfahrenen Anwenders, der täglich mit dem Framework arbeitet und sich an seine Anfänge im Jahr 2019 erinnert, präsentiert.</p>\n<p>Durch die Kombination dieser beiden Perspektiven wird nicht nur veranschaulicht, wie einfach der Einstieg in diese Art von Technologie ist, sondern es werden auch praktische Erfahrungen weitergegeben. Auch mögliche Probleme und deren Lösungen werden angesprochen.\nIm Live Coding wird vorgeführt, wie das AWS CDK Framework für den Aufbau, die Skalierung und Modularisierung von Serverless AWS Infrastrukturen verwendet werden kann.</p>","frontmatter":{"title":"AWS-Infrastruktur mit Java erstellen - CDK in Action","date":"2023-10-25T00:00:00.000Z","time":null,"speaker":["pawel_adaszewski","damian_dudziec"],"location":"zeiss","virtual":null,"poster":{"childImageSharp":{"id":"322b1b28-3c01-54d5-88d6-d64abf4078e4","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d89878","images":{"fallback":{"src":"/static/434d9c3e2846cfe979a57d975235808c/84817/plakat_2023_10.png","srcSet":"/static/434d9c3e2846cfe979a57d975235808c/b8e70/plakat_2023_10.png 750w,\n/static/434d9c3e2846cfe979a57d975235808c/e5839/plakat_2023_10.png 1080w,\n/static/434d9c3e2846cfe979a57d975235808c/f51d5/plakat_2023_10.png 1366w,\n/static/434d9c3e2846cfe979a57d975235808c/84817/plakat_2023_10.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/434d9c3e2846cfe979a57d975235808c/e5d6f/plakat_2023_10.webp 750w,\n/static/434d9c3e2846cfe979a57d975235808c/0671f/plakat_2023_10.webp 1080w,\n/static/434d9c3e2846cfe979a57d975235808c/7e884/plakat_2023_10.webp 1366w,\n/static/434d9c3e2846cfe979a57d975235808c/e2c0d/plakat_2023_10.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und grinst verschmitzt Auf der Wolke ist ein Baukran zu sehen. Am Baukran hängt eine kleine Wolke und zusätzlich fliegen noch Wolken umher.","tags":["java","cloud"]},"fields":{"slug":"/talks/2023-10-25-aws_cdk_in_action/","sourceName":"talks"}}},{"node":{"id":"e583793f-bcc5-5f78-8931-3357be0f0ba5","html":"<p>In einer Welt, in der Microservices mehr und mehr zu einer Standardarchitektur für Java-basierte Anwendungen in der\nCloud werden, kann die JVM-Aufwärmzeit zu einer Einschränkung werden.</p>\n<p>Vor allem wenn es darum geht, als Reaktion auf Laständerungen neue Instanzen einer Anwendung aufzusetzen, kann die\nAufwärmzeit ein Problem darstellen. Native Images sind eine Möglichkeit, diese Probleme zu lösen, da ihr statisch im\nVoraus kompilierter Code keine Aufwärmzeit benötigt und somit eine kurze Startzeit hat. Aber selbst die kürzere\nStartzeit und der geringere Platzbedarf sind nicht ohne Nachteil. Die Gesamtleistung kann aufgrund der fehlenden\nJIT-Optimierungen zur Laufzeit langsamer sein. Es gibt ein neues OpenJDK-Projekt namens CRaC (Coordinated Restore at\nCheckpoint), dessen Ziel es ist, das JVM-Aufwärmproblem mit einem anderen Ansatz anzugehen. Die Idee ist, einen\nSchnappschuss der laufenden JVM zu machen, diesen in Dateien zu speichern und die JVM zu einem späteren Zeitpunkt (oder\nsogar auf einer anderen Maschine) wiederherzustellen.</p>\n<p>Dieser Vortrag gibt Ihnen einen kurzen Überblick über das CRaC-Projekt und zeigt einige Ergebnisse einer\nProof-of-Concept-Implementierung.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_What_The_CRaC.pdf\">Folien zum Vortrag</a></li>\n</ul>","frontmatter":{"title":"What the CRaC - Superfast JVM startup","date":"2023-11-29T00:00:00.000Z","time":null,"speaker":["gerrit_grunwald"],"location":"zeiss","virtual":null,"poster":{"childImageSharp":{"id":"83946b5b-e38c-5b7d-ac9b-81ea660c5ee7","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e85848","images":{"fallback":{"src":"/static/44456e47b4e2d92792552c2d411e2518/84817/plakat_2023_11.png","srcSet":"/static/44456e47b4e2d92792552c2d411e2518/b8e70/plakat_2023_11.png 750w,\n/static/44456e47b4e2d92792552c2d411e2518/e5839/plakat_2023_11.png 1080w,\n/static/44456e47b4e2d92792552c2d411e2518/f51d5/plakat_2023_11.png 1366w,\n/static/44456e47b4e2d92792552c2d411e2518/84817/plakat_2023_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/44456e47b4e2d92792552c2d411e2518/e5d6f/plakat_2023_11.webp 750w,\n/static/44456e47b4e2d92792552c2d411e2518/0671f/plakat_2023_11.webp 1080w,\n/static/44456e47b4e2d92792552c2d411e2518/7e884/plakat_2023_11.webp 1366w,\n/static/44456e47b4e2d92792552c2d411e2518/e2c0d/plakat_2023_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen ist auf einem Fahrrad und hat einen alten Helm mit Fliegerbrille auf. Man sieht, dass er ziemlich schnell fährt.","tags":["java","performance","jdk"]},"fields":{"slug":"/talks/2023-11-29-crac/","sourceName":"talks"}}},{"node":{"id":"cafdb0d7-7218-5608-bd6f-c033864617fe","html":"<p>Wenn sich Google einem Thema widmet, dann meist richtig und mit vollem Einsatz. Genau das sieht man beim Thema Cross-Plattform: Google entwickelte Flutter, ein UI Framework, mit dem Native Apps für Mobile, Web, Desktop und Embedded mit einer einzigen Codebase in sehr kurzer Zeit entwickelt werden können.\nWas Flutter so einzigartig macht und warum wir es bei inovex bereits produktiv für Apps einsetzen, zeige ich dir in diesem Talk.\nAnhand verschiedener Beispiele und Live-Codings siehst du, warum uns Flutter so überzeugt hat. Damit sind wir nicht alleine - Toyota verwendet Flutter bereits für ihre neuen Infotainment Systems und viele weitere namhafte Firmen wie Microsoft, Canonical und BMW setzen ebenfalls auf das Framework.\nLass dich in Flutters Welt der Cross-Plattform entführen und davon begeistern!</p>","frontmatter":{"title":"Flutter, der heilige Gral der Cross-Plattform-Entwicklung?!","date":"2024-01-31T00:00:00.000Z","time":null,"speaker":["christoph_menzel"],"location":"hochschule_campus","virtual":null,"poster":null,"poster_alt":null,"tags":["mobile","frontend","non-jvm-language"]},"fields":{"slug":"/talks/2024-01-31-flutter/","sourceName":"talks"}}},{"node":{"id":"fafd1d08-20ad-5b94-8837-fc066b152f0d","html":"<p>Mit Architekturbewertungen ist es möglich, Schwächen und Potenziale von Softwarelösungen herauszuarbeiten, Entscheidungen abzusichern und Verbesserungsmaßnahmen zu bewerten. Klassische Analyseansätze aus diesem Umfeld wie ATAM sind fundiert, kommen aber gerade in beweglichen Softwarevorhaben etwas schwergewichtig, mitunter fast zeremoniell daher.\nIn diesem Vortrag mit interaktiven Elementen gebe ich einen lebendigen Einstieg in die Welt der Architekturbewertung. Vor allem lernt Ihr eine leichtgewichtige Herangehensweise kennen. Ihr könnt diese mit Eurem Team unmittelbar anwenden, Euer Softwaresystem beleuchten und zügig zu ersten Erkenntnissen kommen. Wir greifen auf die Essenzen etablierter Bewertungsmethoden zurück. Und erarbeiten uns einen roten Faden durch ein Review, inkl. möglicher Vertiefungspunkte für eine höhere Konfidenz im Bewertungsergebnis.</p>","frontmatter":{"title":"Schlanke Architektur-Reviews","date":"2024-02-28T00:00:00.000Z","time":null,"speaker":["stefan_zoerner_2"],"location":null,"virtual":null,"poster":null,"poster_alt":null,"tags":["architektur"]},"fields":{"slug":"/talks/2024-02-28-architektur-reviews/","sourceName":"talks"}}},{"node":{"id":"97f4123c-3293-532b-8ea6-6b81b355fd92","html":"<p>Rust ist eine relativ neue Programmiersprache, die vor allem als Systems-Level Programmiersprache und damit als Alternative zu C und C++\nentwickelt wurde. Der Fokus der Sprache liegt auf Speichersicherheit und der Vermeidung von Bugs, unter anderem auf Grund solcher Speicherfehler.</p>\n<p>Speichersicherheit ist bei Java kein so großes Thema wie bei C/C++, trotzdem gibt es einige Dinge in Rust, die auch für Java-Entwickler*innen\ninteressant sein könnten, um den eigenen Horizont zu erweitern. Denn genau wie Java hat auch Rust in gewisser Weise ein automatisches Speichermanagement,\njedoch ohne eine Virtuelle Maschine und ohne Garbage-Collector.\nUnd mittlerweile wird Rust auch immer häufiger außerhalb von klassischen C-Anwendungsgebieten wie Systemprogrammierung eingesetzt.\nRust kommt zur Entwicklung von Command-Line-Tools, Desktop-Applikationen, Server-Anwendungen und in der Cloud zum Einsatz.\nUnd mittels Web-Assembly lässt sich Rust sogar in Browsern ausführen.</p>\n<p>Dieser Vortrag ist der <strong>erste von zwei Teilen</strong> einer kleinen Rust-Vortragsreihe.</p>\n<ul>\n<li>In diesem Teil wird ein Einstieg in die Programmiersprache gegeben und die wesentlichen Konzepte - auch im Vergleich zu Java - beleuchtet.</li>\n<li>Im <a href=\"/talks/2024-04-24-rust2\">nächsten Teil</a> wird dann stärker auf den konkreten Einsatz der Sprache in Projekten und existierende Bibliotheken und Frameworks eingegangen.</li>\n</ul>","frontmatter":{"title":"Rust (Teil 1): Einführung in die Sprache","date":"2024-03-20T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":null,"virtual":null,"poster":null,"poster_alt":null,"tags":["programmiersprachen","performance","functional-programming","non-jvm-language","security"]},"fields":{"slug":"/talks/2024-03-20-rust/","sourceName":"talks"}}},{"node":{"id":"56c1a59c-f16a-5f43-aa33-412cf06ee342","html":"<p>Infos demnächst.</p>\n<p>Dieser Vortrag ist der <strong>zweite von zwei Teilen</strong> einer kleinen Rust-Vortragsreihe.</p>\n<ul>\n<li>Im <a href=\"/talks/2024-03-20-rust\">ersten Teil</a> wurde ein Einstieg in die Programmiersprache gegeben und die wesentlichen Konzepte - auch im Vergleich zu Java - beleuchtet.</li>\n<li>In diesem Teil wird stärker auf den konkreten Einsatz der Sprache in Projekten und existierende Bibliotheken und Frameworks eingegangen.</li>\n</ul>","frontmatter":{"title":"Rust (Teil 2)","date":"2024-04-24T00:00:00.000Z","time":null,"speaker":["konstantin_eger"],"location":null,"virtual":null,"poster":null,"poster_alt":null,"tags":["programmiersprachen","performance","functional-programming","non-jvm-language","security"]},"fields":{"slug":"/talks/2024-04-24-rust2/","sourceName":"talks"}}}]},"posts":{"edges":[]},"speakers":{"edges":[{"node":{"id":"ff0ef063-2c62-5f5c-8e8a-3fea00727337","html":"","frontmatter":{"name":"Alexander Casall","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/alexander_casall/","speakerId":"alexander_casall"}}},{"node":{"id":"2fce745c-9aae-524d-a24b-d39e282689b0","html":"","frontmatter":{"name":"Andre Tepper","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/andre_tepper/","speakerId":"andre_tepper"}}},{"node":{"id":"83212ced-9134-55d1-bd90-46f149e95898","html":"","frontmatter":{"name":"Bruno Devic","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/bruno_devic/","speakerId":"bruno_devic"}}},{"node":{"id":"02a5cfde-2b00-5350-a999-f314d4c0ee1e","html":"<p>Christian beschäftigt sich seit über 10 Jahren mit Java und ist seit über 7 Jahren Java-Trainer. Als Projektleiter und\nSoftware-Architekt konzipiert und implementiert er seit 10 Jahren komplexe Software-Systeme für Kunden aus\nunterschiedlichsten Branchen. Als Scrum Master ist er maßgeblich an der Entwicklung der freien Eclipse Distribution und\nvisuellen Java Entwicklungsumgebung RapidClipse.com sowie der Open Source Abfragesprache JPA-SQL beteiligt. Zudem ist\nChristian als Speaker bei zahlreichen Entwicklerkonferenzen bekannt.</p>","frontmatter":{"name":"Christian Kümmel","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#c8c8c8","images":{"fallback":{"src":"/static/663d1d267755d1addb5f7399c798dd28/9652e/christian_kuemmel.jpg","srcSet":"/static/663d1d267755d1addb5f7399c798dd28/1728b/christian_kuemmel.jpg 750w,\n/static/663d1d267755d1addb5f7399c798dd28/ab791/christian_kuemmel.jpg 1080w,\n/static/663d1d267755d1addb5f7399c798dd28/0955b/christian_kuemmel.jpg 1366w,\n/static/663d1d267755d1addb5f7399c798dd28/9652e/christian_kuemmel.jpg 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/663d1d267755d1addb5f7399c798dd28/d6c6a/christian_kuemmel.webp 750w,\n/static/663d1d267755d1addb5f7399c798dd28/ffa03/christian_kuemmel.webp 1080w,\n/static/663d1d267755d1addb5f7399c798dd28/af66e/christian_kuemmel.webp 1366w,\n/static/663d1d267755d1addb5f7399c798dd28/eb0ac/christian_kuemmel.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.0177083333333334}}},"twitter_name":null},"fields":{"slug":"/speakers/christian_kuemmel/","speakerId":"christian_kuemmel"}}},{"node":{"id":"78a4398b-6839-50d3-8f1e-5262def696d6","html":"<p><strong>Christoph Menzel</strong> ist Software-Entwickler mit Leib und Seele und seit 2022 als Head of Mobile & Web Development Teil des inovex Teams. Clean Code und Testautomatisierung sind für ihn zwei fundamentale Bestandteile guter Software-Entwicklung.\nEr unterstützt seine Kunden bei der Optimierung von Entwicklungsprozessen, hält Workshops zu Themen wie Unit Tests, Clean Code oder Continuous Integration & Delivery und gibt sein Wissen aktiv auf Konferenzen, Barcamps oder in Fachartikeln weiter.</p>","frontmatter":{"name":"Christoph Menzel","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/4a93039fc8abcf424a9e4aae04665797/13677/christoph_menzel.png","srcSet":"/static/4a93039fc8abcf424a9e4aae04665797/f054e/christoph_menzel.png 750w,\n/static/4a93039fc8abcf424a9e4aae04665797/13677/christoph_menzel.png 1000w","sizes":"100vw"},"sources":[{"srcSet":"/static/4a93039fc8abcf424a9e4aae04665797/4f03f/christoph_menzel.webp 750w,\n/static/4a93039fc8abcf424a9e4aae04665797/3cd29/christoph_menzel.webp 1000w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":null},"fields":{"slug":"/speakers/christoph_menzel/","speakerId":"christoph_menzel"}}},{"node":{"id":"7640e853-d184-5946-a052-be3b7deaa867","html":"<p>Damian ist Softwareentwickler bei der Carl Zeiss Digital Innovation GmbH in Görlitz. In den letzten Jahren war er für die Wartung und Weiterentwicklung einer großen Java-Enterprise-Anwendung im Bereich Logistik verantwortlich. Aktuell beschäftigt er sich mit Serverless, automatisierter Infrastrukturbereitstellung und ist ein begeisterter Wanderer durch die AWS-Landschaft geworden, der jeden Tag etwas Neues entdeckt.</p>","frontmatter":{"name":"Damian Dudziec","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#383838","images":{"fallback":{"src":"/static/5640e558ae686329d65703c5e957bb07/1f67d/damian_dudziec.jpg","srcSet":"/static/5640e558ae686329d65703c5e957bb07/74e81/damian_dudziec.jpg 750w,\n/static/5640e558ae686329d65703c5e957bb07/c4291/damian_dudziec.jpg 1080w,\n/static/5640e558ae686329d65703c5e957bb07/80c2b/damian_dudziec.jpg 1366w,\n/static/5640e558ae686329d65703c5e957bb07/1f67d/damian_dudziec.jpg 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/5640e558ae686329d65703c5e957bb07/77dd0/damian_dudziec.webp 750w,\n/static/5640e558ae686329d65703c5e957bb07/847ea/damian_dudziec.webp 1080w,\n/static/5640e558ae686329d65703c5e957bb07/c5bbd/damian_dudziec.webp 1366w,\n/static/5640e558ae686329d65703c5e957bb07/70a54/damian_dudziec.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4890625000000002}}},"twitter_name":null},"fields":{"slug":"/speakers/damian_dudziec/","speakerId":"damian_dudziec"}}},{"node":{"id":"2adfcaf8-baac-58d8-ac17-2e9e978bea1b","html":"<p><strong>Daniel Fesenmeyer</strong> arbeitet als Software Entwickler bei Bosch IO (Berlin). Seine Schwerpunkte sind Backend-Entwicklung, Testing und\nIAM. Derzeit besteht seine Haupttätigkeit darin, Keycloak-Erweiterungen und -Bugfixes zu implementieren, sowohl in\nKundenprojekten als auch in der Open Source Community.</p>","frontmatter":{"name":"Daniel Fesenmeyer","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#484848","images":{"fallback":{"src":"/static/ff8a246288f95ed463003fb141d5e735/f39ed/daniel_fesenmeyer.jpg","srcSet":"/static/ff8a246288f95ed463003fb141d5e735/53ca3/daniel_fesenmeyer.jpg 750w,\n/static/ff8a246288f95ed463003fb141d5e735/f39ed/daniel_fesenmeyer.jpg 1006w","sizes":"100vw"},"sources":[{"srcSet":"/static/ff8a246288f95ed463003fb141d5e735/4512e/daniel_fesenmeyer.webp 750w,\n/static/ff8a246288f95ed463003fb141d5e735/36031/daniel_fesenmeyer.webp 1006w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.18389662027833}}},"twitter_name":"fesicraft"},"fields":{"slug":"/speakers/daniel_fesenmeyer/","speakerId":"daniel_fesenmeyer"}}},{"node":{"id":"2c287f6d-72f9-5142-8d7e-8cb0049f7898","html":"<ul>\n<li>2008 -2011 bei der SQS AG als Softwaretester, Projektkoordinator, Testmanager in den Branchen Telekommunikation,\nBanken, öffentlicher Dienst</li>\n<li>Seit 2011 Trainer für ISTQB Foundation und Advanced Level</li>\n<li>Seit 2011 als Dozent an der FH Görlitz (Grundlagen des Softwaretestens)</li>\n<li>Seit 2011 Junior Operation Manager mit Themenschwerpunkte: Mitarbeiterführung, Aus- und Weiterbildung,\nMitarbeitergewinnung, Öffentlichkeitsarbeit</li>\n</ul>","frontmatter":{"name":"Daniel Sernow","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/daniel_sernow/","speakerId":"daniel_sernow"}}},{"node":{"id":"e86d9d23-67e9-58de-853e-30051fb1eabb","html":"<p><strong>Dániel Sulyok</strong> ist Software Developer bei Tallence. Am Standort Görlitz entwickelt er Anwendungen in Fullstack mit einem strengen Blick auf Usability und Accessibility.</p>","frontmatter":{"name":"Dániel Sulyok","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#181818","images":{"fallback":{"src":"/static/50081822309e984340e546ad54f158db/f2005/daniel_sulyok.jpg","srcSet":"/static/50081822309e984340e546ad54f158db/53c59/daniel_sulyok.jpg 750w,\n/static/50081822309e984340e546ad54f158db/64b93/daniel_sulyok.jpg 1080w,\n/static/50081822309e984340e546ad54f158db/2baac/daniel_sulyok.jpg 1366w,\n/static/50081822309e984340e546ad54f158db/f2005/daniel_sulyok.jpg 1778w","sizes":"100vw"},"sources":[{"srcSet":"/static/50081822309e984340e546ad54f158db/3970f/daniel_sulyok.webp 750w,\n/static/50081822309e984340e546ad54f158db/90a5d/daniel_sulyok.webp 1080w,\n/static/50081822309e984340e546ad54f158db/1e947/daniel_sulyok.webp 1366w,\n/static/50081822309e984340e546ad54f158db/8afd9/daniel_sulyok.webp 1778w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":0.6659167604049494}}},"twitter_name":null},"fields":{"slug":"/speakers/daniel_sulyok/","speakerId":"daniel_sulyok"}}},{"node":{"id":"770e92e8-4326-5909-ace2-ddfcc7deae8b","html":"<p>Denny arbeitet als Softwareentwickler bei der Ottogroup Solution Provider (OSP) GmbH, derzeit mit den Schwerpunkten\nSecurity und DevOps. Seit ca. 8 Jahren entwickelt er im Team Softwarelösungen in den verschiedensten Branchen und\nThemen. Immer mit Fokus auf agile Vorgehensweise und pragmatische Problemlösung.</p>","frontmatter":{"name":"Denny Israel","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#181818","images":{"fallback":{"src":"/static/5d26c2337d3979921b663ac24f9c75b4/18869/denny.israel.jpg","srcSet":"/static/5d26c2337d3979921b663ac24f9c75b4/18869/denny.israel.jpg 400w","sizes":"100vw"},"sources":[{"srcSet":"/static/5d26c2337d3979921b663ac24f9c75b4/3d164/denny.israel.webp 400w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.5}}},"twitter_name":"sideisra"},"fields":{"slug":"/speakers/denny_israel/","speakerId":"denny_israel"}}},{"node":{"id":"074397e2-c590-59cc-8c29-413f81c9e045","html":"<p>Erik Jähne hat von 2010 bis 2015 an der HS Zittau/Görlitz Bachelor und Master Informatik studiert. Seit 2015 ist er bei\nder Quanteo GmbH in Görlitz für Daimler tätig. Dort unter anderem im Lastest und PoC Bereich und als letztes an der\nEntwicklung der Testumgebung für die Sprachsteuerung der neuen Mercedes Fahrzeuge beteiligt.</p>","frontmatter":{"name":"Erik Jähne","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/erik_jaehne/","speakerId":"erik_jaehne"}}},{"node":{"id":"f13237e6-5775-5e35-bc7e-7ab125cff716","html":"<p>Gerrit Grunwald ist ein Softwareentwickler, der schon seit 40 Jahren gerne programmiert. Er ist ein echter Anhänger von\nOpen Source und hat sowohl an populären Projekten wie <a href=\"https://jfxtras.org/\">JFXtras.org</a> als auch an seinen eigenen\nProjekten (TilesFX, Medusa, Enzo, SteelSeries Swing, SteelSeries Canvas, JDKMon) mitgewirkt.</p>\n<p>Gerrit bloggt regelmäßig auf <a href=\"http://harmonic-code.org/\">http://harmonic-code.org</a>, er ist ein aktives Mitglied der\nJava-Community, in der er die Java User Group Münster gegründet hat und leitet, er ist ein JavaOne Rockstar und ein Java\nChampion. Er ist Sprecher auf internationalen Konferenzen und User Groups und schreibt für verschiedene Magazine.</p>","frontmatter":{"name":"Gerrit Grunwald","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#080808","images":{"fallback":{"src":"/static/eb32dcf4d119698fb4c41c828663b429/83d4e/gerrit_grunwald.jpg","srcSet":"/static/eb32dcf4d119698fb4c41c828663b429/b32a2/gerrit_grunwald.jpg 750w,\n/static/eb32dcf4d119698fb4c41c828663b429/83d4e/gerrit_grunwald.jpg 1031w","sizes":"100vw"},"sources":[{"srcSet":"/static/eb32dcf4d119698fb4c41c828663b429/1bd31/gerrit_grunwald.webp 750w,\n/static/eb32dcf4d119698fb4c41c828663b429/3847e/gerrit_grunwald.webp 1031w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.0775945683802135}}},"twitter_name":null},"fields":{"slug":"/speakers/gerrit_grunwald/","speakerId":"gerrit_grunwald"}}},{"node":{"id":"f8ac41fc-2d52-5c52-8a5b-cc148abad020","html":"<p>Gregor ist einer der Organisatoren der Java User Group Mannheim und Gründer der Softwerkskammer Rhein-Neckar. Er\narbeitet als Team Lead bei LivePerson. Sein erstes Programm war ein in BASIC geschriebenes Text Adventure.</p>","frontmatter":{"name":"Gregor Trefs","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#b8a898","images":{"fallback":{"src":"/static/4b9c6a7a832986754e4721d4ea4f9fcf/d6138/gregor_trefs.png","srcSet":"/static/4b9c6a7a832986754e4721d4ea4f9fcf/d6138/gregor_trefs.png 400w","sizes":"100vw"},"sources":[{"srcSet":"/static/4b9c6a7a832986754e4721d4ea4f9fcf/416c3/gregor_trefs.webp 400w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":"gtrefs"},"fields":{"slug":"/speakers/gregor_trefs/","speakerId":"gregor_trefs"}}},{"node":{"id":"1dd06ad5-50e3-58f4-b8a3-30ffdf3c4cc0","html":"<p>Hannes Kretschmer arbeitet als Softwareentwickler bei der Carl Zeiss Digital Innovation AG in Görlitz. Dabei beschäftigt\ner sich neben der Entwicklung von Java Applikationen mit der Optimierung von Build- und Deployment-Prozessen.</p>","frontmatter":{"name":"Hannes Kretschmer","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#181818","images":{"fallback":{"src":"/static/cdc8e44feda8ef3b0686a0dce92fa4cb/bd0c7/hannes_kretschmer.jpg","srcSet":"/static/cdc8e44feda8ef3b0686a0dce92fa4cb/51b3b/hannes_kretschmer.jpg 750w,\n/static/cdc8e44feda8ef3b0686a0dce92fa4cb/4693e/hannes_kretschmer.jpg 1080w,\n/static/cdc8e44feda8ef3b0686a0dce92fa4cb/b5f28/hannes_kretschmer.jpg 1366w,\n/static/cdc8e44feda8ef3b0686a0dce92fa4cb/bd0c7/hannes_kretschmer.jpg 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/cdc8e44feda8ef3b0686a0dce92fa4cb/6e47b/hannes_kretschmer.webp 750w,\n/static/cdc8e44feda8ef3b0686a0dce92fa4cb/6e082/hannes_kretschmer.webp 1080w,\n/static/cdc8e44feda8ef3b0686a0dce92fa4cb/19fb5/hannes_kretschmer.webp 1366w,\n/static/cdc8e44feda8ef3b0686a0dce92fa4cb/a1630/hannes_kretschmer.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4979166666666666}}},"twitter_name":null},"fields":{"slug":"/speakers/hannes_kretschmer/","speakerId":"hannes_kretschmer"}}},{"node":{"id":"35a72c9a-cbdf-5f39-8b2a-1813b7e94cc7","html":"","frontmatter":{"name":"Hans Markwart","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/hans_markwart/","speakerId":"hans_markwart"}}},{"node":{"id":"93129b19-f730-5e77-879a-58c8e08a198a","html":"<p>Hendrik Ebbers (<a href=\"https://twitter.com/hendrikEbbers\">@hendrikEbbers</a>) ist Co-Founder der Karakun AG\n(<a href=\"https://dev.karakun.com/\">dev.karakun.com</a>). Hendrik leitet die JUG Dortmund. Sein Buch \"Mastering JavaFX 8 Controls\"\nist 2014 bei Oracle Press erschienen. Hendrik ist Java Champion, JavaOne Rockstar und JCP Expert Group Member.</p>","frontmatter":{"name":"Hendrik Ebbers","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#080808","images":{"fallback":{"src":"/static/274aec9265704ce5d8cbe2794470665a/d6138/hendrik_ebbers.png","srcSet":"/static/274aec9265704ce5d8cbe2794470665a/d6138/hendrik_ebbers.png 400w","sizes":"100vw"},"sources":[{"srcSet":"/static/274aec9265704ce5d8cbe2794470665a/416c3/hendrik_ebbers.webp 400w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":"hendrikEbbers"},"fields":{"slug":"/speakers/hendrik_ebbers/","speakerId":"hendrik_ebbers"}}},{"node":{"id":"1f477a08-7805-5bf3-984b-4afec0b2cd45","html":"<p><strong>Jens Leuschner</strong> hat vor einem Jahr sein Informatik-Studium an der Hochschule Zittau/Görlitz abgeschlossen und\narbeitet seitdem als Junior Softwareentwickler bei der CIDEON Software GmbH & Co. KG in Görlitz, wo er zuvor als\nWerksstudent tätig war. Ein besonderer Schwerpunkt seiner Arbeit beschäftigt sich mit der Entwicklung webbasierter\nIntegrationslösungen im Bereich von SAP und cloudbasierten CAD-Systemen.</p>","frontmatter":{"name":"Jens Leuschner","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d8f8f8","images":{"fallback":{"src":"/static/a1e48f2c95b162ec6bf5d44449042bca/0fdf4/jens_leuschner.jpg","srcSet":"/static/a1e48f2c95b162ec6bf5d44449042bca/0fdf4/jens_leuschner.jpg 300w","sizes":"100vw"},"sources":[{"srcSet":"/static/a1e48f2c95b162ec6bf5d44449042bca/078c3/jens_leuschner.webp 300w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":null},"fields":{"slug":"/speakers/jens_leuschner/","speakerId":"jens_leuschner"}}},{"node":{"id":"44493f6a-f9c2-527b-a086-fed0da68f1c4","html":"","frontmatter":{"name":"Ingo Körner","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/ingo_koerner/","speakerId":"ingo_koerner"}}},{"node":{"id":"d857c285-3a43-5120-8453-7b2f87424152","html":"<p><strong>Kay Grebenstein</strong> arbeitet als Tester und agiler QA-Coach für die Saxiona Systems AG, Dresden. Er hat in den letzten\nJahren in Projekten unterschiedlicher fachlicher Domänen (Telekommunikation, Industrie, Versandhandel, Energie, …)\nQualität gesichert und Software getestet.</p>","frontmatter":{"name":"Kay Grebenstein","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/kay_grebenstein/","speakerId":"kay_grebenstein"}}},{"node":{"id":"abafb571-eb5b-5194-818a-f2b18a1382c9","html":"","frontmatter":{"name":"Konstantin Eger","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/konstantin_eger/","speakerId":"konstantin_eger"}}},{"node":{"id":"184d7622-4aae-50bd-a14c-f44f4db9c575","html":"<p>Lars Röwekamp, Gründer des IT-Beratungs- und Entwicklungsunternehmens open knowledge GmbH, beschäftigt sich im Rahmen\nseiner Tätigkeit als \"CIO New Technologies\" mit der eingehenden Analyse und Bewertung neuer Software- und\nTechnologietrends. Ein besonderer Schwerpunkt seiner Arbeit liegt derzeit in den Bereichen Enterprise und Mobile\nComputing, wobei neben Design- und Architekturfragen insbesondere die Real-Life-Aspekte im Fokus seiner Betrachtung\nstehen. Lars Röwekamp, Autor mehrerer Fachartikel und -bücher, beschäftigt sich seit der Geburtsstunde von Java mit\ndieser Programmiersprache, wobei er einen Großteil seiner praktischen Erfahrungen im Rahmen großer internationaler\nProjekte sammeln konnte.</p>","frontmatter":{"name":"Lars Röwekamp","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e8e8e8","images":{"fallback":{"src":"/static/861b10f092bc6e58a4082b1150733dc8/6f086/lars_roewekamp.png","srcSet":"/static/861b10f092bc6e58a4082b1150733dc8/6f086/lars_roewekamp.png 500w","sizes":"100vw"},"sources":[{"srcSet":"/static/861b10f092bc6e58a4082b1150733dc8/b9f92/lars_roewekamp.webp 500w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.144}}},"twitter_name":"mobileLarson"},"fields":{"slug":"/speakers/lars_roewekamp/","speakerId":"lars_roewekamp"}}},{"node":{"id":"fee4bf04-1e31-54b1-b809-c3d510531b5c","html":"<p>Maik arbeitet als Softwareentwickler bei der Tallence AG, derzeit mit den Schwerpunkten Java und OAuth/OpenID Connect.\nSeit ca. 12 Jahren entwickelt er im Team Softwarelösungen in den verschiedensten Branchen und Themen. Immer mit Fokus\nauf agile Vorgehensweise und pragmatische Problemlösung.</p>","frontmatter":{"name":"Maik Wagner","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#a8c8e8","images":{"fallback":{"src":"/static/5950914f5c41841b7071a04a8e9bbcfd/5b03d/maik_wagner.jpg","srcSet":"/static/5950914f5c41841b7071a04a8e9bbcfd/4423a/maik_wagner.jpg 750w,\n/static/5950914f5c41841b7071a04a8e9bbcfd/5b03d/maik_wagner.jpg 960w","sizes":"100vw"},"sources":[{"srcSet":"/static/5950914f5c41841b7071a04a8e9bbcfd/3131c/maik_wagner.webp 750w,\n/static/5950914f5c41841b7071a04a8e9bbcfd/479a8/maik_wagner.webp 960w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.25}}},"twitter_name":null},"fields":{"slug":"/speakers/maik_wagner/","speakerId":"maik_wagner"}}},{"node":{"id":"c48b140e-258d-5030-8fcc-70fedc7dd5b4","html":"<p>Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten\nder Anwendungsentwicklung, wobei der Fokus auf dem Frontend liegt. Daneben interessieren ihn Themen wie funktionale\nProgrammierung und neue Programmiersprachen. Manuel ist Gründungsmitglied und Organisator der Java User Group Görlitz\nund steuert hierfür und auch für andere Usergroups und Konferenzen regelmäßig Vorträge bei.</p>","frontmatter":{"name":"Manuel Mauky","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#c8d8e8","images":{"fallback":{"src":"/static/c80baf199647599d13cde2f183750fd7/9ce86/manuel_mauky.jpg","srcSet":"/static/c80baf199647599d13cde2f183750fd7/d2e45/manuel_mauky.jpg 750w,\n/static/c80baf199647599d13cde2f183750fd7/fd5af/manuel_mauky.jpg 1080w,\n/static/c80baf199647599d13cde2f183750fd7/c71d7/manuel_mauky.jpg 1366w,\n/static/c80baf199647599d13cde2f183750fd7/9ce86/manuel_mauky.jpg 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/c80baf199647599d13cde2f183750fd7/4d4e9/manuel_mauky.webp 750w,\n/static/c80baf199647599d13cde2f183750fd7/8ff35/manuel_mauky.webp 1080w,\n/static/c80baf199647599d13cde2f183750fd7/2b2db/manuel_mauky.webp 1366w,\n/static/c80baf199647599d13cde2f183750fd7/7188c/manuel_mauky.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.3161458333333333}}},"twitter_name":"manuel_mauky"},"fields":{"slug":"/speakers/manuel_mauky/","speakerId":"manuel_mauky"}}},{"node":{"id":"83b497c1-a32d-5e39-a543-439154b750d9","html":"<p><strong>Marco Gotthans</strong> arbeitet als Tester bei der ZEISS Digital Innovation in Görlitz. Mit automatisierten Testscripten stellt er\nSoftwarequalität sicher. In der Industrie 4.0 beschäftigt er sich mit den vielen neuen Herausforderungen der\nQualitätssicherung, die sich aus der Verbindung von komplexen Maschinensteuerungen mit Cloudsystemen ergeben.</p>","frontmatter":{"name":"Marco Gotthans","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#081838","images":{"fallback":{"src":"/static/d96c9533996a3deed2a5551b1a94c812/3b4fe/marco_gotthans.jpg","srcSet":"/static/d96c9533996a3deed2a5551b1a94c812/b0c6e/marco_gotthans.jpg 750w,\n/static/d96c9533996a3deed2a5551b1a94c812/3b4fe/marco_gotthans.jpg 768w","sizes":"100vw"},"sources":[{"srcSet":"/static/d96c9533996a3deed2a5551b1a94c812/4c1cf/marco_gotthans.webp 750w,\n/static/d96c9533996a3deed2a5551b1a94c812/9f5d6/marco_gotthans.webp 768w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.3333333333333333}}},"twitter_name":null},"fields":{"slug":"/speakers/marco_gotthans/","speakerId":"marco_gotthans"}}},{"node":{"id":"d0f25d9d-4106-5691-a1b2-28cbe4275e46","html":"","frontmatter":{"name":"Marcus Döring","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/marcus_doering/","speakerId":"marcus_doering"}}},{"node":{"id":"9e00ea79-267c-5db0-9e41-f5d872b4c595","html":"","frontmatter":{"name":"Mario Mann","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/mario_mann/","speakerId":"mario_mann"}}},{"node":{"id":"d08d4526-e68f-5a1d-8a78-6c5a99cbe1e4","html":"","frontmatter":{"name":"Mario Reichel","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/mario_reichel/","speakerId":"mario_reichel"}}},{"node":{"id":"678c9f26-730c-5aff-999b-bd4eb93dc92f","html":"<p><strong>Mariusz Zienkiewicz</strong> hat nach seinem Studium an HTWS Zittau/Görlitz bei CIDEON Software GmbH & Co. KG angefangen und\nist dort seit 19 Jahren tätig. Hier arbeitet er als Senior Expert Developer. Seine beruflichen Schwerpunkte liegen in\nder Steuerung von ALM-Prozessen und der agilen Softwareentwicklung im Umfeld von C, C++ und Java. Aktuell beschäftigt er\nsich mit Cloud-Technologien.</p>","frontmatter":{"name":"Mariusz Zienkiewicz","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#281818","images":{"fallback":{"src":"/static/bae1e2f992c7bebba96ec2dc974a0895/0fdf4/mariusz_zienkiewicz.jpg","srcSet":"/static/bae1e2f992c7bebba96ec2dc974a0895/0fdf4/mariusz_zienkiewicz.jpg 300w","sizes":"100vw"},"sources":[{"srcSet":"/static/bae1e2f992c7bebba96ec2dc974a0895/078c3/mariusz_zienkiewicz.webp 300w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":null},"fields":{"slug":"/speakers/mariusz_zienkiewicz/","speakerId":"mariusz_zienkiewicz"}}},{"node":{"id":"5834f4d7-e0a3-505c-b1d0-81a37f5144f1","html":"","frontmatter":{"name":"Mark Ziener","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/mark_ziener/","speakerId":"mark_ziener"}}},{"node":{"id":"74ed9e96-8a2b-59cb-8642-93f5dec4d7b3","html":"","frontmatter":{"name":"Marko Modsching","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/marko_modsching/","speakerId":"marko_modsching"}}},{"node":{"id":"af5cd69a-023f-577f-9cb1-5f5185d0848d","html":"<p>Markus entwickelt seit 20 Jahren mit seinem Team Developer-Tools für Java und alle wichtigen Datenbanksysteme sowie\nIndividualsoftware für Endkunden. Er ist Product Owner der freien Eclipse Distribution und visuellen Java\nEntwicklungsumgebung RapidClipse sowie der Open Source Abfragesprache JPA-SQL. Markus ist Gründer und CEO von\nMicroStream, Chefredakteur des kostenlosen Java Magazins JAVAPRO, Co-Organisator der Java Konferenz JCON, freier Autor\nfür verschiedene Fachzeitschriften sowie Speaker bei zahlreichen Entwicklerkonferenzen, User Groups und Meetups.</p>","frontmatter":{"name":"Markus Kett","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#58a8d8","images":{"fallback":{"src":"/static/ce58d8e1afec86c71bef3c5971759db8/eadd3/markus_kett.png","srcSet":"/static/ce58d8e1afec86c71bef3c5971759db8/eadd3/markus_kett.png 640w","sizes":"100vw"},"sources":[{"srcSet":"/static/ce58d8e1afec86c71bef3c5971759db8/90d07/markus_kett.webp 640w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":"MarkusKett"},"fields":{"slug":"/speakers/markus_kett/","speakerId":"markus_kett"}}},{"node":{"id":"b0aa71a0-d2a3-5a2a-8831-2137b43e583d","html":"<p><strong>Markus Weiland</strong> arbeitet als Freelance Solution Architect im ecommerce unter anderem an der Einführung und Migration von Content Management Lösungen für größere Unternehmen mit komplexen Geschäftsprozessen. Er ist notorisch unzufrieden mit den Lock-in-Effekten geschlossener Plattformen und Verfechter von Libre Software.</p>","frontmatter":{"name":"Markus Weiland","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#080808","images":{"fallback":{"src":"/static/9a5a3c451d197c3c973e2af76ac66c29/47930/markus_weiland.jpg","srcSet":"/static/9a5a3c451d197c3c973e2af76ac66c29/47930/markus_weiland.jpg 400w","sizes":"100vw"},"sources":[{"srcSet":"/static/9a5a3c451d197c3c973e2af76ac66c29/416c3/markus_weiland.webp 400w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":null},"fields":{"slug":"/speakers/markus_weiland/","speakerId":"markus_weiland"}}},{"node":{"id":"2376b174-04f1-5b56-b72f-8201a1dfb2a5","html":"<p>Marlene ist freischaffende Illustratorin und Künstlerin und widmet sich in ihrem künstlerischen Schaffen regelmäßig\nThemen aus der Informatik und Mathematik. Davor hat sie als Software-Entwicklerin gearbeitet. Zudem ist sie\nMitorganisatorin der Java User Group Görlitz und organisiert den Chaostreff Görlitz.</p>","frontmatter":{"name":"Marlene Knoche","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e8f8f8","images":{"fallback":{"src":"/static/fb8c1a1fc6c46340f65bfc9186c17d03/afa21/marlene_knoche.jpg","srcSet":"/static/fb8c1a1fc6c46340f65bfc9186c17d03/0f5ce/marlene_knoche.jpg 750w,\n/static/fb8c1a1fc6c46340f65bfc9186c17d03/b74b1/marlene_knoche.jpg 1080w,\n/static/fb8c1a1fc6c46340f65bfc9186c17d03/afa21/marlene_knoche.jpg 1280w","sizes":"100vw"},"sources":[{"srcSet":"/static/fb8c1a1fc6c46340f65bfc9186c17d03/4f03f/marlene_knoche.webp 750w,\n/static/fb8c1a1fc6c46340f65bfc9186c17d03/4f506/marlene_knoche.webp 1080w,\n/static/fb8c1a1fc6c46340f65bfc9186c17d03/9e21f/marlene_knoche.webp 1280w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":null},"fields":{"slug":"/speakers/marlene_knoche/","speakerId":"marlene_knoche"}}},{"node":{"id":"db05ced3-0480-51fe-83be-d0149d94da93","html":"<p>Max Wielsch ist seit 2011 als Software-Entwickler bei der Saxonia Systems AG tätig. Derzeit beschäftigt er sich mit der\nMigration von monolithischen Architekturen hin zu entkoppelten Service-Architekturen im Kontext von\nJava-Enterprise-Applikationen. Dabei ist er von Backend bis Frontend involviert. Besondere Begeisterung empfindet er für\nReact als Vertreter von aktuellen JavaScript-UI-Bibliotheken, die einen funktionalen Stil der Entwicklung unterstützen.\nIn seiner Freizeit engagiert sich Max als Organisator der Java User Group Görlitz, um auch in der östlichsten Stadt\nDeutschlands die Vielfalt von IT-Angeboten zu erhöhen und insbesondere die Community zu unterstützen.</p>","frontmatter":{"name":"Max Wielsch","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#484858","images":{"fallback":{"src":"/static/0fb18b404d101e5878db1bc4a490cf19/bbd03/max_wielsch.jpg","srcSet":"/static/0fb18b404d101e5878db1bc4a490cf19/99918/max_wielsch.jpg 750w,\n/static/0fb18b404d101e5878db1bc4a490cf19/f449b/max_wielsch.jpg 1080w,\n/static/0fb18b404d101e5878db1bc4a490cf19/34fc5/max_wielsch.jpg 1366w,\n/static/0fb18b404d101e5878db1bc4a490cf19/bbd03/max_wielsch.jpg 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/0fb18b404d101e5878db1bc4a490cf19/e5fa4/max_wielsch.webp 750w,\n/static/0fb18b404d101e5878db1bc4a490cf19/171d7/max_wielsch.webp 1080w,\n/static/0fb18b404d101e5878db1bc4a490cf19/b1984/max_wielsch.webp 1366w,\n/static/0fb18b404d101e5878db1bc4a490cf19/ad9f4/max_wielsch.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.5}}},"twitter_name":null},"fields":{"slug":"/speakers/max_wielsch/","speakerId":"max_wielsch"}}},{"node":{"id":"f042c1af-7b71-5d8f-ab98-aa158cb2a418","html":"","frontmatter":{"name":"Michael Förster","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/michael_foerster/","speakerId":"michael_foerster"}}},{"node":{"id":"21c7def1-78a4-52e2-bf13-b3a646e3215d","html":"<p>Seit Mitte 2010 arbeitet <strong>Michael Hunger</strong> eng mit Neo Technology zusammen, um deren Graphendatenbank\nNeo4j noch leichter für Entwickler zugänglich zu machen. Hauptinteressensgebiete sind dort Integration mit anderen\nTechnologien, wie z.B. Spring-Data, Datenimport und Performance. Er unterstützt alle Nutzer von Neo4j tagtäglich bei der\nerfolgreichen Realisierung ihrer Projekte und Lösung ihrer Fragen und Probleme.</p>\n<p>Michael arbeitet an mehreren Open Source Projekten mit, ist Autor, Editor, Buch-Reviewer und häufiger Sprecher und\nOrganisator von Konferenzen.</p>","frontmatter":{"name":"Michael Hunger","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#181808","images":{"fallback":{"src":"/static/a27527592fa9acc54399d3ab9508193f/30cdc/michael_hunger.png","srcSet":"/static/a27527592fa9acc54399d3ab9508193f/30cdc/michael_hunger.png 300w","sizes":"100vw"},"sources":[{"srcSet":"/static/a27527592fa9acc54399d3ab9508193f/078c3/michael_hunger.webp 300w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":"mesirii"},"fields":{"slug":"/speakers/michael_hunger/","speakerId":"michael_hunger"}}},{"node":{"id":"fc3d2a4f-3ab8-5fc9-aa19-09fc69dd1385","html":"","frontmatter":{"name":"Michael Thiele","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/michael_thiele/","speakerId":"michael_thiele"}}},{"node":{"id":"917f2c35-500a-5f14-bfb1-d99f287d2afe","html":"","frontmatter":{"name":"Michael Wiedeking","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/michael_wiedeking/","speakerId":"michael_wiedeking"}}},{"node":{"id":"543c0c0e-1ed8-519c-a2d3-544f86c7b5d2","html":"<p>Nico Förster arbeitet als Softwareentwickler bei der Carl Zeiss Digital Innovation GmbH in Görlitz. Er ist im Bereich\nder Softwareevolution tätig und beschäftigt sich aktuell mit der Weiterentwicklung und Wartung einer umfangreichen\nJava-Enterprise-Applikation im Bereich Schienenlogistik. Sein Interessengebiet umfasst außerdem die Bereiche IT- und\nApplication Security.</p>","frontmatter":{"name":"Nico Förster","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#485858","images":{"fallback":{"src":"/static/01f1f076678841fa70905cc41bb50757/18869/nico_foerster.jpg","srcSet":"/static/01f1f076678841fa70905cc41bb50757/18869/nico_foerster.jpg 400w","sizes":"100vw"},"sources":[{"srcSet":"/static/01f1f076678841fa70905cc41bb50757/3d164/nico_foerster.webp 400w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.5}}},"twitter_name":null},"fields":{"slug":"/speakers/nico_foerster/","speakerId":"nico_foerster"}}},{"node":{"id":"8402dc7e-d767-5b77-8ca3-ff9c967248fb","html":"<p><strong>Oliver Drotbohm</strong> ist Teil des Spring Engineering Teams bei VMware. Seine Arbeitsschwerpunkte liegen im Bereich Softwarearchitektur, Domain-Driven Design, REST, Spring und Persistenztechnologien. Sein neues Buch \"Modulithic Applications with Spring\" erscheint 2023.</p>","frontmatter":{"name":"Oliver Drotbohm","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e8e8e8","images":{"fallback":{"src":"/static/bc32a8e1242b1987951435e5d8008305/94804/oliver_drotbohm.png","srcSet":"/static/bc32a8e1242b1987951435e5d8008305/94804/oliver_drotbohm.png 491w","sizes":"100vw"},"sources":[{"srcSet":"/static/bc32a8e1242b1987951435e5d8008305/d94cc/oliver_drotbohm.webp 491w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":"odrotbohm"},"fields":{"slug":"/speakers/oliver_drotbohm/","speakerId":"oliver_drotbohm"}}},{"node":{"id":"c8fa437e-3c34-56b6-b03b-c67c1370f111","html":"<p><strong>Patryk Lewandowski</strong> ist ein Softwareentwickler, der bei Zeiss Digital Innovation GmbH arbeitet. Kürzlich hat er\nerfolgreich eine Zertifizierung für Java 17 abgeschlossen. Er hat ein starkes Interesse an neuen Technologien,\nSoftwarearchitektur und der Suche nach den richtigen Werkzeugen für die jeweilige Aufgabe.</p>","frontmatter":{"name":"Patryk Lewandowski","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#283828","images":{"fallback":{"src":"/static/373970275b508640294e2478b4090c54/b52c4/patryk_lewandowski.jpg","srcSet":"/static/373970275b508640294e2478b4090c54/ae2f6/patryk_lewandowski.jpg 750w,\n/static/373970275b508640294e2478b4090c54/1a7b3/patryk_lewandowski.jpg 1080w,\n/static/373970275b508640294e2478b4090c54/1748d/patryk_lewandowski.jpg 1366w,\n/static/373970275b508640294e2478b4090c54/b52c4/patryk_lewandowski.jpg 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/373970275b508640294e2478b4090c54/8c41c/patryk_lewandowski.webp 750w,\n/static/373970275b508640294e2478b4090c54/b826b/patryk_lewandowski.webp 1080w,\n/static/373970275b508640294e2478b4090c54/d4680/patryk_lewandowski.webp 1366w,\n/static/373970275b508640294e2478b4090c54/5e02f/patryk_lewandowski.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.2494791666666667}}},"twitter_name":null},"fields":{"slug":"/speakers/patryk_lewandowski/","speakerId":"patryk_lewandowski"}}},{"node":{"id":"339b9441-8737-533f-aefe-b31bbb6663f4","html":"","frontmatter":{"name":"Paul Weinhold","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/paul_weinhold/","speakerId":"paul_weinhold"}}},{"node":{"id":"e52c08b9-aaed-5384-920c-d08af9991f5b","html":"<p><strong>Pawel Adaszewski</strong> ist als Softwareentwickler bei der Carl Zeiss Digital Innovation GmbH in Görlitz tätig. In seiner täglichen Arbeit\nversucht er die Herausforderungen aus der Industrial-IoT-Welt mithilfe der AWS-Cloud zu bewältigen. Zu seinen\nHauptaufgaben gehören das Design und die Erstellung von automatisch bereitgestellten Serverless-Cloud-Infrastrukturen.</p>","frontmatter":{"name":"Pawel Adaszewski","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#c8c8e8","images":{"fallback":{"src":"/static/276b01211c38e45a877d2f2a5d1a4532/00175/pawel_adaszewski.jpg","srcSet":"/static/276b01211c38e45a877d2f2a5d1a4532/ffc4f/pawel_adaszewski.jpg 750w,\n/static/276b01211c38e45a877d2f2a5d1a4532/00175/pawel_adaszewski.jpg 1080w","sizes":"100vw"},"sources":[{"srcSet":"/static/276b01211c38e45a877d2f2a5d1a4532/6e066/pawel_adaszewski.webp 750w,\n/static/276b01211c38e45a877d2f2a5d1a4532/9683a/pawel_adaszewski.webp 1080w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.6444444444444444}}},"twitter_name":null},"fields":{"slug":"/speakers/pawel_adaszewski/","speakerId":"pawel_adaszewski"}}},{"node":{"id":"304f3f2c-44ca-5275-9f73-5b789038daf0","html":"","frontmatter":{"name":"Richard Hauswald","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/richard_hauswald/","speakerId":"richard_hauswald"}}},{"node":{"id":"18051d64-e79b-5ad5-bdc3-0b0f822ae644","html":"","frontmatter":{"name":"Robert Wirbs","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/robert_wirbs/","speakerId":"robert_wirbs"}}},{"node":{"id":"54a0f9fe-80ab-52ba-9aea-e3f2a5dd045f","html":"<p><strong>Roland Weisleder</strong> ist freiberuflicher Softwareentwickler und seit 2009 im Java-Ökosystem unterwegs. Sein Schwerpunkt ist die Stabilisierung und Weiterentwicklung von gewachsenen Enterprise-Anwendungen. Er hat eine Leidenschaft für Test- und Buildautomatisierung und verfolgt das Ziel, dass Prozesse in der Softwareentwicklung einfacher und robuster werden. Seine Erfahrungen teilt er in Vorträgen im In- und Ausland.</p>","frontmatter":{"name":"Roland Weisleder","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#98c8f8","images":{"fallback":{"src":"/static/0292a65386102f7b15c663142861115e/22e9f/roland_weisleder.jpg","srcSet":"/static/0292a65386102f7b15c663142861115e/22e9f/roland_weisleder.jpg 500w","sizes":"100vw"},"sources":[{"srcSet":"/static/0292a65386102f7b15c663142861115e/024c8/roland_weisleder.webp 500w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":0.7}}},"twitter_name":"Ro_Wei"},"fields":{"slug":"/speakers/roland_weisleder/","speakerId":"roland_weisleder"}}},{"node":{"id":"cb2ea0b2-b790-5204-9f7b-e1cd0f0583c1","html":"","frontmatter":{"name":"Sebastian Schmeck","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/sebastian_schmeck/","speakerId":"sebastian_schmeck"}}},{"node":{"id":"87a83879-1b5e-50f5-9829-2699d9a01da5","html":"<p><strong>Sergej Tihonov</strong> ist ein freiberuflicher Softwareentwickler. Seit mehr als 8 Jahren widmet er sich der Entwicklung von komplexen Softwaresystemen und Open-Source-Projekten. Seine Tätigkeitsschwerpunkte sind Projektmanagement, Softwarearchitektur und Projektstabilisierung. Privat geht er gerne barfuß joggen.</p>","frontmatter":{"name":"Sergej Tihonov","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#787878","images":{"fallback":{"src":"/static/b485586e0b2c66703b49784827202ddd/22e9f/sergej_tihonov.jpg","srcSet":"/static/b485586e0b2c66703b49784827202ddd/22e9f/sergej_tihonov.jpg 500w","sizes":"100vw"},"sources":[{"srcSet":"/static/b485586e0b2c66703b49784827202ddd/024c8/sergej_tihonov.webp 500w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":0.7}}},"twitter_name":"EvenMoreDev"},"fields":{"slug":"/speakers/sergej_tihonov/","speakerId":"sergej_tihonov"}}},{"node":{"id":"4f81ccbd-2893-5804-a68a-04c6b8c20f75","html":"<p>Simon arbeitet als Softwareentwickler bei der Korasoft GmbH. Er findet es spannend, wie in der SAP Welt wenige Zeilen\nCode riesige Unternehmen steuern. Manchmal hat er dabei das Gefühl, sich in einem Museum zu befinden, während er auf der\nanderen Seite mit innovativen Technologien am Puls der Zeit sein darf. Dementsprechend reicht sein Erfahrungsspektrum\nvon traditionsreichen ABAP Reports bis hin zu modernen Cloud Foundry Apps.</p>","frontmatter":{"name":"Simon Roloff","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e8e8e8","images":{"fallback":{"src":"/static/8997189be722553b2c839d4576fdee41/f76fb/simon_roloff.png","srcSet":"/static/8997189be722553b2c839d4576fdee41/0dee1/simon_roloff.png 750w,\n/static/8997189be722553b2c839d4576fdee41/8beaa/simon_roloff.png 1080w,\n/static/8997189be722553b2c839d4576fdee41/f76fb/simon_roloff.png 1182w","sizes":"100vw"},"sources":[{"srcSet":"/static/8997189be722553b2c839d4576fdee41/a66aa/simon_roloff.webp 750w,\n/static/8997189be722553b2c839d4576fdee41/65dd5/simon_roloff.webp 1080w,\n/static/8997189be722553b2c839d4576fdee41/3c6ec/simon_roloff.webp 1182w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":0.5626057529610828}}},"twitter_name":null},"fields":{"slug":"/speakers/simon_roloff/","speakerId":"simon_roloff"}}},{"node":{"id":"a26cc991-7e1d-5caa-8926-7a52b0fa93e6","html":"","frontmatter":{"name":"Stefan Barth","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/stefan_barth/","speakerId":"stefan_barth"}}},{"node":{"id":"63ab1902-d259-53c5-99ea-3564ac4ce81a","html":"<p>Stefan Bley ist Senior Consultant und Coach bei der Saxonia Systems AG in Dresden. Sein Schwerpunkt in Kundenprojekten\nsind webbasierte Softwarelösungen mit Java-EE- Toolstack. Er beschäftigt sich gern mit innovativen Technologien und gibt\nsein Wissen auf Konferenzen und Community-Veranstaltung weiter. Aktuell befasst er sich mit Microservices im Java-Umfeld\nund Single-Page-Apps mit Angular 2.</p>","frontmatter":{"name":"Stefan Bley","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#686868","images":{"fallback":{"src":"/static/92076116610bf424c9719adb66fa22c0/f3dd0/stefan_bley.jpg","srcSet":"/static/92076116610bf424c9719adb66fa22c0/f3dd0/stefan_bley.jpg 299w","sizes":"100vw"},"sources":[{"srcSet":"/static/92076116610bf424c9719adb66fa22c0/04c61/stefan_bley.webp 299w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4983277591973243}}},"twitter_name":"sbley"},"fields":{"slug":"/speakers/stefan_bley/","speakerId":"stefan_bley"}}},{"node":{"id":"dd47473a-7d7f-54fa-9daa-e062ae1c9bef","html":"","frontmatter":{"name":"Stefan Bradl","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/stefan_bradl/","speakerId":"stefan_bradl"}}},{"node":{"id":"d4e04ddf-59bb-542f-b6bc-58e5cf77667d","html":"","frontmatter":{"name":"Stefan Heinze","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/stefan_heinze/","speakerId":"stefan_heinze"}}},{"node":{"id":"bd7c2828-9149-5013-8dca-331d23b9953f","html":"","frontmatter":{"name":"Stefan Scheumann","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/stefan_scheumann/","speakerId":"stefan_scheumann"}}},{"node":{"id":"7b63d414-09ef-5e63-bda2-a3259175090c","html":"<p>Von der Bayer AG über IBM und oose zu embarc. <strong>Stefan Zörner</strong> blickt auf zwanzig Jahre IT-Erfahrung zurück und stets\ngespannt nach vorn. Er unterstützt in Architektur- und Umsetzungsfragen mit dem Ziel, gute Architekturansätze wirksam in\nder Implementierung zu verankern. Sein Wissen und seine Erfahrung teilt er regelmäßig in Vorträgen, Artikeln und\nWorkshops. Stefan ist Apache Committer, aktives Board-Mitglied im iSAQB und Autor des Buchs „Softwarearchitekturen\ndokumentieren und kommunizieren“ (Hanser Verlag).</p>","frontmatter":{"name":"Stefan Zörner","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#b8a878","images":{"fallback":{"src":"/static/357c5655cc1d492de0f8357e5419c624/47930/stefan_zoerner.jpg","srcSet":"/static/357c5655cc1d492de0f8357e5419c624/47930/stefan_zoerner.jpg 400w","sizes":"100vw"},"sources":[{"srcSet":"/static/357c5655cc1d492de0f8357e5419c624/416c3/stefan_zoerner.webp 400w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":null},"fields":{"slug":"/speakers/stefan_zoerner/","speakerId":"stefan_zoerner"}}},{"node":{"id":"09a6b265-f443-579a-ae78-9188aaeca6ca","html":"<p><strong>Stefan Zörner</strong> (<a href=\"mailto:stefan.zoerner@embarc.de\">stefan.zoerner@embarc.de</a>) arbeitet bei embarc in Hamburg. Er unterstützt Entwicklungsteams dabei Softwarelösungen zu konzipieren, zu bewerten und zu verbessern. Das Vermitteln von Architekturansätzen ist einer seiner fachlichen Schwerpunkte. Sein Wissen und seine Erfahrung teilt er regelmäßig in Vorträgen, Artikeln und Workshops. Sein Buch \"Softwarearchitekturen dokumentieren und kommunizieren“ ist beim Hanser-Verlag erschienen.</p>","frontmatter":{"name":"Stefan Zörner","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d8e8f8","images":{"fallback":{"src":"/static/cf60a2326a44e6c970127f3f0ac2978d/a89ca/stefan_zoerner_2.jpg","srcSet":"/static/cf60a2326a44e6c970127f3f0ac2978d/a89ca/stefan_zoerner_2.jpg 600w","sizes":"100vw"},"sources":[{"srcSet":"/static/cf60a2326a44e6c970127f3f0ac2978d/6d09e/stefan_zoerner_2.webp 600w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":null},"fields":{"slug":"/speakers/stefan_zoerner_2/","speakerId":"stefan_zoerner_2"}}},{"node":{"id":"39cc0655-cd1a-540e-9553-b9fa67e895cc","html":"","frontmatter":{"name":"Steffen Seidler","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/steffen_seidler/","speakerId":"steffen_seidler"}}},{"node":{"id":"a8d3dca8-b87d-568d-8e70-dcac046e98d5","html":"<p>Stephan ist seit 2013 Informatikstudent an der Hochschule Zittau/Görlitz und schreibt derzeit seine Masterarbeit über\nGraphQL in der Microservice Architektur bei Saxonia Systems AG in Görlitz. Er beschäftigt sich mit Webanwendungen sowie\nFrontend-Technologien. Dabei finden GraphQL und React Verwendungen in mehreren Projekten.</p>","frontmatter":{"name":"Stephan Strehler","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#080808","images":{"fallback":{"src":"/static/a123ccdaefc129dd10224cd767e2c9b9/30f07/stephan_strehler.jpg","srcSet":"/static/a123ccdaefc129dd10224cd767e2c9b9/30f07/stephan_strehler.jpg 640w","sizes":"100vw"},"sources":[{"srcSet":"/static/a123ccdaefc129dd10224cd767e2c9b9/90d07/stephan_strehler.webp 640w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":null},"fields":{"slug":"/speakers/stephan_strehler/","speakerId":"stephan_strehler"}}},{"node":{"id":"9a66bc44-37f7-527c-9f45-6c0b1dd74510","html":"<p>Thilo Frotscher arbeitet als freiberuflicher Software-Architekt und Trainer. Als Experte für Enterprise Java und\nSystemintegration unterstützt er seine Kunden überwiegend durch Entwicklung, Reviews oder die Durchführung von\nSchulungen. Thilo ist (Co-)Autor mehrerer Bücher sowie zahlreicher Fachartikel und spricht regelmäßig auf\nFachkonferenzen oder bei User Groups.</p>","frontmatter":{"name":"Thilo Frotscher","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#a8a8a8","images":{"fallback":{"src":"/static/5e6dbea52d281cdada5adcd4769087bc/147a6/thilo_frotscher.jpg","srcSet":"/static/5e6dbea52d281cdada5adcd4769087bc/147a6/thilo_frotscher.jpg 313w","sizes":"100vw"},"sources":[{"srcSet":"/static/5e6dbea52d281cdada5adcd4769087bc/acaa7/thilo_frotscher.webp 313w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.3099041533546325}}},"twitter_name":"thfro"},"fields":{"slug":"/speakers/thilo_frotscher/","speakerId":"thilo_frotscher"}}},{"node":{"id":"aefd4a1f-a4ed-5e51-a713-1da570fcd2ee","html":"<p>Sven Hoffmann ist seit über 8 Jahren für die Saxonia Systems AG tätig. Er beschäftigte sich in dieser Zeit mit einer\nVielzahl von Backend und Frontend-Technologien. Zu seinen technologischen Hauptschwerpunkten zählen Webanwendungen und\nJavaEE.</p>","frontmatter":{"name":"Sven Hoffmann","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#484848","images":{"fallback":{"src":"/static/9b60a5387f4809c8bf0c20f0de29922e/69538/sven_hoffmann.jpg","srcSet":"/static/9b60a5387f4809c8bf0c20f0de29922e/69538/sven_hoffmann.jpg 406w","sizes":"100vw"},"sources":[{"srcSet":"/static/9b60a5387f4809c8bf0c20f0de29922e/2ccb1/sven_hoffmann.webp 406w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.502463054187192}}},"twitter_name":null},"fields":{"slug":"/speakers/sven_hoffmann/","speakerId":"sven_hoffmann"}}},{"node":{"id":"3cab3c25-9f08-5d29-a7c2-3e2b0d414c16","html":"","frontmatter":{"name":"Thomas Storch","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/thomas_storch/","speakerId":"thomas_storch"}}},{"node":{"id":"9776c4f1-e686-5cf2-b042-939797958362","html":"<p><strong>Tobias Blaschke</strong> hat sein Informatik-Studium an der Universität Magdeburg abgeschlossen. In den letzten Jahren ist er\nbei der Eudemonia Solutions AG als Software-Architekt tätig und unterstützt dort insbesondere die Entwicklung einer\nwebbasierten Lösung zur Firmenkundenberatung in den Volks- und Raiffeisenbanken auf Basis von Java und GWT.</p>","frontmatter":{"name":"Tobias Blaschke","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/tobias_blaschke/","speakerId":"tobias_blaschke"}}},{"node":{"id":"91d3bc22-4970-51b8-90cf-7583f2dc5ff5","html":"<p>Uwe Manteuffel ist Senior Consultant für Webentwicklung bei Saxonia Systems AG in Görlitz. Er ist seit 2008 im Umfeld\nvon Webtechnologien und ASP.NET unterwegs. Sein Schwerpunkt liegt dabei auf dem Design und der Umsetzung von\nOberflächen. Besonderer Fokus liegt dabei auf der Verwendung von CSS. Hierbei beschäftigt er sich mit verschiedenen\nMethoden wie OOCSS (Objektorientiertes CSS) und der Verwendung von Präprozessoren wie LESS oder SASS. Aktuell entwickelt\ner ASP.NET MVC Anwendungen für B2B Kunden.</p>","frontmatter":{"name":"Uwe Manteuffel","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#585868","images":{"fallback":{"src":"/static/26d3f744bce66e93610087ebefd7fcb2/0fdf4/uwe_manteuffel.jpg","srcSet":"/static/26d3f744bce66e93610087ebefd7fcb2/0fdf4/uwe_manteuffel.jpg 300w","sizes":"100vw"},"sources":[{"srcSet":"/static/26d3f744bce66e93610087ebefd7fcb2/078c3/uwe_manteuffel.webp 300w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":"dasuew"},"fields":{"slug":"/speakers/uwe_manteuffel/","speakerId":"uwe_manteuffel"}}},{"node":{"id":"53f5069e-fb7c-5f5d-b967-b5df3c1df975","html":"<p>Wolfgang Weigend arbeitet als Sen. Leitender Systemberater bei ORACLE Global Services Germany GmbH. Er gehört zum\nweltweiten Java Team und ist zuständig für Java Technologie & GraalVM und Architektur für unternehmensweite\nAnwendungsentwicklung.</p>","frontmatter":{"name":"Wolfgang Weigend","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#181818","images":{"fallback":{"src":"/static/afd51a81ad1e8768bed62639c9389490/c2725/wolfgang_weigend.jpg","srcSet":"/static/afd51a81ad1e8768bed62639c9389490/c2725/wolfgang_weigend.jpg 559w","sizes":"100vw"},"sources":[{"srcSet":"/static/afd51a81ad1e8768bed62639c9389490/fa89f/wolfgang_weigend.webp 559w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.2629695885509837}}},"twitter_name":"wolflook"},"fields":{"slug":"/speakers/wolfgang_weigend/","speakerId":"wolfgang_weigend"}}}]},"locations":{"edges":[{"node":{"fields":{"slug":"/locations/cideon/","locationId":"cideon"},"frontmatter":{"name":"CIDEON Software & Services GmbH & Co. KG","number":"25","info":null,"zip":"02826","city":"Görlitz","street":"Untermarkt"}}},{"node":{"fields":{"slug":"/locations/dser_elisabethstrasse/","locationId":"dser_elisabethstrasse"},"frontmatter":{"name":"DSER","number":"42/43","info":null,"zip":"02826","city":"Görlitz","street":"Elisabethstraße"}}},{"node":{"fields":{"slug":"/locations/dser_steinstrasse/","locationId":"dser_steinstrasse"},"frontmatter":{"name":"DSER","number":"11","info":null,"zip":"02826","city":"Görlitz","street":"Steinstraße"}}},{"node":{"fields":{"slug":"/locations/expleo/","locationId":"expleo"},"frontmatter":{"name":"Expleo","number":"23","info":null,"zip":"02826","city":"Görlitz","street":"Konsulstraße"}}},{"node":{"fields":{"slug":"/locations/fraunhofer/","locationId":"fraunhofer"},"frontmatter":{"name":"Fraunhofer-Institut IOSB - Angewandte Systemtechnik","number":"11","info":null,"zip":"02826","city":"Görlitz","street":"Wilhelmsplatz"}}},{"node":{"fields":{"slug":"/locations/hochschule_obermarkt/","locationId":"hochschule_obermarkt"},"frontmatter":{"name":"Hochschule Zittau/Görlitz","number":"17","info":null,"zip":"02826","city":"Görlitz","street":"Obermarkt"}}},{"node":{"fields":{"slug":"/locations/hochschule_campus/","locationId":"hochschule_campus"},"frontmatter":{"name":"Hochschule Zittau/Görlitz","number":"1","info":"Haus G2 Raum 0.10","zip":"02826","city":"Görlitz","street":"Brückenstraße"}}},{"node":{"fields":{"slug":"/locations/innolabs/","locationId":"innolabs"},"frontmatter":{"name":"Innolabs Görlitz","number":"22","info":null,"zip":"02826","city":"Görlitz","street":"Bahnhofstraße"}}},{"node":{"fields":{"slug":"/locations/saxsys/","locationId":"saxsys"},"frontmatter":{"name":"Saxonia Systems AG","number":"63","info":null,"zip":"02826","city":"Görlitz","street":"Berliner Straße"}}},{"node":{"fields":{"slug":"/locations/sqs/","locationId":"sqs"},"frontmatter":{"name":"SQS TestCenter Görlitz","number":"10","info":null,"zip":"02826","city":"Görlitz","street":"Brückenstraße"}}},{"node":{"fields":{"slug":"/locations/tallence/","locationId":"tallence"},"frontmatter":{"name":"Tallence AG","number":"27","info":null,"zip":"02826","city":"Görlitz","street":"Neißstraße"}}},{"node":{"fields":{"slug":"/locations/zeiss/","locationId":"zeiss"},"frontmatter":{"name":"Carl Zeiss Digital Innovation","number":"63","info":null,"zip":"02826","city":"Görlitz","street":"Berliner Straße"}}}]}},"pageContext":{}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-index-tsx","path":"/","result":{"data":{"talks":{"edges":[{"node":{"id":"b0252f0d-2a16-5085-913a-7fb7bf5364a6","html":"<p><a href=\"http://easymock.org/\">EasyMock</a> - Was ist ein Mock?, Warum sollte ich mocken? Was ist EasyMock? Wie kann ich es\nbenutzen? All diese Fragen werden in der Präsentation beantwortet.</p>","frontmatter":{"title":"EasyMock","date":"2011-03-22T00:00:00.000Z","time":null,"speaker":["richard_hauswald"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["testen"]},"fields":{"slug":"/talks/2011-03-22-easymock/","sourceName":"talks"}}},{"node":{"id":"c92b2d55-0d33-50f7-a73c-de8f55b7d75e","html":"<p><a href=\"http://hudson-ci.org/\">Hudson</a> bzw. <a href=\"http://jenkins-ci.org/\">Jenkins</a> ist ein Build-Server, der für\n<a href=\"http://de.wikipedia.org/wiki/Kontinuierliche_Integration\">Continuous Integration</a> eingesetzt wird. Darunter versteht\nman das Vorgehen, nach jeder Code-Änderung einen Build-Vorgang (inklusive Kompilieren des Codes und Ausführen der Tests)\ndurchzuführen. Damit kann sichergestellt werden, dass Fehlerhafte Änderungen sofort auffallen und behoben werden können.</p>\n<p>Im Vortrag werden die Begriffe \"Build Management\" und \"Continuous Integration\" näher erleutert und am konkreten Beispiel\nvon Jenkins gezeigt, wie dies in der Praxis umgesetzt werden kann.</p>","frontmatter":{"title":"Jenkins/Hudson","date":"2011-03-22T00:00:00.000Z","time":null,"speaker":["stefan_scheumann"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["build-management"]},"fields":{"slug":"/talks/2011-03-22-jenkins/","sourceName":"talks"}}},{"node":{"id":"6d1edf0b-d32b-5274-baa2-34c7f27786b8","html":"<p>GWT - Google Web Toolkit (Ingo Körner)</p>","frontmatter":{"title":"GWT - Google Web Toolkit","date":"2011-04-27T00:00:00.000Z","time":null,"speaker":["ingo_koerner"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["web","frontend"]},"fields":{"slug":"/talks/2011-04-27-gwt/","sourceName":"talks"}}},{"node":{"id":"2d5fb6de-57a5-54c0-9485-b2ea5bb67a81","html":"<p>Die OSGi beschreibt eine spezifikation, auf deren Basis Software Modular entwickelt werden kann. Die einzelnen Module\nsind in sich geschlossene Einheiten mit einem klaren Interface, welches einerseits ihre angebotene Funktionalität inf\nForm von Services beschreibt und andererseits die Abhängigkeiten auf Services anderer Module enthält.</p>\n<p>Spring-DM (DM steht für Dynamic Modules) ist eine auf OSGi basierende Plattform, die OSGi mit den Vorteilen von Spring,\nallen voran Dependency Injection, verbindet.</p>\n<p>Im Vortrag wird neben den theoretischen Grundlagen vor allem an praktischen Beispielen inklusive Live-Coding gezeigt,\nwie mit Spring-DM und OSGi lose gekoppelte Module erstellt und diese dynamisch zur Laufzeit getauscht werden können.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_osgi_spring_dm.pdf\">Vortragsfolien</a></li>\n</ul>","frontmatter":{"title":"OSGi mit SpringDM","date":"2011-04-27T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":null},"fields":{"slug":"/talks/2011-04-27-osgi_springdm/","sourceName":"talks"}}},{"node":{"id":"54c98b64-64a8-515b-a02c-8a54c51dcca1","html":"<p>Google Guice - Dependency Injection (DI) und Aspect-Orientierte Programmierung (AOP) von Robert Wirbs</p>","frontmatter":{"title":"Google Guice","date":"2011-05-27T00:00:00.000Z","time":null,"speaker":["robert_wirbs"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["patterns"]},"fields":{"slug":"/talks/2011-05-27-guice/","sourceName":"talks"}}},{"node":{"id":"5c110017-4815-5ac0-a4e3-a75e759080ac","html":"<p>Diesmal stellt Michael Förster Java EE vor. Es wird sowohl Einblicke in Theorie, wie auch wieder praktische Beispiele\ngeben.</p>","frontmatter":{"title":"JavaEE und JBoss","date":"2011-06-29T00:00:00.000Z","time":null,"speaker":["michael_foerster"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["javaee"]},"fields":{"slug":"/talks/2011-06-29-javaee_jboss/","sourceName":"talks"}}},{"node":{"id":"603cc23a-9840-5867-b78d-99fbd489d472","html":"<p>Scala - Vorstellung der Sprache, Demo und das Testen (Stefan Bradl)</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_scala.pdf\">Vortragsfolien</a></li>\n<li><a href=\"/downloads/code_scala.zip\">Beispiel-Code</a></li>\n</ul>","frontmatter":{"title":"Scala","date":"2011-07-27T00:00:00.000Z","time":null,"speaker":["stefan_bradl"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["programmiersprachen"]},"fields":{"slug":"/talks/2011-07-27-scala/","sourceName":"talks"}}},{"node":{"id":"4bb73d33-af61-5eac-a5fa-d075fa8660f5","html":"<p>TestNG (Marcus Döring)</p>","frontmatter":{"title":"TestNG","date":"2011-07-27T00:00:00.000Z","time":null,"speaker":["marcus_doering"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["testen"]},"fields":{"slug":"/talks/2011-07-27-testng/","sourceName":"talks"}}},{"node":{"id":"67828855-f7d8-5d6d-9d90-7c3760bb7705","html":"<p>Das Thema wird diesmal Testen sein. Marko Modsching wird Testpatterns und Best Practices vorstellen</p>","frontmatter":{"title":"Testen - Patterns und Best Practices","date":"2011-08-31T00:00:00.000Z","time":null,"speaker":["marko_modsching"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["testen","patterns"]},"fields":{"slug":"/talks/2011-08-31-testen/","sourceName":"talks"}}},{"node":{"id":"9bcc98b0-826d-5513-b828-008dbf11c915","html":"<p>JDOM- Einlesen, Verändern und Erzeugen von XML-Dokumenten (Mark Ziener)</p>","frontmatter":{"title":"JDOM","date":"2011-09-28T00:00:00.000Z","time":null,"speaker":["mark_ziener"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["xml"]},"fields":{"slug":"/talks/2011-09-28-jdom/","sourceName":"talks"}}},{"node":{"id":"6cca53f4-9edd-55ac-a225-75c94aa0dd8b","html":"<p>Vom Single Sign-On zum sicheren Kanal - Authentifizierung und Autorisierung mit JAAS und JGSS (Mario Reichel)</p>","frontmatter":{"title":"Single Sign-On mit JAAS und JGSS","date":"2011-09-28T00:00:00.000Z","time":null,"speaker":["mario_reichel"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["security"]},"fields":{"slug":"/talks/2011-09-28-single-sign-on/","sourceName":"talks"}}},{"node":{"id":"c40cc73f-d2be-5960-b15f-87e4b39429c8","html":"<p>Mit einem Vortrag und der Programmierung einer Biepsiel-App für Notitzen führte Max Wielsch in die\n<strong>Android-Programmierung</strong> ein. Im Vortrag ging es zunächst um die Motivation, eine App für die Android-Plattform zu\nentwickeln. Darauffolgend wurden die grundlegeneden Konzepte und Systemmerkmale erläutert. Nach der Theorie folgte die\nPraxis. Max Wielsch programmierte Schritt für Schritte eine \"kleine\" Notitz-App wobei die theoretischen Konzepte in der\nPraxis erläutert wurden.</p>\n<p>Die Präsentation und das Beispielprojekt können auf seinem\n<a href=\"http://max-wielsch.blogspot.de/2011/10/android-der-vortrag-in-der-java-user.html\">Blog</a> heruntergeladen werden.</p>","frontmatter":{"title":"Android","date":"2011-10-26T00:00:00.000Z","time":null,"speaker":["max_wielsch"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["mobile","android"]},"fields":{"slug":"/talks/2011-10-26-android/","sourceName":"talks"}}},{"node":{"id":"11771522-730a-5373-b0f8-585c9c4f52c1","html":"<p>Der Vortrag bietet eine Einführung in <strong>JavaServer Faces 2</strong> und Beleuchtet unter anderem folgende Aspekte:</p>\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Facelets\">Facelets</a> als Nachfolger von\n<a href=\"https://en.wikipedia.org/wiki/JavaServer_Pages\">JSP</a></li>\n<li>ManagedBeans</li>\n<li>Scopes und Gültigkeitsbereiche</li>\n<li><a href=\"https://en.wikipedia.org/wiki/Expression_Language\">Expression Language</a> (EL)</li>\n<li>JSF-LiveCycle</li>\n</ul>\n<p>Ausserdem wird kurz <strong>Contexts and Dependency Injection</strong> (CDI) vorgestellt und dessen Kombination mit JSF\nhervorgehoben.</p>\n<p>Diese theoretischen Aspekte werden anschließend anhand eines praktischen Beispiels inklusive Live-Coding gezeigt und\nerklärt.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/jsf_cdi/juggr_jsf_cdi.pdf\">Vortragsfolien</a></li>\n<li><a href=\"https://github.com/juggr/juggr_jsf_cdi\">Code auf github</a></li>\n</ul>","frontmatter":{"title":"JavaServer Faces 2 und CDI","date":"2011-11-30T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","web","javaee","jsf"]},"fields":{"slug":"/talks/2011-11-30-jsf-cdi/","sourceName":"talks"}}},{"node":{"id":"e3831714-860d-5867-9952-89ecfe8b81dd","html":"<p><strong>JPA - Hibernate</strong> von Marko Modsching</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_orm_hibernate.pdf\">Vortragsfolien</a></li>\n<li><a href=\"/downloads/code_hibernate.zip\">Beispiel-Code</a></li>\n</ul>","frontmatter":{"title":"JPA - Hibernate","date":"2012-01-04T00:00:00.000Z","time":null,"speaker":["marko_modsching"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["database","javaee"]},"fields":{"slug":"/talks/2012-01-01-hibernate/","sourceName":"talks"}}},{"node":{"id":"67e2091a-15eb-56f9-bb65-586c4b2a809d","html":"<p>Dieser Vortrag baut auf den Vortrag zur <a href=\"/talks/2011-11-30-jsf-cdi\">\"Einführung in JavaServer Faces 2\"</a> auf. Es werden\nfortgeschrittene Techniken aus dem Bereich JSF vorgestellt:</p>\n<ul>\n<li>Navigation mit JSF</li>\n<li>Templates und Wiederverwendung von Facelets</li>\n<li>Ajax</li>\n<li>PrimeFaces</li>\n</ul>\n<p>Im Bereich CDI wird zunächst das Konzept der CDI-Producer beleuchtet, mit welchem der Entwickler Einfluss auf die\nDependency Injection nehmen kann. Anschließend wird das Design Pattern \"Observer\" mit den Techniken von CDI\nimplementiert und gezeigt, wie damit (im Gegensatz zur klassischen Observer-Implementierung) der Beobachter und die\nbeobachtete Klasse komplett von einander entkoppelt werden können.</p>","frontmatter":{"title":"Advanced JSF und CDI","date":"2012-01-25T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","web","javaee","jsf"]},"fields":{"slug":"/talks/2012-01-25-jsf_cdi_advanced/","sourceName":"talks"}}},{"node":{"id":"7881a4dc-ab76-5124-b9b1-dc13c982a250","html":"<p><strong>Webentwicklung mit Scala</strong> von Stefan Bradl</p>","frontmatter":{"title":"Webentwicklung mit Scala","date":"2012-02-29T00:00:00.000Z","time":null,"speaker":["stefan_bradl"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","web","programmiersprachen"]},"fields":{"slug":"/talks/2012-02-29-scala_webapps/","sourceName":"talks"}}},{"node":{"id":"bd3b256f-6609-52bb-9d05-5a57482e4f42","html":"<p><strong>Webtests mit Selenium</strong> von Marcus Döring</p>","frontmatter":{"title":"Webtests mit Selenium","date":"2012-03-28T00:00:00.000Z","time":null,"speaker":["marcus_doering"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","web","testen"]},"fields":{"slug":"/talks/2012-03-28-webtests/","sourceName":"talks"}}},{"node":{"id":"fa3c70d9-f376-541d-be0b-ca24e0ac6b89","html":"<p><strong>maven</strong> von Thomas Storch</p>\n<p><a href=\"/downloads/juggr_maven.pdf\">Folien</a></p>\n<p><a href=\"/downloads/code_maven.zip\">Beispiel-Code</a></p>","frontmatter":{"title":"Maven","date":"2012-04-25T00:00:00.000Z","time":null,"speaker":["thomas_storch"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["build-management"]},"fields":{"slug":"/talks/2012-04-25-maven/","sourceName":"talks"}}},{"node":{"id":"88119287-b9a3-5745-bd33-a7735cb39b4b","html":"<p>JMonkeyEngine3 und im Allgemeinen 3D-Applikationen in Java von Hans Markwart</p>","frontmatter":{"title":"JMonkeyEngine 3 - 3D-Applikationen in Java","date":"2012-05-30T00:00:00.000Z","time":null,"speaker":["hans_markwart"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend"]},"fields":{"slug":"/talks/2012-05-30-jmonkey-engine3/","sourceName":"talks"}}},{"node":{"id":"5e4ab94f-157d-5292-864d-57606942e1ff","html":"<p>GridGain - ein Java-Framework für Parallel Computing und Data Grid Anwendungen von Mario Reichel</p>","frontmatter":{"title":"GridGain - Parallel Computing und Data Grid Anwendungen","date":"2012-06-27T00:00:00.000Z","time":null,"speaker":["mario_reichel"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["cluster"]},"fields":{"slug":"/talks/2012-06-27-gridgain/","sourceName":"talks"}}},{"node":{"id":"09982d70-f13f-5626-8a14-2d8d92abf724","html":"<p>Selenium/webdriver - In Ergänzung zu der <a href=\"/talks/2012-03-28-webtests/\">Vorstellung von Marcus Döring</a> mit praktischen\nBeispielen von Maik Wagner</p>","frontmatter":{"title":"Selenium/Webdriver in der Praxis","date":"2012-07-25T00:00:00.000Z","time":null,"speaker":["maik_wagner"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["web","frontend","testen"]},"fields":{"slug":"/talks/2012-07-25-selenium_praxis/","sourceName":"talks"}}},{"node":{"id":"c044b319-accb-5fca-8339-9f01293583e6","html":"<p><strong>Manuel Mauky</strong> stellt in seinem Vortrag den zu JavaEE 6 gehörenden Standard <strong>BeanValidation</strong> vor.</p>\n<p>Dabei wird mittels Annotationen im Java-Code bestimmt, welche Werte für bestimmte Felder valide sind, z.B. <code>@NotNull</code>\nfür einen Wert, der nicht <code>null</code> sein darf oder <code>@Size(min=1, max=20)</code> für einen String, der mindestens 1 und maximal 10\nZeichen lang sein darf. Ein Validator kann dann anhand dieser Metainformationen prüfen, ob der Zustand eines Objekts\nvalide ist oder nicht.</p>\n<p>Im Vortrag wird zunächst allgemein auf das Thema Validierung eingegangen und anschließend Beispiele für\nBeanValidation-Annotationen gezeigt. Ebenfalls behandelt wird, wie BeanValidation im Frontend mit JavaServer Faces und\nim Backend mit JPA kombiniert werden kann.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_beanvalidation.pdf\">Vortragsfolien</a></li>\n<li><a href=\"https://github.com/lestard/juggr_BeanValidation\">Beispiel-Code</a></li>\n</ul>","frontmatter":{"title":"JSR-303 BeanValidation","date":"2012-09-26T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["javaee"]},"fields":{"slug":"/talks/2012-09-26-bean_validation/","sourceName":"talks"}}},{"node":{"id":"90157438-0e03-57ef-870f-701aac0b6210","html":"<p>Als Vortragende konnten wir Alexander Casall und Michael Thiele, zwei Mittarbeiter der Saxonia Systems AG aus Dresden\ngewinnen, die zum Thema <strong>JavaFX 2</strong> sprechen werden.</p>\n<p>Sie werden über das neue UI-Framework von Oracle berichten, welches angetreten ist, um das etwas angestaubte Swing\nabzulösen und neuen Schwung in das Thema Java+Desktop zu bringen. Dabei werden sie speziell auf die Touch-Fähigkeiten\nvon JavaFX 2 eingehen und diese an einem großen Touchscreen live vorführen.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li>[Beispielcode]](<a href=\"https://github.com/sialcasa/jfxusergroup\">https://github.com/sialcasa/jfxusergroup</a>)</li>\n</ul>","frontmatter":{"title":"JavaFX 2","date":"2012-11-28T00:00:00.000Z","time":null,"speaker":["alexander_casall","michael_thiele"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","javafx"]},"fields":{"slug":"/talks/2012-11-28-javafx2/","sourceName":"talks"}}},{"node":{"id":"a13fb811-969f-5eb3-91f8-c71970bff046","html":"<p>Dieses Mal dreht sich alles um Roboter. <strong>Erik Jähne</strong> beschäftigt sich in seinem Studium mit <strong>NXT-Robotern von Lego</strong>\nund wird in seinem Vortrag die Programmierung dieser Roboter mit Java vorstellen. Natürlich wird es dabei auch eine\nLive-Vorführung der Roboter geben.</p>\n<p>Videos:</p>\n<ul>\n<li><a href=\"https://www.youtube.com/watch?v=0dzeTUoiY1k\">https://www.youtube.com/watch?v=0dzeTUoiY1k</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=1oIQh48fBDI\">https://www.youtube.com/watch?v=1oIQh48fBDI</a></li>\n</ul>","frontmatter":{"title":"Lego NXT-Roboter mit Java programmieren","date":"2013-03-27T00:00:00.000Z","time":null,"speaker":["erik_jaehne"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["hardware","roboter"]},"fields":{"slug":"/talks/2013-03-27-nxt_lego/","sourceName":"talks"}}},{"node":{"id":"df78a5f7-4e2e-5f4d-83dd-6ad6432ef93e","html":"<p><strong>Sebastian Schmeck</strong> von der Saxonia Systems AG aus Dresden wird in diesem Vortrag die Programmiersprache <strong>Ruby</strong>\nvorstellen und anschließend genauer auf die Implementierung <strong>JRuby</strong> eingehen. Damit lassen sich Ruby-Programme auf der\nJava VM ausführen, was einige konkrete Vorteile gegenüber der Standard-Implementierung bietet.</p>\n<p>Ausserdem wird er zeigen, wie die Integration von Java und Ruby in beiden Richtungen funktioniert, d.h. wie man\nRuby-Code in Java benutzt und wie von Ruby aus auf Java-Klassen zugegriffen werden kann.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_jruby.pdf\">Vortragsfolien</a></li>\n</ul>","frontmatter":{"title":"JRuby - Ruby auf der Java VM","date":"2013-05-29T00:00:00.000Z","time":null,"speaker":["sebastian_schmeck"],"location":"hochschule_campus","virtual":null,"poster":null,"poster_alt":null,"tags":["programmiersprachen"]},"fields":{"slug":"/talks/2013-05-29-jruby/","sourceName":"talks"}}},{"node":{"id":"6cde30c0-930e-5a8f-9a80-e0bfc34878a6","html":"<p>In diesem Vortrag von <strong>Marlene Knoche</strong> geht es um Usability, genauer um so genannte <strong>Persona</strong>. Personas sind Modelle\nvon Usern. Sie personifizieren eine bestimmte (Ziel-)Gruppe von Benutzern einer Software. Ziel ist es, Entwickler und\n(Usability-)Tester in die Lage zuversetzen, sich besser in Nutzer hinein denken zu können.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_personas.pdf\">Vortragsfolien</a></li>\n</ul>","frontmatter":{"title":"Persona - Werkzeug für die GUI-Entwicklung","date":"2013-07-31T00:00:00.000Z","time":null,"speaker":["marlene_knoche"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","softwareentwicklung"]},"fields":{"slug":"/talks/2013-07-31-persona/","sourceName":"talks"}}},{"node":{"id":"fb329b7c-5599-55bf-85c5-54a1a6b821bb","html":"<p>Die Android-Plattform hat sich in den letzten 2 Jahren sehr stark weiterentwickelt. Sie wurde nicht nur um\nFunktionalitäten erweitert, sondern hat seit der Android-Version 4.0 eine attraktive und sehr gut dokumentierte\nDesign-Sprache erhalten. Die Bedeutung eines konsistenten und funktionalen Designs ist damit ein kritischer\nErfolgsfaktor für eine App. Dies ist die Motivation sich intensiver mit dem Thema UI und UX-Design auseinandersetzen. In\neinem Vortrag wird dies zwar auf die Entwicklung von Android-Apps bezogen, jedoch werden auch allgemeine Konzepte\nvorgestellt, die auf das App-Design plattformübergreifend anwendbar sind.</p>","frontmatter":{"title":"Modernes App-Design am Beispiel von Android","date":"2013-10-30T00:00:00.000Z","time":null,"speaker":["max_wielsch"],"location":"hochschule_campus","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","mobile","android"]},"fields":{"slug":"/talks/2013-10-30-app-design/","sourceName":"talks"}}},{"node":{"id":"a8a6dc9d-ed19-56f9-9fd3-8c83531f61d0","html":"<p>Google und Microsoft haben Studien zum Thema \"Ladezeiten von Webseiten\" durchgeführt. Kurzgefasst: Schnelle Websites\nhaben eine bessere User Experience, Nutzer bleiben länger, und auch die Konversionsraten sind besser. Ab einer halben\nSekunde gingen die Umsätze pro Nutzer messbar zurück, ab 2 Sekunden waren es über 4%. Es lohnt sich also, in die\nPerformance einer Webanwendung zu investieren.</p>","frontmatter":{"title":"Performance-Optimierung im Web","date":"2013-11-27T00:00:00.000Z","time":null,"speaker":["maik_wagner"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["web","performance"]},"fields":{"slug":"/talks/2013-11-27-web-performance/","sourceName":"talks"}}},{"node":{"id":"f39e922a-28fe-514b-838c-4b89e4ec981e","html":"<p>Tool-Integration im Softwareentwicklungsprozess ist kein neues Thema. Dennoch gibt es immer noch Bedarf, die Integration\nvon Tools und Systemen zu verbessern. Je nach konkretem Entwicklungsvorgehen bzw. -prozess werden weitere ergänzende\nFunktionalitäten und Daten benötigt, die wenige Tools allein nicht liefern können. Das heißt, es ist notwendig,\nIntegration zwischen Tools und Systemen verschiedener Hersteller zu schaffen, sodass diese so verwendet werden können,\nwie es nötig ist. Ziel ist dabei, Daten und Funktionalitäten unabhängig von konkreten Tools oder Systemen dynamisch\nverwenden zu können. Neue und bestehende Tools und kleine Skripte sollen genau an den Entwicklungsprozess und die\nMenschen in diesem Prozess anpassbar sein. Einmal entwickelte Funktionalität soll frei wiederverwendbar sein. Unter\nanderem für diese Ziele wurde OpenDIP, eine offene Platform für die Integration im Entwicklungsprozess, entworfen. Über\ndie Konzepte und die Realisierung dieser Platform wurden zwei Masterarbeiten und ein Paper\n<a href=\"http://arxiv.org/find/all/1/all:+AND+Max+Wielsch/0/1/0/all/0/1\">http://arxiv.org/find/all/1/all:+AND+Max+Wielsch/0/1/0/all/0/1</a>\ngeschrieben. Im Vortrag wird auf die Motivation und die Verwendung der Platform eingangen, wobei die Architektur\nausgehend von einem Fallbeispiel erläutert wird.</p>","frontmatter":{"title":"Tool-Integration im Softwareentwicklungsprozess","date":"2014-01-29T00:00:00.000Z","time":null,"speaker":["max_wielsch"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["integration","platform","softwareentwicklung"]},"fields":{"slug":"/talks/2014-01-29-opendip/","sourceName":"talks"}}},{"node":{"id":"27050ce5-4d13-504b-90e0-8a4c3f2e6514","html":"<p>Damit Testgetriebene Entwicklung in der Praxis funktionieren kann, müssen sich Tests möglichst einfach und trotzdem\nausdrucksstark schreiben lassen und gut lesbar sein. Auch die (Neben-)Aufgabe von Unittests, eine lebendige\nEntwicklerdokumentation zu bilden, kann nur erfüllt werden, wenn die Tests gut lesbar sind.</p>\n<p>Die klassischen Assertions von JUnit lassen hier teilweise zu wünschen übrig. Neben <code>assertTrue</code> und <code>assertNotNull</code>\nbestehen viele Unittests nur aus unzähligen <code>assertEquals</code>-Anweisungen, was in der Regel sehr weit weg von natürlicher\nSprache ist. Diese Lücke versucht das <strong>Hamcrest</strong>-Projekt zu schließen, welches mittlerweile teilweise in JUnit\neingeflossen ist. Hamcrest ist jedoch ebenfalls nicht unproblematisch und bietet durch seinen Aufbau aus statischen\nMethoden in der Praxis zahlreiche Schwächen und Nachteile.</p>\n<p>Einen moderneren Ansatz verfolgt das Framework <strong>AssertJ</strong> bzw. <strong>FEST-Assert</strong>. Auf den ersten Blick sehen die\nAssertions denen von Hamcrest zwar sehr ähnlich, jedoch wurde für die Implementierung statt statischer Methoden der\nmodernere Ansatz einer Fluent-API gewählt, wodurch sich einige Vorteile ergeben, wie z.B. bessere IDE-Integration.</p>\n<p>Im Vortrag wird das eigentliche Problem und die bisherige Lösung mit Hamcrest gezeigt. Dem wird anschließend das\nFramework <strong>AssertJ</strong> gegenüber gestellt. Anhand von zahlreichen Core-Beispielen soll gezeigt werden, wie einfach sich\nlesbare Unittests formulieren lassen, wenn man die richtigen Werkzeuge zur Hand hat. Anschließend wird ebenfalls darauf\neingegangen, wie mit AssertJ eigene, domänenspezifische Assertions erstellt werden können. Damit kann sich der Anwender\nseine eigenen Werkzeuge erstellen, um in seiner Domäne gut lesbare und ausdrucksstarke Unittests schreiben zu können.</p>","frontmatter":{"title":"Besser lesbare Unittests mit AssertJ","date":"2014-04-02T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["junit","testen"]},"fields":{"slug":"/talks/2014-04-02-assertj/","sourceName":"talks"}}},{"node":{"id":"09dfae71-65f1-52de-81a7-e0746238f502","html":"<p>Hazelcast ist ein vielseitiges Framework zur einfachen Synchronization von Daten, die sich In-Memory innerhalb einer\nApplikation befinden. Damit ist es für Anwendungen gedacht, bei denen eine Synchronization durch eine \"externe\"\nTechnologie wie Datenbanken zu einem erheblichen Performanceverlust führt.</p>\n<p>Durch die Verteilung der Daten auf mehrere Knoten ist es ein gutes Mittel zur horizontalen Skalierbarkeit bei\nSynchronität der Daten innerhalb des Clusters. Zusätzlich lässt sich die Verfügbarkeit/Ausfallsicherheit durch die\nHinzunahme weiterer (Backup-)Knoten steigern.</p>","frontmatter":{"title":"Hazelcast - Synchronisation von In-Memory-Daten","date":"2014-05-28T00:00:00.000Z","time":null,"speaker":["steffen_seidler"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["cluster"]},"fields":{"slug":"/talks/2014-05-28-hazelcast/","sourceName":"talks"}}},{"node":{"id":"bd5b8775-c069-521b-803e-4a62493c8247","html":"<p>Seit April ist die neue Version 8 von Java offiziell verfügbar. Dieses Update ist sicherlich das bedeutendste Update\nseit Java 5, da zahlreiche interessante Neuerungen Einzug in die Sprache und das JDK gehalten haben.</p>\n<p>Die am meisten diskutierte Neuerung stellt sicherlich die Einführung von Lambda-Ausdrücken dar, mit denen Java nun auch\nfunktionale Eigenschaften bekommt.</p>\n<p>Im Vortrag wird <strong>Paul Weinhold</strong> die praktische Anwendung von Lambdas vorstellen und dabei vor allem auch auf die neue\nStreams-API von Java eingehen, da diese ganz besonders von Lambda-Ausdrücken profitiert.</p>\n<p>Paul Weinhold ist Master-Student im Studiengang Informatik an der Hochschule in Görlitz. Daneben arbeitet er als\nWerksstudent bei der Deutschen Bahn AG und setzt dort seit einiger Zeit aktiv die neuen Möglichkeiten von Java 8 ein.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_java8.pdf\">Vortragsfolien</a></li>\n</ul>","frontmatter":{"title":"Java8 - Streams und Lambdas","date":"2014-07-30T00:00:00.000Z","time":null,"speaker":["paul_weinhold"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["java","functional-programming"]},"fields":{"slug":"/talks/2014-07-30-java8-streams/","sourceName":"talks"}}},{"node":{"id":"ded25abd-db1f-5b9b-9cd2-8c905bc15ab0","html":"<p>Solr ist ein mächtiges Werkzeug um strukturierte Dokumente durchsuchbar zu machen. Solr kann als ein Aufsatz für Apache\nLucene verstanden werden und wartet mit zahlreichen Erweiterungen auf.</p>\n<p>Unter Anderem kann Solr in einem Apache Tomcat laufen und kommuniziert über HTTP. Dabei können nicht nur mittels HTTP\nGET Suchanfragen auf den indizierten Datenbestand ausgelöst werden, sondern mittels HTTP POST auch neue Dokumente\nhinzugefügt werden.</p>\n<p>Dabei können verschiedene Datequellen (Filesystem, Datenbanken, REST-Services, ...) angebunden werden, um den\nDatenbestand des Suchindex zu füllen. Dabei besteht ein großer Vorteil bei den vielen Erweiterung bei der Indizierung\nder Daten. Z.B. Silbentrennung, Wortstammbildung, ...</p>\n<p>Zur eigentlichen Suche existiert eine leicht zu erlernende Syntax. Insbesondere lassen sich mehrere Felder der\nstrukturierten Dokumente gleichzeitig abfragen und durch ein Ranking können die Suchergebnisse noch weiter verfeinert\nwerden.</p>","frontmatter":{"title":"Solr - Eine Enterprise-Suchmaschine","date":"2014-09-24T00:00:00.000Z","time":null,"speaker":["steffen_seidler"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["database"]},"fields":{"slug":"/talks/2014-09-24-solr/","sourceName":"talks"}}},{"node":{"id":"5840ef2b-08af-57a6-81b0-7a69c1d1beb0","html":"<p>Infrastructure as Code is one of the important cornerstones of continuous delivery. The concept that infrastructure\nshould be treated as code is really powerful. Server configuration, services, installed packages, relationships with\nother servers etc...should be modeled as code to be automated and have a predictable outcome, removing manual steps\nprone to errors and decreasing the cycle time.</p>\n<p>Spinning up a new virtual environment or a new version of the environment then becomes a matter of executing a script\nthat can create and provision an image or set of images – from the barebone operating system to the complete application\nstack installed and configured.</p>\n<p>This concept is increasingly important today when the number of environments and their instances has gone up by orders\nof magnitudes and the release frequency has moved from monthly to weekly or even daily releases.</p>\n<p>In this session we will showcase a few popular tools used to implement this concept: <code>Vagrant</code>, <code>Puppet</code> and <code>Docker</code>.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/infrastructure_as_code/slides-infrastructure-as-code.html\">Vortragsfolien</a></li>\n<li><a href=\"/downloads/infrastructure_as_code/infrastructure_as_code_demo.zip\">Demos</a></li>\n</ul>","frontmatter":{"title":"Infrastructure as Code","date":"2014-10-29T00:00:00.000Z","time":null,"speaker":["bruno_devic"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["devops"]},"fields":{"slug":"/talks/2014-10-29-infrastructure_as_code/","sourceName":"talks"}}},{"node":{"id":"2fdb9675-dfcf-55b8-899d-8e6d04242b4a","html":"<p>Die meisten Softwareentwickler haben irgendwann einmal <strong>Model-View-Controller</strong> als Design-Pattern gelernt. In der\nPraxis existieren aber viele verschiedene Ansichten darüber, was MVC eigentlich genau bedeutet und wie es implementiert\nwird. Darüber hinaus haben sich mit der Zeit auch neue, eigenständige UI-Design-Patterns entwickelt, die aber oft noch\ngewissen Gemeinsamkeiten mit dem klassischen MVC aufweisen. Dazu gehören z.B. <strong>Model-View-Presenter</strong>,\n<strong>Presentation-Model</strong> und <strong>Model-View-ViewModel</strong>.</p>\n<p>In diesem Vortrag soll zum einen ein Überblick über UI-Design-Patterns gegeben werden, zum anderen aber auch ein\ntieferer Eindruck über die tatsächliche Umsetzung und der praktischen Konsequenzen dieser Patterns gegeben werden. Dabei\nsollen weniger UML-Diagramme als viel mehr Code-Beispiele im Vordergrund stehen. Es wird dabei auch auf Aspekte wie\n<em>Testbarkeit</em>, <em>Koppelung</em> und <em>Wiederverwendung</em> eingegangen.</p>\n<p>Der Vortragende ist Softwareentwickler bei der Saxonia Systems AG und ist dort vor allem im UI-Bereich tätig. Er hat\nErfahrungen gesammelt mit <em>JavaServer-Faces</em>, <em>HTML(5)+JavaScript</em> sowie im Bereich Desktop-Oberflächen mit JavaFX.\nAktuell arbeitet er als Hauptentwickler an dem OpenSource-Framework <a href=\"https://github.com/sialcasa/mvvmFX\">MvvmFX</a>,\nwelches Komponenten zur Umsetzung des Design-Patterns <em>Model-View-ViewModel</em> für JavaFX bereitstellt.</p>\n<ul>\n<li><a href=\"https://github.com/lestard/juggr_model-view-star/raw/master/jug_slides.pdf\">Vortragsfolien</a></li>\n<li><a href=\"https://github.com/lestard/juggr_model-view-star\">Code auf Github</a></li>\n</ul>","frontmatter":{"title":"Model-View-*: UI-Design-Patterns im Detail","date":"2014-12-03T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","patterns"]},"fields":{"slug":"/talks/2014-12-03-model-view-star/","sourceName":"talks"}}},{"node":{"id":"d853656a-6dac-5d38-b25a-c241c13cbadb","html":"<p>Smartphones und Apps sind für viele Menschen mittlerweile unentbehrlich. Nahezu für jeden Aspekt des Alltags und auch in\nder Geschäftswelt gibt es Anwendungen. Bei diesem JUG-Treffen werden wir in einer Praxisveranstaltung den Start eines\nApp-Entwicklungsprojekts mit Android betrachten. Die Veranstaltung richtet sich vor allem auch an\nProgrammier-Einsteiger, die einen Einblick in die Android-App-Entwicklung bekommen wollen.</p>\n<hr>\n<p>These days mobile phones and apps are indispensable to people. Nearly for every aspect of life and also in the business\nworld there are applications. In this JUG meeting we will take a look at how to start an app development project in\npractice. The session is especially addressed to programming beginners who like to get started with Android app\ndevelopment.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_android_programming.pdf\">Vortragsfolien</a></li>\n<li><a href=\"https://github.com/muxmax/JugGrNotesApp\">Beispiel-Code</a></li>\n</ul>","frontmatter":{"title":"Einstieg in die Android-App-Entwicklung","date":"2015-03-25T00:00:00.000Z","time":null,"speaker":["max_wielsch"],"location":"hochschule_campus","virtual":null,"poster":null,"poster_alt":null,"tags":["android","mobile"]},"fields":{"slug":"/talks/2015-03-25-android/","sourceName":"talks"}}},{"node":{"id":"d88d92c2-cf39-5768-b424-1b211f08c8e8","html":"<p>Es wird immer wichtiger WebAnwendungen überwachen zu können, um Probleme frühzeitig zu erkennen und Gegenmaßnahmen\neinleiten zu können. Hierfür wurde MoSKito geschaffen. Ursprünglich wurde es für Parship entwickelt, aber inzwischen ist\nes in ein eigenständiges Projekt auf GitHub ausgegliedert und steht nun allen Interessierten zur Verfügung.</p>\n<p>In dem Vortrag werden wir die einzelnen Komponenten der MoSKito-Toolbox anhand einer simplen Beispiel-Anwendung\nvorstellen. Dazu zählen die Datenerhebung für das Monitoring technischer Auffälligkeiten, die Visualisierung über eine\nintegriertes oder standalone WebUI, zentrale Persistierung zur späteren Auswertung, sowie ein Kontrollzentrum, welches\ndurchaus auch als Wall-Monitor eignet.</p>\n<p>Desweiteren werden wir die einfache Integration, sowie Möglichkeiten zur Erweiterung näher beleuchten. Denn in MoSKito\nkann man nicht nur Informationen technischer Natur sammeln, die für Entwickler relevant sind (Verarbeitungszeiten,\nSystemlast, etc.), sondern auch Daten mit Businessvalue (Verkaufszahlen, etc.). So kann MoSKito auch für Management und\nMarketing interessant sein.</p>","frontmatter":{"title":"MoSKito - Monitoring Framework","date":"2015-01-28T00:00:00.000Z","time":null,"speaker":["steffen_seidler"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["web","monitoring"]},"fields":{"slug":"/talks/2015-01-28-moskito/","sourceName":"talks"}}},{"node":{"id":"1faa8cf7-10f9-54d5-a480-6d2e44896011","html":"<p>Aufbauend auf dem letzten Beitrag der Java User Group Görlitz\n(<a href=\"http://www.jug-gr.de/2015/03/25/android.html\">Einstieg in die Android-App-Entwicklung</a>) soll das Beispiel der Notiz\nApp live weiterentwickelt werden, um Konzepte und deren Umsetzung für die fortgeschrittene Android-Programmierung zu\nzeigen.</p>\n<p>Mit dem Ziel, eine testbare und entkoppelte Applikationsarchitektur zu erreichen wird der Einsatz geeigneter Patterns\nund Frameworks diskutiert.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_advanced_android.pdf\">Vortragsfolien</a></li>\n<li><a href=\"https://github.com/muxmax/JugGrNotesApp\">Beispiel-Code</a></li>\n</ul>","frontmatter":{"title":"Fortgeschrittene Android-Entwicklung","date":"2015-05-27T00:00:00.000Z","time":null,"speaker":["max_wielsch"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["mobile","android"]},"fields":{"slug":"/talks/2015-05-27-advanced-android/","sourceName":"talks"}}},{"node":{"id":"a3c8bbba-0df8-503b-a702-21589e288614","html":"<p>Drools ist ein Business-Rules-Mangement-System, mit dem sich Regelbasierte Systeme entwickeln lassen. Dazu stellt es\neine Domainen-Spezifische Sprache zur Verfügung, mit der Regeln definiert und anschließend durch die Rule-Engine\nverarbeitet werden können.</p>\n<p>Paul Weinhold ist Student im Masterstudiengang Informatik der Hochschule Zittau/Görlitz. Daneben arbeitet er bei der\nDB-Netz AG und setzt dort u.a. auch Drools ein. Im Vortrag stellt er die Technik vor und gibt einen Einblick anhand\npraktischer Beispiele.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_drools.pdf\">Vortragsfolien</a></li>\n</ul>","frontmatter":{"title":"Regelbasierte Systeme mit JBoss Drools","date":"2015-07-29T00:00:00.000Z","time":null,"speaker":["paul_weinhold"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["dsl"]},"fields":{"slug":"/talks/2015-07-29-drools/","sourceName":"talks"}}},{"node":{"id":"eff228ab-8f49-5773-905c-fee144de429f","html":"<p>Das Framework <a href=\"https://github.com/google/guava\">Guava</a> wurde von Google geschaffen, um eine einheitliche und einfach zu\nhandhabende Lösung für verschiedenste alltäglich wiederkehrende Probleme anzubieten. Insbesondere für die Codebasis von\nGoogle selbst. Dabei wurde großen Wert darauf gelegt ältere JDK-Versionen 5+ (ab Release 12 inzwischen JDK 6+) zu\nunterstützen. Damit ist Guava ein Framework, mit dem sich jeder JAVA-Entwickler näher beschäftigen sollte, um sich die\neigene Arbeit zu erleichtern.</p>\n<p>Auch wenn inzwischen einige Features mit JDK 7 (wie bspw. die Klasse Objects) und JDK 8 (wie bspw. Funktionale Ansätze)\nin ähnlicher Form inzwischen auch direkt in JAVA nutzbar sind, lohnt die Verwendung von Guava immernoch. Zudem ist Guava\nnicht als Konkurrenz zu Lösungen des JDKs oder ähnlicher Libaries wie Apache Commons zu verstehen, sondern als\nsymbiotische Ergänzung.</p>\n<p>Zu einer solchen Ergänzung zählt definitiv die umfangreiche Erweiterung der JDK-Collection-Vielfalt um viele weitere\nnützliche Typen zu den Vozügen von Guava. Insbesondere kann der spezielle Ansatz bei deren Verarbeitung immernoch\nVorteile gegenüber Streams bieten. Andersherum lassen viele Dinge in Guava mit Lambdas inzwischen noch komfortabler\nbedienen.</p>\n<p>In dem Vortrag wird ein Überblick über die zahlreichen Möglichkeiten von Guava gegeben. Auch unter dem Gesichtspunkt der\nneuen Möglichkeiten unter JDK 7/8. Die genannte Collection-Erweiterung ist dabei nur ein Bruchteil dessen was Guava\nbietet. (Object- und StringUtils, Orderings, Comparisons, Preconditions, ExceptionHandler, neue Collections und ihr\nHandling, Funktionale Ansätze, Ranges, ReflectionUtils)</p>","frontmatter":{"title":"Guava","date":"2015-09-30T00:00:00.000Z","time":null,"speaker":["steffen_seidler"],"location":"dser_elisabethstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["java"]},"fields":{"slug":"/talks/2015-09-30-guava/","sourceName":"talks"}}},{"node":{"id":"43538367-514c-5009-b9eb-0f730f52bfd9","html":"<p>JavaFX ist die neue Java-Technologie im Desktop-Bereich und somit die Ablösung von Swing. Damit ist es möglich\nJava-Anwendungen für Desktop, Browser und mobile Geräte zu entwickeln. Allerdings bietet Oracle keinen direkten Support\nfür mobile Endgeräte an, sondern überlässt dies der Community.</p>\n<p>In dem Vortrag geht es um den Aktuellen Stand der Entwicklung in diesem Bereich. Was muss gemacht werden, um eine\nJavaFX-Anwendung auf einem Smartphone zum laufen zu bekommen und welche Grenzen hat dieser Ansatz für die Entwicklung\nvon mobilen Anwendungen mit JavaFX.</p>\n<p>Einen weiteren Ansatz verfolgt die Firma <a href=\"http://gluonhq.com/\">Gluon</a> zum Erstellen von mobilen Anwendungen auf JavaFX.\nEine gemeinsame Code-Basis für IOS- und Android-Anwendungen basierend auf JavaFX. Was derzeit damit möglich ist wird\nebenfalls Inhalt des Vortrages sein.</p>\n<p>Abschließend wird unser Ansatz für mobile Anwendungen in JavaFX vorgestellt. Mittels des MVVM-Pattern in Kombination mit\nJavaFX-Ports. Vorgestellt wird der aktuelle Entwicklungsstand mit einer offenen Diskussion über Vor- und Nachteile des\nAnsatzes.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_javafx_on_mobile.pdf\">Vortragsfolien</a></li>\n</ul>","frontmatter":{"title":"JavaFX auf Mobile","date":"2015-11-25T00:00:00.000Z","time":null,"speaker":["stefan_heinze","stefan_barth"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","javafx","mobile","android"]},"fields":{"slug":"/talks/2015-11-25-javafx-mobile/","sourceName":"talks"}}},{"node":{"id":"79835d68-651b-57a2-8c75-042baeba5b30","html":"<p>Mit Java 8 wurden einige Features in die Sprache integriert, die von funktionaler Programmierung inspiriert sind. Im\nVortrag <a href=\"http://www.jug-gr.de/2014/07/30/java8-streams.html\">Java 8: Lambdas und Streams</a> im Juli 2014 hat Paul uns die\ntechnischen Möglichkeiten dazu bereits vorgestellt. Doch ist Java damit nun auch eine Funktionale Sprache? Gibt es\nüberhaupt noch Gründe, andere funktionale Sprachen zu beachten?</p>\n<p>In diesem Vortrag möchten wir tiefer in die Materie der funktionalen Programmierung eintauchen und die Konzepte dieses\nParadigmas betrachten. Wir werden sehen, wie Java-Programmierer von funktionalen Konzepten profitieren können. Dabei\ngehen wir unter anderem auf Dinge wie <em>Rekursion</em>, <em>Pure Funktionen</em>, <em>Immutable Datenstrukturen</em>, <em>Monaden</em> und\n<em>Funktionskomposition</em> ein.</p>\n<p>Wir werden aber auch zeigen, wo die Grenzen von Java liegen und warum wir der Meinung sind, dass Java letztlich doch\nkeine wirklich funktionale Sprache ist und weshalb wir unbedingt empfehlen, sich mit funktionalen Sprachen zu\nbeschäftigen. In diesem Sinne werden wir beim darauf folgenden JUG-Treffen die funktionale Sprache \"Haskell\" vorstellen\nund dabei viele der hier vorgestellten Konzepte wiederfinden. Außerdem werden wir die Haskell-Variante \"Frege\"\nbesprechen, die auch auf der JVM läuft.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_funktionale_programmierung_java.pdf\">Vortragsfolien</a></li>\n</ul>\n<p><strong>Links:</strong></p>\n<ul>\n<li><a href=\"http://sebastian-millies.blogspot.de/2015/09/cartesian-products-with-kleisli.html\">Blog: Kleisli Composition in Java</a></li>\n<li><a href=\"http://techblog.realestate.com.au/how-we-used-category-theory-to-solve-a-problem-in-java/\">Blog: How we used Category Theory to solve a problem in Java</a></li>\n<li><a href=\"http://mvanier.livejournal.com/2897.html?nojs=1\">Blog: Ausführliche Erklärung und Herleitung des Y-Combinators in Scheme</a></li>\n<li><a href=\"http://sebastian-millies.blogspot.de/2013/09/the-y-combinator.html\">Blog: Y-Combinator in Java</a></li>\n</ul>","frontmatter":{"title":"Funktionale Programmierung mit Java","date":"2016-01-27T00:00:00.000Z","time":null,"speaker":["manuel_mauky","max_wielsch"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"627917ce-c50f-59e9-98d8-4897b4f220c5","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d86838","images":{"fallback":{"src":"/static/1c76b19b6896e55dd13bb48cd2313b20/b6707/plakat_2016_01.png","srcSet":"/static/1c76b19b6896e55dd13bb48cd2313b20/0e3b9/plakat_2016_01.png 750w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/7aaf4/plakat_2016_01.png 1080w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/006ba/plakat_2016_01.png 1366w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/b6707/plakat_2016_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/1c76b19b6896e55dd13bb48cd2313b20/ebc34/plakat_2016_01.webp 750w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/47da9/plakat_2016_01.webp 1080w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/659f9/plakat_2016_01.webp 1366w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/c86cf/plakat_2016_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen trägt einen Anzug und grinst. Er hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das griechische Zeichen Lambda zu sehen.","tags":["java","functional-programming"]},"fields":{"slug":"/talks/2016-01-27-functional_java/","sourceName":"talks"}}},{"node":{"id":"7d996009-4040-5330-a46c-5877cc5668af","html":"<p>Haskell ist eine funktionale Programmiersprache, die das Paradigma der funktionalen Programmierung so konsequent\numsetzt, wie kaum eine andere Sprache. Beispielsweise sind Funktionen in Haskell standardmäßig \"pure\", können also keine\nSeiteneffekte besitzen, was durch das statische Typ-System sichergestellt wird. Eine weitere Eigenschaft, die Haskell\nvon den meisten anderen Sprachen unterscheidet, ist die nicht-strikte Auswertung von Ausdrücken, was im allgemeinen\ndurch Lazy-Evaluation umgesetzt wird. Dadurch kann Haskell beispielsweise ohne weiteres mit unendlichen Listen umgehen,\nohne dafür besondere Sprachkonstrukte zu benötigen.</p>\n<p>Haskell selbst läuft nicht auf der Java-VM, allerdings existiert mit der Programmiersprache \"Frege\" eine\nHaskell-Variante, die zu Java-Sourcecode kompiliert. Damit steht nun auch auf der JVM eine rein funktionale Sprache\nbereit.</p>","frontmatter":{"title":"Haskell und Frege","date":"2016-03-30T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"5c9d56a7-72a3-5960-83a9-42dc599be063","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#588888","images":{"fallback":{"src":"/static/64acc764c3779735c4ad382e9f9c0e6e/5ffd7/plakat_2016_03.png","srcSet":"/static/64acc764c3779735c4ad382e9f9c0e6e/5ffd7/plakat_2016_03.png 744w","sizes":"100vw"},"sources":[{"srcSet":"/static/64acc764c3779735c4ad382e9f9c0e6e/874d1/plakat_2016_03.webp 744w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4139784946236558}}},"poster_alt":"Poster: Jürgen sitzt auf einem Sessel und liest ein Buch. Er trägt eine Lese-Brille und schaut konzentriert aus. Auf dem Buch ist das Haskell-Logo, ein Lambda-Symbol, zusehen","tags":["programmiersprachen","functional-programming","non-jvm-language"]},"fields":{"slug":"/talks/2016-03-30-haskell_frege/","sourceName":"talks"}}},{"node":{"id":"4dc84ec4-23f6-5438-a2e6-b5944dc868c9","html":"<p>In vielen Software-Projekten wissen häufig nicht nur Anwender sondern auch Entwickler nicht, warum sich ihre Anwendung\nverhält wie sie sich eben verhält. Wieso ist meine Anwendung so langsam? An Performance-Tests wurde während der\nEntwicklung nicht gespart. Was kann also das Problem sein? Abhilfe kann in solchen Fällen ein Application Performance\nManagement Werkzeug schaffen, wie beispielsweise das Open Source-Werkzeug inspectIT.</p>\n<p>inspectIT ist ein leistungsstarkes Werkzeug, dass dazu dient, die Leistung von Software-Anwendungen sowohl zu überwachen\nals auch zu analysieren. Mithilfe verschiedener Sensoren erfasst inspectIT Informationen über Abfragen des Endnutzers\nund die Verarbeitung im Business-Layer bis hin zum Backend. Mit der Nutzung von inspectIT sind Informationen über die\nSoftware-Anwendung verfügbar, um jedes potenzielle Funktions-, Leistungs- oder Zuverlässigkeitsproblem mühelos\nanalysieren zu können. Dieser Vortrag wird das Open Source Projekt inspectIT vorstellen und einen einfachen Einstieg in\ndie Performance-Analyse mit inspectIT bieten.</p>\n<p>Website: <a href=\"http://inspectit.rocks\">http://inspectit.rocks</a></p>\n<p>Git: <a href=\"https://github.com/inspectIT/inspectIT\">https://github.com/inspectIT/inspectIT</a></p>\n<p>Dokumentation:\n<a href=\"https://inspectit-performance.atlassian.net/wiki/display/HOME/inspectIT+Home\">https://inspectit-performance.atlassian.net/wiki/display/HOME/inspectIT+Home</a></p>","frontmatter":{"title":"Performance-Analyse mit inspectIT","date":"2016-05-25T00:00:00.000Z","time":null,"speaker":["mario_mann"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"34708531-529f-5d8b-9a4f-7e69705d60db","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#880818","images":{"fallback":{"src":"/static/db7f178be40d0c331569338538d31bac/5ffd7/plakat_2016_05.png","srcSet":"/static/db7f178be40d0c331569338538d31bac/5ffd7/plakat_2016_05.png 744w","sizes":"100vw"},"sources":[{"srcSet":"/static/db7f178be40d0c331569338538d31bac/874d1/plakat_2016_05.webp 744w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4139784946236558}}},"poster_alt":"Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert.","tags":["performance","monitoring"]},"fields":{"slug":"/talks/2016-05-25-performance-analyse-inspectit/","sourceName":"talks"}}},{"node":{"id":"e14cd50a-435a-5855-ae06-c0d1eb30d8af","html":"<p>Softwareentwicklungsprojekte leben vom Einsatz von modernen Werkzeugen, die die Projektbeteiligten bei ihrer Arbeit\nunterstützen. JavaFX-Entwicklungsprojekte haben hier eine besondere Herausforderung. Die „neue“ Technologie stellt eine\nHerausforderung an die Testwerkzeuge, speziell an die Werkzeuge zur Testautomatisierung. Viele Hersteller werben mit\nJavaFX-Unterstützung, aber nicht immer wird JavaFX vollständig unterstützt.</p>\n<p>Der Vortrag geht den Fragen nach:</p>\n<ul>\n<li>Welche Kategorien von Testwerkzeugen für JavaFX gibt es?</li>\n<li>Welche Unterschiede gibt es zwischen den Testwerkzeugen?</li>\n<li>Wie werden die Testwerkzeuge in meine Toolkette eingebunden?</li>\n</ul>","frontmatter":{"title":"Testwerkzeuge für JavaFX","date":"2016-07-27T00:00:00.000Z","time":null,"speaker":["kay_grebenstein"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["javafx","testen"]},"fields":{"slug":"/talks/2016-07-27-testwerkzeuge_javafx/","sourceName":"talks"}}},{"node":{"id":"a4cfc466-b5f6-5b10-be7e-13c92d3ab2f7","html":"<p>Im Vortrag von Daniel Sernow wird die Kommunikation in Software-Projekten und mit den Projekt-Partnern thematisiert. Er\nwird uns an seinen Erfahrungen und Erkenntnissen aus langjähriger Praxis im Projektgeschäft teilhaben lassen. Für\nEntwickler dürfte dabei vor allem auch die Perspektive der Qualitätssicherung interessante neue Einblicke bereithalten.</p>\n<p>Eine Besonderheit: Wir werden eine neuen Veranstaltungsort einweihen - siehe unten.</p>","frontmatter":{"title":"Kommunikationskultur im Softwareentwicklungsprozess","date":"2016-09-21T00:00:00.000Z","time":null,"speaker":["daniel_sernow"],"location":"sqs","virtual":null,"poster":{"childImageSharp":{"id":"d76f475f-a8c8-5319-96d2-a1474885f516","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#788818","images":{"fallback":{"src":"/static/614b8174b903933ed9c7392c29039be7/b6707/plakat_2016_09.png","srcSet":"/static/614b8174b903933ed9c7392c29039be7/0e3b9/plakat_2016_09.png 750w,\n/static/614b8174b903933ed9c7392c29039be7/7aaf4/plakat_2016_09.png 1080w,\n/static/614b8174b903933ed9c7392c29039be7/006ba/plakat_2016_09.png 1366w,\n/static/614b8174b903933ed9c7392c29039be7/b6707/plakat_2016_09.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/614b8174b903933ed9c7392c29039be7/ebc34/plakat_2016_09.webp 750w,\n/static/614b8174b903933ed9c7392c29039be7/47da9/plakat_2016_09.webp 1080w,\n/static/614b8174b903933ed9c7392c29039be7/659f9/plakat_2016_09.webp 1366w,\n/static/614b8174b903933ed9c7392c29039be7/c86cf/plakat_2016_09.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen benutzt ein uraltes Telefon mit separatem Hörer und Mikrofon. Er hält sich den kabelgebundenen Hörer ans Ohr und hält das Mikrofon vor sich in der Hand","tags":["testen","softwareentwicklung"]},"fields":{"slug":"/talks/2016-09-21-kommunikationskultur/","sourceName":"talks"}}},{"node":{"id":"c67796c2-6477-5658-a163-1de4870f548e","html":"<p>Wie funktioniert die virtuelle Maschine? Wo kommt der Just-in-Time-Compiler ins Spiel und was hat es mit InvokeDynamic\nauf sich? Diese und weitere Fragen beantwortet Michael Wiedeking bei einem Blick unter die Haube der Java Virtual\nMachine.</p>","frontmatter":{"title":"Inside JVM","date":"2016-11-30T00:00:00.000Z","time":null,"speaker":["michael_wiedeking"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"d5ac0466-71cb-5950-ad4c-692645dec780","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#185818","images":{"fallback":{"src":"/static/df12c15a6674e50adc8ef8427b49c6e7/84817/plakat_2016_11.png","srcSet":"/static/df12c15a6674e50adc8ef8427b49c6e7/0e3b9/plakat_2016_11.png 750w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/e5839/plakat_2016_11.png 1080w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/006ba/plakat_2016_11.png 1366w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/84817/plakat_2016_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/df12c15a6674e50adc8ef8427b49c6e7/ebc34/plakat_2016_11.webp 750w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/0671f/plakat_2016_11.webp 1080w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/659f9/plakat_2016_11.webp 1366w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/e2c0d/plakat_2016_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und trägt eine Weihnachtsmütze zu seinem üblichen Anzug. Er hält einen Teller mit Keksen vor sich.","tags":["java","jvm"]},"fields":{"slug":"/talks/2016-11-30-inside_jvm/","sourceName":"talks"}}},{"node":{"id":"cf0f1947-1449-5df5-b546-aa31d25046a7","html":"<p>Unit Testing in Java - dafür ist JUnit das Werkzeug der Wahl. Die letzte Version JUnit 4 tat dabei viele Jahre ihre\nDienste und wurde kontinuierlich weiterentwickelt, stieß allerdings nun doch an ihre Grenzen. Der Nachfolger JUnit 5 ist\neine komplette Neuentwicklung und steht kurz vor dem Release. Wir wollen uns ansehen, welche Neuerungen JUnit 5 mit sich\nbringt und was es beim Umstieg zu beachten gilt.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"http://jug-gr.de/downloads/juggr_jUnit5.pdf\">Folien zum Vortrag</a></li>\n</ul>","frontmatter":{"title":"JUnit 5","date":"2017-01-25T00:00:00.000Z","time":null,"speaker":["stefan_bley"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"389f1a05-558e-58a8-a8f2-8f0f783fbb5f","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#3868c8","images":{"fallback":{"src":"/static/c46109cdd380f6d96989746b9b268b59/84817/plakat_2017_01.png","srcSet":"/static/c46109cdd380f6d96989746b9b268b59/0e3b9/plakat_2017_01.png 750w,\n/static/c46109cdd380f6d96989746b9b268b59/e5839/plakat_2017_01.png 1080w,\n/static/c46109cdd380f6d96989746b9b268b59/006ba/plakat_2017_01.png 1366w,\n/static/c46109cdd380f6d96989746b9b268b59/84817/plakat_2017_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/c46109cdd380f6d96989746b9b268b59/ebc34/plakat_2017_01.webp 750w,\n/static/c46109cdd380f6d96989746b9b268b59/0671f/plakat_2017_01.webp 1080w,\n/static/c46109cdd380f6d96989746b9b268b59/659f9/plakat_2017_01.webp 1366w,\n/static/c46109cdd380f6d96989746b9b268b59/e2c0d/plakat_2017_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt einen roten Bauarbeiter-Helm zu seinem Anzug. In der Hand hält er ein Klemmbrett mit dem Logo von JUnit 5 darauf","tags":["testen","junit"]},"fields":{"slug":"/talks/2017-01-25-junit5/","sourceName":"talks"}}},{"node":{"id":"f009504d-3327-52e9-8948-6cd4d3ba952e","html":"<p>CSS ist verwirrend, entbehrt jeglicher Logik und rendert mein HTML völlig willkürlich. Ziel von CSS ist es, den Alltag\neines Webentwicklers möglichst qualvoll zu gestalten. FALSCH Mit Live-Coding gehen wir CSS auf den Grund und werden\neinige Aha-Effekte erzielen. Dafür erklären wir Grundlagen, welche vielen Entwicklern unbekannt sind, und zeigen den\nMehrwert von Präprozessoren. Um euch dann vollends von CSS zu überzeugen, haben wir als Special Guest CSS3 eingeladen.\nDa wird selbst JavaScript blass vor Neid.</p>","frontmatter":{"title":"CSS, Aha-Effekte und Perspektiven","date":"2017-02-22T00:00:00.000Z","time":null,"speaker":["uwe_manteuffel"],"location":"hochschule_obermarkt","virtual":null,"poster":{"childImageSharp":{"id":"f98f07d3-05f0-5b44-a8c4-f59df52e978d","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#087868","images":{"fallback":{"src":"/static/17a163b60d0c34cbe1f0cc72f8380225/84817/plakat_2017_02.png","srcSet":"/static/17a163b60d0c34cbe1f0cc72f8380225/0e3b9/plakat_2017_02.png 750w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/e5839/plakat_2017_02.png 1080w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/006ba/plakat_2017_02.png 1366w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/84817/plakat_2017_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/17a163b60d0c34cbe1f0cc72f8380225/ebc34/plakat_2017_02.webp 750w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/0671f/plakat_2017_02.webp 1080w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/659f9/plakat_2017_02.webp 1366w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/e2c0d/plakat_2017_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt eine Künstler-Mütze zu seinem Anzug. In der Hand hält er eine Maler-Palette und einen Pinsel.","tags":["frontend","web"]},"fields":{"slug":"/talks/2017-02-22-css/","sourceName":"talks"}}},{"node":{"id":"9ba71f6c-f0dd-5c4e-b70f-3d7ac1ec19ca","html":"<p>Nach der Ausdehnung vom JDK 9 Feature-Complete-Status, begann die Fehlerbereinigung, mit allen notwendigen Vorarbeiten,\num den finalen Release-Candidate für das JDK 9 bereitzustellen. Der Schwerpunkt vom JDK 9 liegt bei der neuen\nPlattformmodularisierung mit dem Projekt Jigsaw. Über die JDK-Enhancement-Vorschläge JEP 200 (Modulares JDK), JEP 201\n(Modularer Source-Code) und JEP 220 (Modulare Laufzeit-Images) gelangen die technischen Vorschläge ins JDK 9. Der JSR\n376 (Java Platform Module System) schafft die Grundlage für die Referenzimplementierung vom OpenJDK Projekt Jigsaw.\nDiese Veränderungen lassen es zu, mit dem JDK 9 die gewünschte technische Paketierung von ausgewählter\nJava-Funktionalität selbst zu bestimmen. Das Projekt Jigsaw hat die primäre Aufgabe, das Design und die Implementierung\neines Standard-Modulsystems für die Java-Plattform und für das JDK 9 bereitzustellen. Dabei soll die durchgängige,\ndynamische und einfache Anpassbarkeit der Java-SE-Plattform & dem JDK, auch für kleine Endgeräte berücksichtigt werden,\nsowie die Verbesserung von Sicherheit und Wartbarkeit von Java-SE-Plattform-Implementierungen, speziell vom JDK,\nverwirklicht werden. Im Vortrag werden Demo-Beispiele gezeigt, die eine Erstellung von individueller Java Runtime mit\nAnwendung anhand der JDK 9-Werkzeuge verdeutlichen. Die geplante Verfügbarkeit vom JDK 9 ist für Ende Juli 2017\nvorgesehen.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"http://jug-gr.de/downloads/juggr_JDK_9_Java_Platform_Module_System.pdf\">Folien zum Vortrag</a></li>\n</ul>","frontmatter":{"title":"JDK 9","date":"2017-04-25T00:00:00.000Z","time":null,"speaker":["wolfgang_weigend"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"2573407c-9387-55d4-81ac-f02dffdbfe14","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#38a838","images":{"fallback":{"src":"/static/68885bd1bc71b7c02926be143e289b72/84817/plakat_2017_04.png","srcSet":"/static/68885bd1bc71b7c02926be143e289b72/0e3b9/plakat_2017_04.png 750w,\n/static/68885bd1bc71b7c02926be143e289b72/e5839/plakat_2017_04.png 1080w,\n/static/68885bd1bc71b7c02926be143e289b72/006ba/plakat_2017_04.png 1366w,\n/static/68885bd1bc71b7c02926be143e289b72/84817/plakat_2017_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/68885bd1bc71b7c02926be143e289b72/ebc34/plakat_2017_04.webp 750w,\n/static/68885bd1bc71b7c02926be143e289b72/0671f/plakat_2017_04.webp 1080w,\n/static/68885bd1bc71b7c02926be143e289b72/659f9/plakat_2017_04.webp 1366w,\n/static/68885bd1bc71b7c02926be143e289b72/e2c0d/plakat_2017_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt am Tisch vor einem Puzzle. Er überlegt, wo er das nächste Puzzle-Teil einsetzen soll. Man erkennt bereits, dass das Puzzle ein Java-Duke darstellt, das Maskottchen von Java.","tags":["java","jdk"]},"fields":{"slug":"/talks/2017-04-26-jdk9/","sourceName":"talks"}}},{"node":{"id":"d7528a15-3b10-587c-9543-5c372945763a","html":"<p>Mit Angular bietet Google ein komponenten-basiertes Webframework an, welches den Anspruch erhebt, die Anforderungen an\nzeitgemäße Softwareentwicklung ganzheitlich zu unterstützen.</p>\n<p>Seit dem Release von Angular 2 war es für gestandene Java Entwickler noch nie so einfach in die Webentwicklung\neinzusteigen. Mit Klassen, Dependency Injection, Annotations und Data-Binding bietet Angular dem versierten Desktop\nEntwickler ein vertrautes Umfeld, in dem man sich schnell zurecht findet.</p>\n<p>In dieser Veranstaltung möchte ich am lebenden Beispiel zeigen, wie es sich heutzutage anfühlt eine Webanwendung,\nkonkret mit Angular 2, zu erstellen.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"http://jug-gr.de/downloads/juggr_pretalk_astrofotografie.pdf\">Folien zum Lightning-Talk</a></li>\n<li><a href=\"http://jug-gr.de/downloads/juggr_angular.pdf\">Folien zum Vortrag</a></li>\n</ul>","frontmatter":{"title":"Angular 2 für Java Entwickler","date":"2017-03-22T00:00:00.000Z","time":null,"speaker":["sven_hoffmann"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"eddd4dc5-4156-509b-bf5c-e09b0c5c330e","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#084858","images":{"fallback":{"src":"/static/402904640aadf345c0f4e136c31ec42a/84817/plakat_2017_03.png","srcSet":"/static/402904640aadf345c0f4e136c31ec42a/0e3b9/plakat_2017_03.png 750w,\n/static/402904640aadf345c0f4e136c31ec42a/e5839/plakat_2017_03.png 1080w,\n/static/402904640aadf345c0f4e136c31ec42a/006ba/plakat_2017_03.png 1366w,\n/static/402904640aadf345c0f4e136c31ec42a/84817/plakat_2017_03.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/402904640aadf345c0f4e136c31ec42a/ebc34/plakat_2017_03.webp 750w,\n/static/402904640aadf345c0f4e136c31ec42a/0671f/plakat_2017_03.webp 1080w,\n/static/402904640aadf345c0f4e136c31ec42a/659f9/plakat_2017_03.webp 1366w,\n/static/402904640aadf345c0f4e136c31ec42a/e2c0d/plakat_2017_03.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen schaut ernst. Er trägt ein Schwert in der Hand und ein Schild mit dem einem großen A darauf. Das Schild ist eine Referenz auf das Angular-Logo, welches ebenfalls wie ein Schild aussieht.","tags":["frontend","web","javascript"]},"fields":{"slug":"/talks/2017-03-22-angular/","sourceName":"talks"}}},{"node":{"id":"935f30df-c07e-5cfa-9188-3564b4e0fab7","html":"<p>React ist eine von Facebook entwickelte JavaScript-Bibliothek zur Entwicklung von UI-Komponenten. Dabei macht React\neiniges anders als andere Web-Frameworks, beispielsweise der Verzicht auf Templates und die Limitierung auf\nunidirektionalen Datenfluss. Interessant ist auch der vollständig deklarative Ansatz, der es u.a. ermöglicht,\nUI-Komponenten als Funktionen zu entwickeln.</p>\n<p>React ist aber nicht auf den Browser beschränkt: Mit React-Native können darüber hinaus auf die gleiche Art und Weise\nauch native Mobile-Apps entwickelt werden. Aber anders die meisten HTML5-Hybrid-Frameworks ist bei React-Native kein\nHTML im Spiel. Stattdessen werden tatsächlich native UI-Controls gerendert.</p>\n<p>In diesem Vortrag möchte ich React und auch React-Native vorstellen und mittels Live-Coding einen Eindruck von dem\nFramework vermitteln. Dabei möchte ich aber auch auf die Ansätze aus der funktionalen Programmierung eingehen, die React\nmeines Erachtens so besonders machen.</p>","frontmatter":{"title":"React und React-Native: Functional UI Development für Browser und mobile Endgeräte","date":"2017-05-31T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"6b8717ce-a995-58f6-82e5-62fb5ef3cca9","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#58c8d8","images":{"fallback":{"src":"/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/a2ae3/plakat_2017_05.png","srcSet":"/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/f1722/plakat_2017_05.png 750w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/3e58d/plakat_2017_05.png 1080w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/8b6fa/plakat_2017_05.png 1366w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/a2ae3/plakat_2017_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/55786/plakat_2017_05.webp 750w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/8631a/plakat_2017_05.webp 1080w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/9b1f9/plakat_2017_05.webp 1366w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/fc882/plakat_2017_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4119791666666668}}},"poster_alt":"Poster: Jürgen hält einen Kasten in der Hand, welcher oben und unten Trichter-Öffnungen besitzt. In den oberen Trichter gibt er zwei Dokumente hinein, während beim unteren Trichter das Bild einer Webseite herausfällt. Auf der Box ist das Logo von React zu sehen.","tags":["frontend","javascript","web","mobile","functional-programming"]},"fields":{"slug":"/talks/2017-05-31-react/","sourceName":"talks"}}},{"node":{"id":"29eb8b61-615f-5f82-afc0-25abdc540af7","html":"<p>Amazon Alexa ist eine Smart-Home-Technologie, die vor allem als Lösung für Spracherkennung bekannt ist. Für Entwickler\nist dabei vor allem die Möglichkeit interessant, eigene Anwendungen mit Spracherkennung erstellen zu können.</p>\n<p>Andre und Maik beleuchten in ihrem Vortrag die Theorie hinter Spracherkennung und zeigen am Beispiel von Amazon Alexa,\nwie damit Anwendungen gebaut werden können.</p>","frontmatter":{"title":"Spracherkennung mit Amazon Alexa","date":"2017-08-30T00:00:00.000Z","time":null,"speaker":["andre_tepper","maik_wagner"],"location":"dser_elisabethstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["ki"]},"fields":{"slug":"/talks/2017-08-30-alexa/","sourceName":"talks"}}},{"node":{"id":"fd607630-d7dd-503a-8da0-25a963df4df3","html":"<p>Kaum haben wir uns von dem klassischen Monolithen und der zugehörigen Ablaufumgebung namens Application Server,\nzugunsten von Microservices und Embedded Runtimes, verabschiedet, taucht am Horizont mit Serverless Applications bzw.\nArchitectures schon die nächste Evolutionsstufe auf. Was bitte ist das jetzt schon wieder? Und wer braucht so etwas? Die\nSession zeigt, wie sich dank BaaS, FaaS und einiger anderer Akronyme, Mobile und Enterpriese Anwendungen implementieren\nlassen - ganz ohne Server! Ganz ohne? Naja, fast.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"https://www.dropbox.com/s/nrt9jb5mtwkxh2s/se_serverless.pdf\">Folien zum Vortrag</a></li>\n</ul>\n<hr>\n<p>Bei bei diesem Treffen verlosen wir unter den Teilnehmern ein Tutorial von\n<a href=\"https://tutorials.entwickler.de/\">https://tutorials.entwickler.de/</a>. Mit freundlicher Unterstützung durch <strong>Software &\nSupport Media GmbH</strong>.</p>","frontmatter":{"title":"Serverless Application - Who the heck needs a Server?","date":"2017-10-25T00:00:00.000Z","time":null,"speaker":["lars_roewekamp"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"754076b2-57c3-5796-89f2-711200e78c58","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#389858","images":{"fallback":{"src":"/static/2d68f12104a5e2d317ff8ac24a6467cc/b2ce9/plakat_2017_10.png","srcSet":"/static/2d68f12104a5e2d317ff8ac24a6467cc/b2ce9/plakat_2017_10.png 661w","sizes":"100vw"},"sources":[{"srcSet":"/static/2d68f12104a5e2d317ff8ac24a6467cc/fa5c8/plakat_2017_10.webp 661w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145234493192134}}},"poster_alt":"Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand.","tags":["architektur","serverless"]},"fields":{"slug":"/talks/2017-10-25-serverless/","sourceName":"talks"}}},{"node":{"id":"92f30cfa-20d5-5aba-8db4-e6e1de091225","html":"<p>Im letzten Jahr waren die Panama Papers in aller Munde, die Journalisten der Süddeutschen Zeitung und des ICIJ\nuntersuchten und publizierten die breite Nutzung von Briefkastenfirmen durch Politiker, Geschäftsleute, Banken usw. Für\ndie Untersuchung des größten Leaks einer Geldwäschefirma wurde unter anderem auch Neo4j genutzt. Heute werde ich\ndemonstrieren, wie solche Daten in einem Graph modelliert, importiert und abgefragt werden können. Da die Informationen\nöffentlich verfügbar sind, kann jetzt jeder zum Journalisten werden.</p>","frontmatter":{"title":"Neo4j: Panama Papers","date":"2017-11-29T00:00:00.000Z","time":null,"speaker":["michael_hunger"],"location":"sqs","virtual":null,"poster":{"childImageSharp":{"id":"0d8148d9-9587-5da3-aaf0-f92c5603d344","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#587828","images":{"fallback":{"src":"/static/b722dd1b2e5bde00c9706fb3bb19bd30/84817/plakat_2017_11.png","srcSet":"/static/b722dd1b2e5bde00c9706fb3bb19bd30/0e3b9/plakat_2017_11.png 750w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/e5839/plakat_2017_11.png 1080w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/006ba/plakat_2017_11.png 1366w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/84817/plakat_2017_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/b722dd1b2e5bde00c9706fb3bb19bd30/ebc34/plakat_2017_11.webp 750w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/0671f/plakat_2017_11.webp 1080w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/659f9/plakat_2017_11.webp 1366w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/e2c0d/plakat_2017_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt im Sessel mit seiner Lesebrille und liest ein Buch. Auf dem Buch ist der Neo4J-Schriftzug zu lesen und darunter der Titel 'Graf Datenbankula' als Anspielung auf Graf Drakula. Entsprechend sieht man bei Jurgen spitze Schneidezähne, wie bei einem Vampir.","tags":["database"]},"fields":{"slug":"/talks/2017-11-29-neo4j/","sourceName":"talks"}}},{"node":{"id":"259289d0-862c-5044-bdb1-38c8d853780d","html":"<p>Beim Bauen monolithischer Systeme nutzen Entwicklerteams eine Reihe typischer Muster um die Interaktion verschiedener\nSystemteile zu implementieren. Behält man diese Interaktionsmuster bei, während man ein System in verschiedene aufteilt,\nergeben sich oft große Komplexität und architektonische Nachteile, die oft die ursprüngliche Idee, die hinter der\nAufteilung stand, konterkarieren.</p>\n<p>Der Vortrag betrachtet ein konkretes Beispiel von Modulinteraktion in einem monolithischen System und identifiziert die\nProblemstellungen die sich ergeben, wenn man dieses System in exakt dem gleichen Interaktionsstil aufteilt. Danach wird\neine alternative Implementierungsstrategie für das monolithische System diskutiert, die die Modularität des\nUrsprungssystems stark verbessert und im Falle einer Aufteilung in unabhängige Teilsysteme zu einer besseren Architektur\nführt.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"https://speakerdeck.com/olivergierke/refactoring-to-a-system-of-systems\">Folien zum Vortrag</a></li>\n</ul>","frontmatter":{"title":"Refactoring to a System of Systems","date":"2018-01-31T00:00:00.000Z","time":null,"speaker":["oliver_drotbohm"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"9685adbf-d27b-5f98-934a-54d7dc3fcdb8","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#383898","images":{"fallback":{"src":"/static/88afeee4b9b4d069f5896633d252a8d6/242cd/plakat_2018_01.png","srcSet":"/static/88afeee4b9b4d069f5896633d252a8d6/0e3b9/plakat_2018_01.png 750w,\n/static/88afeee4b9b4d069f5896633d252a8d6/e5839/plakat_2018_01.png 1080w,\n/static/88afeee4b9b4d069f5896633d252a8d6/242cd/plakat_2018_01.png 1241w","sizes":"100vw"},"sources":[{"srcSet":"/static/88afeee4b9b4d069f5896633d252a8d6/ebc34/plakat_2018_01.webp 750w,\n/static/88afeee4b9b4d069f5896633d252a8d6/0671f/plakat_2018_01.webp 1080w,\n/static/88afeee4b9b4d069f5896633d252a8d6/cbc2f/plakat_2018_01.webp 1241w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4141821112006447}}},"poster_alt":"Poster: Wir sehen Jürgen über die Schulter, wie er einen Bauplan in der Hand hält und mit einer Schere in kleinere Stücke zerschneidet.","tags":["architektur"]},"fields":{"slug":"/talks/2018-01-31-system_of_systems/","sourceName":"talks"}}},{"node":{"id":"67f5c805-4443-51af-9f87-0a9aff577dce","html":"<p>Die SAP Cloud Platform (SCP) beschreibt ein „Platform as a Service“ (PaaS) Angebot der SAP. Mit der SCP liefert SAP\nsowohl die Entwicklungsumgebung als auch die Laufzeitumgebung zur Realisierung kundenindividueller Erweiterungen von\nCloud- und On-Premise-Lösungen (z.B. SAP S/4HANA). Basierend auf der In-Memory-Plattform SAP HANA stellt die SCP eine\nVielzahl an Datenbank- und Cloud-Services zur Verfügung, welche das PaaS Angebot erweitern und die Integration von SAP-\nund Non-SAP-Lösungen ermöglichen. Im Vortrag wird illustriert, wie die Verbindung aus einer Java EE Applikation zu einem\nSAP On-Premise System hergestellt und dessen Funktionalität in der Cloud genutzt wird.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"https://github.com/juggr/juggr.github.io/blob/master/downloads/juggr_java_auf_sap_cloud.pdf\">Folien zum Vortrag</a></li>\n</ul>","frontmatter":{"title":"Entwicklung von Java Applikationen auf der SAP Cloud Platform","date":"2018-02-28T00:00:00.000Z","time":null,"speaker":["jens_leuschner","mariusz_zienkiewicz"],"location":"cideon","virtual":null,"poster":{"childImageSharp":{"id":"65d7329c-3fb6-5a77-8b25-3984a599f9e8","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#78b8b8","images":{"fallback":{"src":"/static/55c9a31f3c453bcd2592f54f307655df/84817/plakat_2018_02.png","srcSet":"/static/55c9a31f3c453bcd2592f54f307655df/0e3b9/plakat_2018_02.png 750w,\n/static/55c9a31f3c453bcd2592f54f307655df/e5839/plakat_2018_02.png 1080w,\n/static/55c9a31f3c453bcd2592f54f307655df/006ba/plakat_2018_02.png 1366w,\n/static/55c9a31f3c453bcd2592f54f307655df/84817/plakat_2018_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/55c9a31f3c453bcd2592f54f307655df/ebc34/plakat_2018_02.webp 750w,\n/static/55c9a31f3c453bcd2592f54f307655df/0671f/plakat_2018_02.webp 1080w,\n/static/55c9a31f3c453bcd2592f54f307655df/659f9/plakat_2018_02.webp 1366w,\n/static/55c9a31f3c453bcd2592f54f307655df/e2c0d/plakat_2018_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hält einige kleine Programm-Fenster in der Hand. Er hebt die Programme in eine Wolke, die sich hinter ihm befindet. Die Wolke sieht aus wie das Cloud-Symbol.","tags":["cloud"]},"fields":{"slug":"/talks/2018-02-28-java_auf_sap_cloud/","sourceName":"talks"}}},{"node":{"id":"dad0ee9f-ea34-5ce1-b7fe-a0e45b09e845","html":"<p>Während in einer klassischen Konzern-IT Standards und Blaupausen für immer gleiche Anwendungsarchitekturen sorgen,\nbetonen Microservice-Ansätze die technologische Freiheit. Zwei extreme Spielarten der Ausgestaltung von Makro- und\nMikroarchitektur. In diesem Vortrag lernt Ihr neben dem Konzept selbst auch die auf Eure Ziele abgestimmte Richtung, die\nIhr in dieser Fragestellung einschlagen solltet. Wie sieht in Eurem Kontext die Balance aus -- was gebt Ihr für alle\nElemente Eurer Anwendung(slandschaft) vor, wo lasst Ihr bewusst Spielraum? Und gibt es auch noch etwas dazwischen? Zu\ndiesem Zweck passen wir organisatorische und technologische Trends wie 2-Speed/Bimodale Architekturen, Cloud und\nDomänenorientierung in das Entwurfsdoppel Makro und Mikro ein.</p>","frontmatter":{"title":"Mikro- vs. Makroarchitektur – Spielraum und Spielregeln","date":"2018-03-20T00:00:00.000Z","time":null,"speaker":["stefan_zoerner"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"96d1873a-e218-5bea-9d77-8dc2e42dbbc6","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#082868","images":{"fallback":{"src":"/static/6067d1db118af9c9218894cda3ecec37/84817/plakat_2018_03.png","srcSet":"/static/6067d1db118af9c9218894cda3ecec37/0e3b9/plakat_2018_03.png 750w,\n/static/6067d1db118af9c9218894cda3ecec37/e5839/plakat_2018_03.png 1080w,\n/static/6067d1db118af9c9218894cda3ecec37/006ba/plakat_2018_03.png 1366w,\n/static/6067d1db118af9c9218894cda3ecec37/84817/plakat_2018_03.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/6067d1db118af9c9218894cda3ecec37/ebc34/plakat_2018_03.webp 750w,\n/static/6067d1db118af9c9218894cda3ecec37/0671f/plakat_2018_03.webp 1080w,\n/static/6067d1db118af9c9218894cda3ecec37/659f9/plakat_2018_03.webp 1366w,\n/static/6067d1db118af9c9218894cda3ecec37/e2c0d/plakat_2018_03.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen freut sich und hält einen Bauplan in der Hand.","tags":["architektur"]},"fields":{"slug":"/talks/2018-03-20-mikro_vs_makroarchitektur/","sourceName":"talks"}}},{"node":{"id":"bba11502-e73b-5c5e-9ce7-f4102b1daed5","html":"<p>Die RESTful-Architektur ist eine etablierte Möglichkeit, Schnittstellen zwischen Client und Server zu gestalten. Dies\nbringt allerdings einige Nachteile mit sich. Als Beispiel können hier die hohe Anzahl an benötigten Requests sowie die\nnur unvollständige Dokumentation der Schnittstelle genannt werden. Mit GraphQL entwickelte Facebook eine alternative\nAbfragesprache, welche die genannten Nachteile beseitigen sollte. Dabei wird eine Abfrage ähnlich der Struktur der\nJSON-Syntax an den Server übermittelt, welcher die gewünschten Daten mit nur einer Antwort zur Verfügung stellt.</p>\n<p>Im Vortrag wird GraphQL anhand von Beispielen vorgestellt und dabei sowohl die Client- als auch Serverseite betrachtet.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"https://docs.google.com/presentation/d/1WQEpOns5tpV-u5VixhJYCfIV_1TJXmCWgfqQ28_oZms/edit?usp=sharing\">Folien zum Vortrag</a></li>\n<li><a href=\"https://github.com/StevieSteven/graphql-example\">Code auf Github</a></li>\n</ul>","frontmatter":{"title":"GraphQL","date":"2018-05-30T00:00:00.000Z","time":null,"speaker":["stephan_strehler"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"90e1be0b-07fd-5977-ad85-c716671424c1","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e838a8","images":{"fallback":{"src":"/static/70801d1cf0778b63b022c58e167483bf/84817/plakat_2018_05.png","srcSet":"/static/70801d1cf0778b63b022c58e167483bf/b8e70/plakat_2018_05.png 750w,\n/static/70801d1cf0778b63b022c58e167483bf/e5839/plakat_2018_05.png 1080w,\n/static/70801d1cf0778b63b022c58e167483bf/f51d5/plakat_2018_05.png 1366w,\n/static/70801d1cf0778b63b022c58e167483bf/84817/plakat_2018_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/70801d1cf0778b63b022c58e167483bf/e5d6f/plakat_2018_05.webp 750w,\n/static/70801d1cf0778b63b022c58e167483bf/0671f/plakat_2018_05.webp 1080w,\n/static/70801d1cf0778b63b022c58e167483bf/7e884/plakat_2018_05.webp 1366w,\n/static/70801d1cf0778b63b022c58e167483bf/e2c0d/plakat_2018_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das GraphQL-Logo zu sehen.","tags":["programmiersprachen","web","architektur"]},"fields":{"slug":"/talks/2018-05-30-graphql/","sourceName":"talks"}}},{"node":{"id":"f17a3451-b9a5-5b42-b740-3c15fe9268f5","html":"<p>Unveränderliche Datenstrukturen sind ein wichtiges Werkzeug der funktionalen Programmierung. Aber auch abseits dessen\nkönnen Immutables ungemein nützlich sein: Richtig angewandt erhöhen sie die Verständlichkeit des Codes, da\nEntwicklerInnen nicht mehr auf die mühsame Suche gehen müssen, an welcher Stelle ein Objekt möglicherweise ungewollt\nverändert wurde. Darüber hinaus sind Immutables inhärent Threadsafe und können auch hier die Nachvollziehbarkeit des\nCodes erhöhen.</p>\n<p>Da Java als Sprache aber keine besondere Unterstützung für Immutables mitbringt, müssen EntwicklerInnen auf Patterns und\nBibliotheken zurückgreifen, um in den Genuss von unveränderlichen Datenstrukturen zu kommen. Denn natürlich müssen auch\nin funktionalen Programmen letztlich Veränderungen der Daten abgebildet werden und dafür bedarf es geeigneter\nUnterstützung.</p>\n<p>Im Vortrag möchte ich neben einer grundsätzlichen Einführung in die Thematik auch einige dieser Techniken vorstellen und\nihre Vor- und Nachteile besprechen.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"https://docs.google.com/presentation/d/1xKfrXV5XY7NBdpdlHapW6-88vtN9ASdjmEDtGEAWGpk/edit?usp=sharing\">Folien zum Vortrag</a></li>\n</ul>","frontmatter":{"title":"Immutable Data - Unveränderliche Daten im Griff","date":"2018-06-27T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"314ba704-f1f4-5d2c-8535-b32da028a3c9","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#780838","images":{"fallback":{"src":"/static/1fae33eb72f57d492a22e010e53219f1/84817/plakat_2018_06.png","srcSet":"/static/1fae33eb72f57d492a22e010e53219f1/b8e70/plakat_2018_06.png 750w,\n/static/1fae33eb72f57d492a22e010e53219f1/e5839/plakat_2018_06.png 1080w,\n/static/1fae33eb72f57d492a22e010e53219f1/f51d5/plakat_2018_06.png 1366w,\n/static/1fae33eb72f57d492a22e010e53219f1/84817/plakat_2018_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/1fae33eb72f57d492a22e010e53219f1/e5d6f/plakat_2018_06.webp 750w,\n/static/1fae33eb72f57d492a22e010e53219f1/0671f/plakat_2018_06.webp 1080w,\n/static/1fae33eb72f57d492a22e010e53219f1/7e884/plakat_2018_06.webp 1366w,\n/static/1fae33eb72f57d492a22e010e53219f1/e2c0d/plakat_2018_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen steht vor einem großen Steinblock, der fast aussieht wie ein Grabstein. Auf dem Stein sind lauter Nullen und Einsen eingraviert. Er hält einen Hammer und Meißel in der Hand.","tags":["programmiersprachen","functional-programming"]},"fields":{"slug":"/talks/2018-06-27-immutable-data/","sourceName":"talks"}}},{"node":{"id":"1b2f3079-33fa-52a7-8f63-17ed40feb17e","html":"<p>Die Ankündigung der Unterstützung von Kotlin für die Android-Entwicklung auf der Google I/O Keynote 2017 bewirkte\nspontan kräftigen Applaus. Kotlin ist nur eine weitere Programmiersprache für die JVM. Warum also bewirkt die\nverhältnismäßig dröge Ankündigung zur Unterstützung einer JVM-Sprache solche Begeisterung? Was ist das Besondere an\nKotlin gegenüber Java? Der Vortrag gibt einen ersten allgemeinen Einblick in die Sprachfeatures von Kotlin und gibt\nKotlin-Neulingen die Möglichkeit, sich selbst einen Eindruck über die Sprache zu verschaffen.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"https://gaerfield.github.io/2018-04-26_Kotlin_jug-gr/\">Folien zum Vortrag</a></li>\n<li><a href=\"https://github.com/gaerfield/2018-04-26_Kotlin_jug-gr\">Code auf Github</a></li>\n</ul>","frontmatter":{"title":"Kotlin","date":"2018-04-25T00:00:00.000Z","time":null,"speaker":["tobias_blaschke"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"1a259f6b-01d1-58d9-9813-e4fb56a34153","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d8b808","images":{"fallback":{"src":"/static/7425eb2154d8ac0def6b6a91b1bc7b2d/84817/plakat_2018_04.png","srcSet":"/static/7425eb2154d8ac0def6b6a91b1bc7b2d/0e3b9/plakat_2018_04.png 750w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/e5839/plakat_2018_04.png 1080w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/006ba/plakat_2018_04.png 1366w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/84817/plakat_2018_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/7425eb2154d8ac0def6b6a91b1bc7b2d/ebc34/plakat_2018_04.webp 750w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/0671f/plakat_2018_04.webp 1080w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/659f9/plakat_2018_04.webp 1366w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/e2c0d/plakat_2018_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hält einen Globus in der Hand und platziert eine kleine Fahne an die Stelle der russischen Insel 'Kotlin'. Er trägt eine russische Fell-Mütze","tags":["programmiersprachen"]},"fields":{"slug":"/talks/2018-04-25-kotlin/","sourceName":"talks"}}},{"node":{"id":"f3a5b0e9-0351-58c1-a827-a5f39196ddee","html":"<p>Spätestens seit Java 8 gibt es monadische Typen in Java. Aber was bedeutet das eigentlich? Was sind die Eigenschaften,\ndie Monaden ausmachen? Und wo liegen unsere Schwierigkeiten beim Verständnis von Monaden? Dieser Vortrag beschreibt, was\neine Monade ist und wie wir eine monadische Transaktion nutzen können, um in domänenspezifischer Sprache mit einer\nDatenbank zu reden. Hierbei bauen wir monadische Transaktionen in ein vorhandenes Repository ein. Weiter beleuchten wir\ndie Vor- und Nachteile dieses Ansatzes und diskutieren die Unterstützung von Monaden in Java. Voraussetzung sind erste\nErfahrungen mit funktionaler Programmierung und Lambdas.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"http://jug-gr.de/downloads/juggr_refactoring_towards_monadic_transactions.pdf\">Folien zum Vortrag</a></li>\n</ul>","frontmatter":{"title":"Monadische Transaktionen","date":"2018-11-23T00:00:00.000Z","time":null,"speaker":["gregor_trefs"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"918002c9-e393-5b8d-a2d6-ee73c1735383","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#680838","images":{"fallback":{"src":"/static/d29473cce93e3ade3231fd7ea7b0188e/84817/plakat_2018_11.png","srcSet":"/static/d29473cce93e3ade3231fd7ea7b0188e/b8e70/plakat_2018_11.png 750w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/e5839/plakat_2018_11.png 1080w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/f51d5/plakat_2018_11.png 1366w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/84817/plakat_2018_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/d29473cce93e3ade3231fd7ea7b0188e/e5d6f/plakat_2018_11.webp 750w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/0671f/plakat_2018_11.webp 1080w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/7e884/plakat_2018_11.webp 1366w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/e2c0d/plakat_2018_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und hält ein Tablett in der Hand. Auf dem Tablett steht eine durchsichtige Flasche mit gelber Limo darin. Auf dem Etikett steht 'Li-Monade' geschrieben.","tags":["functional-programming"]},"fields":{"slug":"/talks/2018-11-23-monadische_transaktionen/","sourceName":"talks"}}},{"node":{"id":"6c6f82f3-26da-59ee-a8b6-8c178256b6b7","html":"<p>Anstelle über Microservices, NO-SQL Lösungen oder Container-Management zu reden werden im Workshop Bestandteile des\nStandard Java API vorgestellt. Diese Java Features helfen jedem Entwickler eine wartbare und zukunftssichere Anwendung\nzu entwickeln, egal ob mit Spring, JavaFX oder JavaEE. Verschiedene Sprach-Features und Konzepte der Standard Java APIs\nwerden genauer unter die Lupe genommen und deren sinnvoller Einsatz anhand von Beispielen gezeigt. Hierdurch werden\nunter anderem folgende Fragen beantwortet: Wie funktionieren eigentlich Annotations? Wie entwickle ich Plug-In\nFunktionalität ohne auf OSGI zurückgreifen zu müssen? Wie gehe ich am besten mit NullPointerExceptions um? Wie schreibe\nich nebenläufigen Code der trotzdem wartbar ist?</p>","frontmatter":{"title":"Java APIs - the missing manual","date":"2019-01-31T00:00:00.000Z","time":null,"speaker":["hendrik_ebbers"],"location":"cideon","virtual":null,"poster":{"childImageSharp":{"id":"8509bc59-0ad5-5d24-87e3-f253d53d68b2","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#3858b8","images":{"fallback":{"src":"/static/8c4759d0cca5ff005992863b4cbbfd0c/84817/plakat_2019_01.png","srcSet":"/static/8c4759d0cca5ff005992863b4cbbfd0c/b8e70/plakat_2019_01.png 750w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/e5839/plakat_2019_01.png 1080w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/f51d5/plakat_2019_01.png 1366w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/84817/plakat_2019_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/8c4759d0cca5ff005992863b4cbbfd0c/e5d6f/plakat_2019_01.webp 750w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/0671f/plakat_2019_01.webp 1080w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/7e884/plakat_2019_01.webp 1366w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/e2c0d/plakat_2019_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt mit seiner Lesebrille in seinem Sessel und liest ein Buch. Auf dem Buchrücken steht 'Javadoc'","tags":["java"]},"fields":{"slug":"/talks/2019-01-31_java_apis_missing_manual/","sourceName":"talks"}}},{"node":{"id":"f37a3185-cf74-5401-9461-328751a5a63e","html":"<p>Java Reflections sind ein Feature der Java Sprache und werden von der JVM für das interne Handling von Klassen, Feldern\nund Methoden verwendet. Intern werden darüber Methodenaufrufe, Zugriffsrechte wie public/privat oder seit Java 9 auch\ndie Modulexporte geregelt.</p>\n<p>Dieses Feature kann man sich in der normalen Java Umgebung zu Nutze machen, um auf alle Informationen einer Klasse\nzuzugreifen. So ist es möglich, auf deren Methoden und Felder zuzugreifen, selbst wenn diese privat sind. Felder können\nüberschreiben, Template-Parameter in Feldern und Methoden angezeigt, sowie auch Annotationen der Klasse, Methoden und\nFelder gelesen werden. Am Beispiel eines abstrakten Klassen-Editors werden diese Möglichkeiten in dem Vortrag näher\nbetrachtet.</p>","frontmatter":{"title":"Java Reflection: Classes behind the scenes","date":"2019-02-27T00:00:00.000Z","time":null,"speaker":["erik_jaehne"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"b2cb5256-0c61-5e8b-8a34-23f74562f16f","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#78b8b8","images":{"fallback":{"src":"/static/15923e5b77de857597a70091dfe03bd5/84817/plakat_2019_02.png","srcSet":"/static/15923e5b77de857597a70091dfe03bd5/b8e70/plakat_2019_02.png 750w,\n/static/15923e5b77de857597a70091dfe03bd5/e5839/plakat_2019_02.png 1080w,\n/static/15923e5b77de857597a70091dfe03bd5/f51d5/plakat_2019_02.png 1366w,\n/static/15923e5b77de857597a70091dfe03bd5/84817/plakat_2019_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/15923e5b77de857597a70091dfe03bd5/e5d6f/plakat_2019_02.webp 750w,\n/static/15923e5b77de857597a70091dfe03bd5/0671f/plakat_2019_02.webp 1080w,\n/static/15923e5b77de857597a70091dfe03bd5/7e884/plakat_2019_02.webp 1366w,\n/static/15923e5b77de857597a70091dfe03bd5/e2c0d/plakat_2019_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand.","tags":["java"]},"fields":{"slug":"/talks/2019-02-27_reflection/","sourceName":"talks"}}},{"node":{"id":"dd2fc902-b2b3-5256-b24b-e09f17f45415","html":"<p>Die Website der JUG Görlitz läuft fast <em>Serverless</em>. Natürlich muss ein Webserver Dateien ausliefern aber ansonsten sind\nkeine Datenbank, Applicationserver, PHP oder sonstige aktive Serverkomponenten im Einsatz. Stattdessen sind alle Inhalte\nals Markdown-Textdateien in einem <a href=\"https://github.com/juggr/juggr.github.io\">Git-Repository</a> abgelegt (dieser Talk\nbeispielsweise\n<a href=\"https://github.com/juggr/juggr.github.io/blob/source/content/talks/2019-03-27-static-site-generators.md\">hier</a>). Ein so\ngenannter \"Static-Site-Generator\" generiert daraus HTML-, CSS- und JavaScript-Dateien, die nur noch von einem ganz\nnormalen HTTP-Server ausgeliefert werden müssen. Dieses Vorgehen vereinfacht das Hosting, beschleunigt Website-Aufrufe\nund minimiert die Angriffsfläche des Servers.</p>\n<p>Im Vortrag wird das Konzept von Static-Site-Generators erklärt und die möglichen Einsatzgebiete beschrieben. Mit dem\nTool <a href=\"https://www.gatsbyjs.org/\">Gatsby</a> werden wir eine einfache Blog-Website bauen. Am Beispiel der JUG-Website wird\naber auch gezeigt, wie komplexere Daten-Modelle mit mehreren Entitäten (<a href=\"/talks\">Vorträge</a>, <a href=\"/speakers\">Speaker</a>,\n<a href=\"/locations\">Veranstaltungsorte</a>, <a href=\"/tags\">Tags</a>) umgesetzt werden können. Die technische Grundlage von Gatsby stellt\n<a href=\"/talks/2017-05-31-react\">React</a> für Templates und <a href=\"/talks/2018-05-30-graphql\">GraphQL</a> für die Daten-Organisation dar.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"https://docs.google.com/presentation/d/1YtvQDv-VwHDlmTsF-B6_9NfJ4GYfmdyBZLGsNo4_BRM/edit?usp=sharing\">Folien zum Vortrag</a></li>\n</ul>","frontmatter":{"title":"Static-Site-Generators","date":"2019-03-27T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"bffb7b05-0e58-5922-92df-21ce241ccd84","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#a8c868","images":{"fallback":{"src":"/static/a69cadfbb400620dadfb89d178c1c8db/a6b6d/plakat_2019_03.png","srcSet":"/static/a69cadfbb400620dadfb89d178c1c8db/0e3b9/plakat_2019_03.png 750w,\n/static/a69cadfbb400620dadfb89d178c1c8db/7aaf4/plakat_2019_03.png 1080w,\n/static/a69cadfbb400620dadfb89d178c1c8db/a6b6d/plakat_2019_03.png 1240w","sizes":"100vw"},"sources":[{"srcSet":"/static/a69cadfbb400620dadfb89d178c1c8db/ebc34/plakat_2019_03.webp 750w,\n/static/a69cadfbb400620dadfb89d178c1c8db/47da9/plakat_2019_03.webp 1080w,\n/static/a69cadfbb400620dadfb89d178c1c8db/5c55f/plakat_2019_03.webp 1240w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.414516129032258}}},"poster_alt":"Poster: Jürgen hält einen Kasten in der Hand mit jeweils einem Trichter oben und unten. Oben gibt er zwei Dokumente hinein und unten fällt das Bild einer Webseite heraus. Auf dem Kasten ist das Logo von Gatsbyjs zu sehen.","tags":["web","javascript"]},"fields":{"slug":"/talks/2019-03-27-static-site-generators/","sourceName":"talks"}}},{"node":{"id":"9a7e9567-b7fe-59cd-90fe-aec93c90f2af","html":"<p>Mit dem JDK-Enhancement-Proposal (JEP 322) wird die zeitbasierte Java-Release-Versionierung definiert, die auf dem\naktuellen Java SE Version-String-Schema basiert und die Namensgebung für die kommenden Versionen der Java SE Plattform\nund vom JDK vorgibt. Seit dem Jahr 2018 erscheinen die künftigen Java-Feature-Releases alle 6 Monate. Das JDK 11 wurde\nals Long-Term-Support-Release (LTS-Release) im September 2018 veröffentlicht und nach sechs Monaten folgte das OpenJDK\n12 im März 2019. Mit dem zeitlichen Abstand von sechs Monaten bekommen die Entwickler wesentlich schneller neue\nJava-Funktionsmerkmale als dies mit dem bisherigen Dreijahreszyklus der Fall war. Zwischen den\nOpenJDK/JDK-Feature-Releases sind zwei Updates geplant, bei denen es um die Wartung und Bugfixes geht, die wie gewohnt,\njeweils im Januar, April, Juli und Oktober eines Jahres als Java Critical Patch Update erscheinen werden. Die Planung\nsieht vor, jeweils alle drei Jahre ein weiteres Java-LTS-Release zu veröffentlichen, damit der Anwendungsbetrieb eine\nstabile und ausgereifte Java-Basis bekommt, die mit der nachfolgenden Versionierung $FEATURE.$INTERIM.$UPDATE.$PATCH\ngekennzeichnet wird. Im Vortrag werden Beispiele zum Version-String besprochen, sowie Empfehlungen diskutiert, wie die\nkünftige Java-Strategie mit dem OpenJDK, Oracle JDK (LTS) und der neuen Java SE Subscription (Support) für die\nEntwickler und für den Anwendungsbetrieb aussehen soll. Zudem wird die Weiterentwicklung der OpenJFX/JavaFX\nUI-Technologie mit den Aktivitäten der Developer-Community dargestellt.</p>","frontmatter":{"title":"It's a JDK jungle out there - oder wie es mit den neuen Java-Versionen geordnet weitergeht","date":"2019-04-24T00:00:00.000Z","time":null,"speaker":["wolfgang_weigend"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"e335d1a1-3789-5e42-9670-a3e1c361eadc","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/32de550f9e63747cb85192fa0598ae2c/b6707/plakat_2019_04.png","srcSet":"/static/32de550f9e63747cb85192fa0598ae2c/0e3b9/plakat_2019_04.png 750w,\n/static/32de550f9e63747cb85192fa0598ae2c/7aaf4/plakat_2019_04.png 1080w,\n/static/32de550f9e63747cb85192fa0598ae2c/006ba/plakat_2019_04.png 1366w,\n/static/32de550f9e63747cb85192fa0598ae2c/b6707/plakat_2019_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/32de550f9e63747cb85192fa0598ae2c/ebc34/plakat_2019_04.webp 750w,\n/static/32de550f9e63747cb85192fa0598ae2c/47da9/plakat_2019_04.webp 1080w,\n/static/32de550f9e63747cb85192fa0598ae2c/659f9/plakat_2019_04.webp 1366w,\n/static/32de550f9e63747cb85192fa0598ae2c/c86cf/plakat_2019_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen hält eine Schriftrolle mit offiziellen Siegel in der Hand und liest wie ein mittelalterlicher Herold daraus vor. Wir sehen leider nicht den Text auf der Schriftrolle.","tags":["java","jdk"]},"fields":{"slug":"/talks/2019-04-24_jdk_jungle/","sourceName":"talks"}}},{"node":{"id":"a5f7b4d5-03e6-588d-9778-62b4b8c44286","html":"<p>Der Vortrag erläutert zunächst die Grundlagen der Standards OAuth 2.0 und OpenID-Connect und geht danach auf den Einsatz\ndieser Standards mittels Keycloak ein. Dabei wird anhand einer Beispielanwendung (React, Spring Boot) gezeigt, wie man\nKeycloak in seine Anwendung einbinden kann.</p>","frontmatter":{"title":"OAuth 2.0/OpenIDConnect mit Keycloak","date":"2019-05-29T00:00:00.000Z","time":null,"speaker":["denny_israel"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"cb4beaed-8514-5a8a-8dfe-7bec12fbdd27","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#386898","images":{"fallback":{"src":"/static/eaf6c5845a5ab5a40e0dd634a7eaed23/b6707/plakat_2019_05.png","srcSet":"/static/eaf6c5845a5ab5a40e0dd634a7eaed23/0e3b9/plakat_2019_05.png 750w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/7aaf4/plakat_2019_05.png 1080w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/006ba/plakat_2019_05.png 1366w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/b6707/plakat_2019_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/eaf6c5845a5ab5a40e0dd634a7eaed23/ebc34/plakat_2019_05.webp 750w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/47da9/plakat_2019_05.webp 1080w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/659f9/plakat_2019_05.webp 1366w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/c86cf/plakat_2019_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten.","tags":["java","security"]},"fields":{"slug":"/talks/2019-05-29-oauth/","sourceName":"talks"}}},{"node":{"id":"6895717e-291c-581d-8fef-3b5e73bc8369","html":"<p>HashMap und ArrayList kennt jeder, na klar. Aber wann stellen diese eigentlich die richtige Wahl dar? Und vor allem:\nWann nicht? Das Collections Framework enthält zahlreiche, teils recht spezialisierte Implementierungen. Doch viele\nEntwickler kennen nur einen kleinen Teil davon. Schon mal was von EnumSet oder WeakHashMap gehört? Und was ist der\nUnterschied zwischen ConcurrentSkipListMap und ConcurrentHashMap? Für jeden Java-Entwickler ist es wichtig, die Stärken\nund Schwächen der einzelnen Implementierungen zu kennen. Dieser Vortrag diskutiert Details wie Threadsicherheit,\nLaufzeitverhalten und sinnvolle Initialisierung anhand einiger ausgewählter Collection-Klassen.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_java_collections.pdf\">Folien zum Vortrag</a></li>\n</ul>","frontmatter":{"title":"Wie gut kennst Du das Collections Framework?","date":"2019-06-26T00:00:00.000Z","time":null,"speaker":["thilo_frotscher"],"location":"cideon","virtual":null,"poster":{"childImageSharp":{"id":"ecc9b098-2be1-50e1-87d8-48488a256061","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#389838","images":{"fallback":{"src":"/static/359c95f2d624a1b8d7167b6ff2c5340c/b6707/plakat_2019_06.png","srcSet":"/static/359c95f2d624a1b8d7167b6ff2c5340c/0e3b9/plakat_2019_06.png 750w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/7aaf4/plakat_2019_06.png 1080w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/006ba/plakat_2019_06.png 1366w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/b6707/plakat_2019_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/359c95f2d624a1b8d7167b6ff2c5340c/ebc34/plakat_2019_06.webp 750w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/47da9/plakat_2019_06.webp 1080w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/659f9/plakat_2019_06.webp 1366w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/c86cf/plakat_2019_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen trägt eine Sonnenbrille und ein buntes Hemd mit Blumen darauf. Er hält sich die Hand ans Kinn und grinst, so als würde er gerade einen Plan schmieden. An seinem Hemd hängt ein Schild mit der Aufschrift 'Sommer Collection'.","tags":["java"]},"fields":{"slug":"/talks/2019-06-26-collection-framework/","sourceName":"talks"}}},{"node":{"id":"a0f32bfb-f9fa-5c9c-a70d-ffd93be7d859","html":"<p>Hattest du auch schon mal das Problem, dass du deine eigenen komplizierten und unleserlichen Testfälle nicht mehr\nverstanden hast? Wir kennen das Problem und zeigen euch mögliche Lösungen.</p>","frontmatter":{"title":"Advanced BDD Tests","date":"2019-11-28T00:00:00.000Z","time":null,"speaker":["maik_wagner"],"location":"tallence","virtual":null,"poster":{"childImageSharp":{"id":"6f443280-7e6e-5951-ab2a-0815064e81b4","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d86868","images":{"fallback":{"src":"/static/c5e4690e979964e9c44af61d883856f8/b6707/plakat_2019_11.png","srcSet":"/static/c5e4690e979964e9c44af61d883856f8/0e3b9/plakat_2019_11.png 750w,\n/static/c5e4690e979964e9c44af61d883856f8/7aaf4/plakat_2019_11.png 1080w,\n/static/c5e4690e979964e9c44af61d883856f8/006ba/plakat_2019_11.png 1366w,\n/static/c5e4690e979964e9c44af61d883856f8/b6707/plakat_2019_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/c5e4690e979964e9c44af61d883856f8/ebc34/plakat_2019_11.webp 750w,\n/static/c5e4690e979964e9c44af61d883856f8/47da9/plakat_2019_11.webp 1080w,\n/static/c5e4690e979964e9c44af61d883856f8/659f9/plakat_2019_11.webp 1366w,\n/static/c5e4690e979964e9c44af61d883856f8/c86cf/plakat_2019_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier zusehen ist. Auf dem Blatt steht 'Testplan' oben und darunter sind drei Checkboxen mit angedeuteten Textzeilen daneben.","tags":["java","testen"]},"fields":{"slug":"/talks/2019-11-28-advanced-bdd-tests/","sourceName":"talks"}}},{"node":{"id":"c7067e06-b5be-50ec-83d2-9ea30dc14640","html":"<p>\"Create Apps, Not the Platform\" - Cloud Foundry verspricht, dass sich Entwicker voll und ganz auf die\nAnwendungsentwicklung fokussieren können, anstatt einen erheblichen Teil ihrer Zeit auf Infrastruktur, Deployment usw.\nverwenden zu müssen. Was ist Cloud Foundry überhaupt? Und hält sie, was sie verspricht?</p>","frontmatter":{"title":"Innovationsmotor Cloud Foundry!?","date":"2020-01-29T00:00:00.000Z","time":null,"speaker":["simon_roloff"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"abe046a7-29a3-5710-9b2b-cf4a5ff0c1a2","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#583898","images":{"fallback":{"src":"/static/5ef746b99e05db0762f96d0a28f278da/84817/plakat_2020-01.png","srcSet":"/static/5ef746b99e05db0762f96d0a28f278da/b8e70/plakat_2020-01.png 750w,\n/static/5ef746b99e05db0762f96d0a28f278da/e5839/plakat_2020-01.png 1080w,\n/static/5ef746b99e05db0762f96d0a28f278da/f51d5/plakat_2020-01.png 1366w,\n/static/5ef746b99e05db0762f96d0a28f278da/84817/plakat_2020-01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/5ef746b99e05db0762f96d0a28f278da/e5d6f/plakat_2020-01.webp 750w,\n/static/5ef746b99e05db0762f96d0a28f278da/0671f/plakat_2020-01.webp 1080w,\n/static/5ef746b99e05db0762f96d0a28f278da/7e884/plakat_2020-01.webp 1366w,\n/static/5ef746b99e05db0762f96d0a28f278da/e2c0d/plakat_2020-01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Wir sehen das typische Cloud-Symbol einer Wolke im Vordergrund. Jürgen stützt sich auf die Wolke, so als wäre es ein Kopfkissen. Er stützt seinen Kopf mit einem Arm ab und schaut ein bisschen verträumt. Er wirkt wie in Gedanken versunken.","tags":["cloud"]},"fields":{"slug":"/talks/2020-01-27-cloud-foundry/","sourceName":"talks"}}},{"node":{"id":"92ec8c3c-c428-5ca1-bb98-7b8ebac5cdfb","html":"<p>Nach der Freigabe vom JDK 14 werden die aktuellen Merkmale vorgestellt. Neben Bug-Fixes und Security-Patches, stecken im\nJDK 14 Feature-Release, Sprach- und JVM-Änderungen, Erweiterungen, zugefügte und entfernte Klassen und Methoden,\ndeprecated markierte Features und JDK-Tool-Änderungen. Bereits mit der Einführung der JDK Version 11 wurden die\ntechnischen Unterschiede bei der Gleichstellung vom Oracle JDK mit dem Oracle OpenJDK entfernt. Bei diesem\nTechnologietransfer sind alle Bestandteile vom Oracle JDK als Open-Source-Implentierungen in das OpenJDK geflossen,\nsodass das Oracle JDK 14 durch das OpenJDK 14 augetauscht werden kann. Die Anwender können ein JDK oder ein OpenJDK\nverschiedener Hersteller frei auswählen. Dazu werden die Migrationsaspekte älterer Java-Anwendungen zum JDK 14\nerläutert. Im Vortrag wird auch ein Blick auf den langfristigen Einsatz vom Java Modulsystem geworfen und dies anhand\nvon Beispielen durch Erstellung einer individueller Java Runtime mit der Anwendung verdeutlicht. Zudem wird die die\nGraalVM als universelle Virtuelle Maschine (VM) für Anwendungen im Java Ökosystem betrachtet.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/JDK_14_und_GraalVM_im_Java-%C3%96kosystem_WW.pdf\">Folien zum Vortrag</a></li>\n</ul>\n<hr>\n<h2>Hinweis</h2>\n<p><strong>Dieser Vortrag findet Online statt.</strong> Dazu hat Wolfgang ein Zoom-Meeting aufgesetzt. Dieser Meeting-Raum ist\nPasswortgeschützt. Bitte meldet euch vorab per E-Mail an. Wir schicken euch dann vor dem Meeting das Passwort per Mail\nzu.</p>\n<p>Dieses Mal geht es schon <strong>18:00 Uhr los</strong>.</p>","frontmatter":{"title":"JDK 14 und GraalVM im Java Ökosystem","date":"2020-04-29T00:00:00.000Z","time":"18:00","speaker":["wolfgang_weigend"],"location":null,"virtual":true,"poster":{"childImageSharp":{"id":"59ef0a09-a854-5bc5-a122-2d35ddcf6987","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#486888","images":{"fallback":{"src":"/static/1b5849494114993b21e29316b4af1f35/84817/plakat_2020_04.png","srcSet":"/static/1b5849494114993b21e29316b4af1f35/b8e70/plakat_2020_04.png 750w,\n/static/1b5849494114993b21e29316b4af1f35/e5839/plakat_2020_04.png 1080w,\n/static/1b5849494114993b21e29316b4af1f35/f51d5/plakat_2020_04.png 1366w,\n/static/1b5849494114993b21e29316b4af1f35/84817/plakat_2020_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/1b5849494114993b21e29316b4af1f35/e5d6f/plakat_2020_04.webp 750w,\n/static/1b5849494114993b21e29316b4af1f35/0671f/plakat_2020_04.webp 1080w,\n/static/1b5849494114993b21e29316b4af1f35/7e884/plakat_2020_04.webp 1366w,\n/static/1b5849494114993b21e29316b4af1f35/e2c0d/plakat_2020_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt in seinem Sessel. Er trägt sein übliches Jacket, eine Schlafanzug-Hose und Latschen. Neben dem Sessel sieht man seine üblichen schicken Schnürschuhe herumliegen. Er hat ein Headset aufgesetzt und seinen Laptop im Schoß. Jürgen verfolgt den Vortrag aus dem Home-Office. Auf dem Laptop-Deckel ist eine angebissene Banane zusehen.","tags":["java","jdk","graalvm"]},"fields":{"slug":"/talks/2020-04-29-jdk14_graalvm/","sourceName":"talks"}}},{"node":{"id":"0ebf9412-38af-5831-82e8-2b0aa744f924","html":"<p>Als Softwareentwickler ist man auf die Verwendung von Versionsverwaltungssystemen und deren Branching- und\nMerging-Strategien angewiesen. Vorgaben, wie diese Strategien angewendet werden müssen, liefern diverse\nBranching-Modelle. Sie sollen vor Allem den Entwickleralltag erleichtern, indem sie für eine saubere Historie sorgen,\nden Softwarereleaseprozess unterstützen oder verhindern, dass man in der Merge-Hölle landet. In dem Vortrag werden\neinige Branching-Modelle vorgestellt. Dabei wird der Frage auf den Grund gegangen, welche Art von Modell zu welcher Art\nvon Softwareprojekt passt und welche allgemeingültigen Vorgehensweisen beim Branching und Merging daraus gezogen werden\nkönnen.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_branching_models.pdf\">Folien zum Vortrag</a></li>\n</ul>\n<hr>\n<h2>Hinweis</h2>\n<p><strong>Dieser Vortrag findet Online statt.</strong> Dazu haben wir ein Jitsi-Meeting aufgesetzt:\n<a href=\"https://meet.digitale-oberlausitz.eu/jug\">https://meet.digitale-oberlausitz.eu/jug</a></p>","frontmatter":{"title":"Branching-Modelle","date":"2020-07-22T00:00:00.000Z","time":null,"speaker":["hannes_kretschmer"],"location":null,"virtual":true,"poster":{"childImageSharp":{"id":"1908832c-2f77-598f-a24b-2bcdee954b3a","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d86838","images":{"fallback":{"src":"/static/595b224b634a1c6694d94578a61bc06c/84817/plakat_2020_07.png","srcSet":"/static/595b224b634a1c6694d94578a61bc06c/b8e70/plakat_2020_07.png 750w,\n/static/595b224b634a1c6694d94578a61bc06c/e5839/plakat_2020_07.png 1080w,\n/static/595b224b634a1c6694d94578a61bc06c/f51d5/plakat_2020_07.png 1366w,\n/static/595b224b634a1c6694d94578a61bc06c/84817/plakat_2020_07.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/595b224b634a1c6694d94578a61bc06c/e5d6f/plakat_2020_07.webp 750w,\n/static/595b224b634a1c6694d94578a61bc06c/0671f/plakat_2020_07.webp 1080w,\n/static/595b224b634a1c6694d94578a61bc06c/7e884/plakat_2020_07.webp 1366w,\n/static/595b224b634a1c6694d94578a61bc06c/e2c0d/plakat_2020_07.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hat einen Schaffner-Hut auf dem Kopf. Er hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier mit der Überschrift 'Fahrplan' geheftet ist. Unter der Überschrift ist ein Streckenplan mit Verzweigungen angedeutet.","tags":["java","git"]},"fields":{"slug":"/talks/2020-07-22-branching_modelle/","sourceName":"talks"}}},{"node":{"id":"fee8a0ec-6360-5446-9bb0-9ecbe5695536","html":"<p>Durch die Veröffentlichung von immer neuen Schwachstellen in Softwareprodukten rückt das Thema Application Security\nzunehmend in den Fokus vieler Softwareentwickler. Sichere Software zu erstellen muss aber keine große Herausforderung\nsein, wenn man Best Practices befolgt und der Application Security einen festen Platz im Entwicklungszyklus einräumt.\nZiel des Vortrags ist es, einen Überblick zu Secure Coding in Java zu vermitteln und die Wichtigkeit dieses Themas\nhervorzuheben. Im Detail wird außerdem an praktischen Beispielen demonstriert, wie Sicherheitsschwachstellen im\nProgrammcode aussehen, ausgenutzt und behoben werden können.</p>\n<hr>\n<h2>Hinweis</h2>\n<p><strong>Dieser Vortrag findet Online statt.</strong> Dazu haben wir ein Jitsi-Meeting aufgesetzt:\n<a href=\"https://meet.digitale-oberlausitz.eu/jug\">https://meet.digitale-oberlausitz.eu/jug</a></p>","frontmatter":{"title":"Java Secure Coding in der Praxis","date":"2020-11-25T00:00:00.000Z","time":null,"speaker":["nico_foerster"],"location":null,"virtual":true,"poster":{"childImageSharp":{"id":"b5a8cec9-632e-5d2d-acc3-45cfdedb6dfa","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#182838","images":{"fallback":{"src":"/static/c2b6e13c2719de1c7a0da2b790067455/84817/plakat_2020_11.png","srcSet":"/static/c2b6e13c2719de1c7a0da2b790067455/b8e70/plakat_2020_11.png 750w,\n/static/c2b6e13c2719de1c7a0da2b790067455/e5839/plakat_2020_11.png 1080w,\n/static/c2b6e13c2719de1c7a0da2b790067455/f51d5/plakat_2020_11.png 1366w,\n/static/c2b6e13c2719de1c7a0da2b790067455/84817/plakat_2020_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/c2b6e13c2719de1c7a0da2b790067455/e5d6f/plakat_2020_11.webp 750w,\n/static/c2b6e13c2719de1c7a0da2b790067455/0671f/plakat_2020_11.webp 1080w,\n/static/c2b6e13c2719de1c7a0da2b790067455/7e884/plakat_2020_11.webp 1366w,\n/static/c2b6e13c2719de1c7a0da2b790067455/e2c0d/plakat_2020_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt eine schwarze Woll-Mütze und eine schwarze Maske. Er trägt Handschuhe und sieht aus wie ein Einbrecher. Im Hintergrund sieht man eine Wohnungstür, vor der Jürgen kniet. Er hat einen Dietrich in der Hand und versucht gerade, dass Schloß zu knacken. Wir sehen Jürgens Rücken und er schaut zu uns über die Schulter. Seinem Blick zu urteilen, ist er überrascht weil wir ihn beim Einbrechen erwischt haben.","tags":["java","security"]},"fields":{"slug":"/talks/2020-11-25-secure_coding/","sourceName":"talks"}}},{"node":{"id":"3c969ad0-d843-57d0-92c4-91340d71851d","html":"<p>Web-Components sind eine Möglichkeit, auf Basis von Web-Standards wiederverwendbare UI-Komponenten zu bauen, die sich\nbrowserübergreifend und unabhängig von JavaScript-Frameworks einsetzen lassen. Im Vortrag möchte ich die relevanten\nWeb-Standards kurz vorstellen und im Live-Coding eine Web-Componente from Scratch bauen.</p>\n<p>Dabei möchte ich auch auf die Stärken und Schwächen von Web-Components eingehen und einige Erfahrungen teilen, die ich\nbei der Entwicklung einer firmeninternen Component-Library machen konnte.</p>\n<hr>\n<h2>Hinweis</h2>\n<p><strong>Dieser Vortrag findet Online statt.</strong> Dazu haben wir ein Jitsi-Meeting aufgesetzt:\n<a href=\"https://meet.digitale-oberlausitz.eu/jug\">https://meet.digitale-oberlausitz.eu/jug</a></p>","frontmatter":{"title":"Web Components","date":"2021-01-27T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":null,"virtual":true,"poster":{"childImageSharp":{"id":"9bba5bef-9d0e-50c8-b451-ffed64ad6bd4","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#981848","images":{"fallback":{"src":"/static/540abccd98049d14ae192d2ada3cbcc3/84817/plakat_2021_01.png","srcSet":"/static/540abccd98049d14ae192d2ada3cbcc3/b8e70/plakat_2021_01.png 750w,\n/static/540abccd98049d14ae192d2ada3cbcc3/e5839/plakat_2021_01.png 1080w,\n/static/540abccd98049d14ae192d2ada3cbcc3/f51d5/plakat_2021_01.png 1366w,\n/static/540abccd98049d14ae192d2ada3cbcc3/84817/plakat_2021_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/540abccd98049d14ae192d2ada3cbcc3/e5d6f/plakat_2021_01.webp 750w,\n/static/540abccd98049d14ae192d2ada3cbcc3/0671f/plakat_2021_01.webp 1080w,\n/static/540abccd98049d14ae192d2ada3cbcc3/7e884/plakat_2021_01.webp 1366w,\n/static/540abccd98049d14ae192d2ada3cbcc3/e2c0d/plakat_2021_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Wir sehen ein großes Spinnennetz, in dem Jürgen gefangen ist. Er hängt verkehrt herum im Netz und sieht ziemlich erschrocken aus.","tags":["web"]},"fields":{"slug":"/talks/2021-01-27-webcomponents/","sourceName":"talks"}}},{"node":{"id":"1249d4ab-1401-5936-92b8-3d6dee7f14bb","html":"<p>MicroStream ist ein fundamental neues Persistenz-Framework für die native Speicherung komplexer Java Objektgraphen.\nD.h., Objekte werden damit genau so persistent gespeichert, wie diese im Hauptspeicher von der JVM verwaltet werden.\nUmgekehrt lassen sich zu jeder Zeit einzelne Subgraphen in den RAM laden und der Objektgraph im Hauptspeicher wird\nautomatisch aktualisiert.</p>\n<p>Dadurch ergeben sich völlig neue Möglichkeiten: Objektgraphen lassen sich als In-Memory Datenbank verwenden. Ein\nObjektgraph ist dabei eine sehr mächtige Multi-Model Datenstruktur. Es lassen sich beliebige Java-Typen, Collections\nsowie Formate wie JSON verwenden und beliebig kombinieren. Passend dazu bietet Java die perfekte Abfragesprache. Mit\nJava Streams dauert das Durchsuchen selbst sehr großer und komplexer Objektgraphen nur Mikrosekunden - bis zu 1000 Mal\nschneller als vergleichbare SQL-Abfragen und sogar sehr viel schneller als das direkte Lesen von Abfrageergebnissen aus\neinem lokalen Cache. DB-spezifische Datenstrukturen oder Formate werden damit bedeutungslos für Java. Keine teuren\nMappings mehr. Keine Datentyp-Konvertierungen mehr. Keine DB-spezifischen Abfragesprachen. Nur noch ein Datenmodell:\nJava-Klassen (POJOs). Kein zusätzliches Caching-Framework mehr. Keine unkomfortablen Objektkopien mehr. Simple\nArchitektur und typsicherer Abfrage-Code. Reine Core-Java Features anstatt DB-spezifische Konzepte. Das Endresultat ist\neine ultraschnelle Java In-Memory Datenbankanwendung oder Microservice.</p>\n<p>MicroStream wird bereits seit über 5 Jahren in Unternehmensanwendung produktiv eingesetzt. Jetzt wird MicroStream Open\nSource und Teil der populären Microservice Frameworks Helidon und Open Liberty.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/Java-In-Memory-DB-Applications-with-MicroStream-JUG-Goerlitz_PDF.pdf\">Folien zum Vortrag</a></li>\n</ul>\n<hr>\n<h2>Hinweis</h2>\n<p><strong>Dieser Vortrag findet Online statt.</strong> Dazu haben wir ein Jitsi-Meeting aufgesetzt:\n<a href=\"https://meet.digitale-oberlausitz.eu/jug\">https://meet.digitale-oberlausitz.eu/jug</a></p>","frontmatter":{"title":"Ultraschnelle Java In-Memory Datenbank-Anwendungen & Microservices mit MicroStream","date":"2021-06-30T00:00:00.000Z","time":null,"speaker":["markus_kett","christian_kuemmel"],"location":null,"virtual":true,"poster":{"childImageSharp":{"id":"1567f34a-c228-511c-a368-2041cf79e3fa","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f85838","images":{"fallback":{"src":"/static/8f427a4552cb3ca64fe96511228f5a57/84817/plakat_2021_06.png","srcSet":"/static/8f427a4552cb3ca64fe96511228f5a57/b8e70/plakat_2021_06.png 750w,\n/static/8f427a4552cb3ca64fe96511228f5a57/e5839/plakat_2021_06.png 1080w,\n/static/8f427a4552cb3ca64fe96511228f5a57/f51d5/plakat_2021_06.png 1366w,\n/static/8f427a4552cb3ca64fe96511228f5a57/84817/plakat_2021_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/8f427a4552cb3ca64fe96511228f5a57/e5d6f/plakat_2021_06.webp 750w,\n/static/8f427a4552cb3ca64fe96511228f5a57/0671f/plakat_2021_06.webp 1080w,\n/static/8f427a4552cb3ca64fe96511228f5a57/7e884/plakat_2021_06.webp 1366w,\n/static/8f427a4552cb3ca64fe96511228f5a57/e2c0d/plakat_2021_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt am Tisch und überlegt. Er spielt Memory und hat gerade eine aufgedeckte Memory-Karte mit dem Java-Duke darauf in der Hand. Auf dem Tisch sind die anderen Karten zugedeckt, bis auf eine offene Karte. Auf dieser ist ein Datenbank-Symbol zu sehen.","tags":["database","java"]},"fields":{"slug":"/talks/2021-06-30-microstream/","sourceName":"talks"}}},{"node":{"id":"2e3945a5-7de9-5188-b447-47134c218967","html":"<p>Die Persistenz von IoT Daten sowie die Steuerung von IoT-Endgeräten benötigt im klassischen Verständnis eine\nServereinheit. Bei den Bastlern sind das oft on-premise Raspberry-Pi-Geräte oder gehostete Linux-Maschinen. Ihre\nkorrekte Konfiguration und anschließende Wartung kann Kopfzerbrechen bereiten. Es ist jedoch möglich, diese\nVerantwortung an den Cloud-Betreiber zu übertragen und eine entsprechende Infrastruktur zu schaffen. In der\nHands-On-Session wird gezeigt, wie man mit der Erstellung der gewünschten Infrastruktur in der AWS-Cloud beginnen kann.\nDazu wird ein Mikrocontroller vom Typ ESP als physisches IoT-Gerät verwendet.</p>\n<hr>\n<p>Hinweis: Bitte meldet euch zur <strong>Teilnahme über jug-gr(at)digitale-oberlausitz.eu</strong> an. Wir haben eine begrenzte Anzahl\nvon 25 Plätzen zur Verfügung, die nicht überschritten werden darf.</p>","frontmatter":{"title":"Hebe deine IoT-Infrastruktur auf das Serverless-Level an","date":"2022-06-22T00:00:00.000Z","time":null,"speaker":["pawel_adaszewski"],"location":"zeiss","virtual":null,"poster":{"childImageSharp":{"id":"fff1b9ff-e9ff-5fc3-ac26-c00c71f16bde","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8b838","images":{"fallback":{"src":"/static/16e022022a45fa9f5687edc16e865aec/84817/plakat_2022_06.png","srcSet":"/static/16e022022a45fa9f5687edc16e865aec/b8e70/plakat_2022_06.png 750w,\n/static/16e022022a45fa9f5687edc16e865aec/e5839/plakat_2022_06.png 1080w,\n/static/16e022022a45fa9f5687edc16e865aec/f51d5/plakat_2022_06.png 1366w,\n/static/16e022022a45fa9f5687edc16e865aec/84817/plakat_2022_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/16e022022a45fa9f5687edc16e865aec/e5d6f/plakat_2022_06.webp 750w,\n/static/16e022022a45fa9f5687edc16e865aec/0671f/plakat_2022_06.webp 1080w,\n/static/16e022022a45fa9f5687edc16e865aec/7e884/plakat_2022_06.webp 1366w,\n/static/16e022022a45fa9f5687edc16e865aec/e2c0d/plakat_2022_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen spielt eine Flöte. Hinter ihm sieht man einen Weg auf dem Jürgen gelaufen kommt. Hinter ihm ist ein Smartphone und eine Waschmaschine, jeweils mit Armen, Beinen und Gesicht. Die Gesichter der Geräte sehen aus wie paralysiert und sie halten ihre Arme wie Zombies nach Vorn. Sie folgen Jürgen, so als wäre er der Rattenfänger von Hameln.","tags":["cloud","iot","serverless","infrastructure"]},"fields":{"slug":"/talks/2022-06-22-iot-infrastruktur-serverless/","sourceName":"talks"}}},{"node":{"id":"2b8e8a71-59c4-53fb-baa2-5b6136f7efe8","html":"<p>Mit der <em>fischertechnik</em> Lernfabrik haben wir eine Fabrik im Kleinformat! Steuerung, Edge und Cloud in Einem!</p>\n<p><span\n class=\"gatsby-resp-image-wrapper\"\n style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 694px; \"\n >\n <a\n class=\"gatsby-resp-image-link\"\n href=\"/static/903efdec1e01931509b749db26582149/31198/lernfabrik.png\"\n style=\"display: block\"\n target=\"_blank\"\n rel=\"noopener\"\n >\n <span\n class=\"gatsby-resp-image-background-image\"\n style=\"padding-bottom: 147.5%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,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'); background-size: cover; display: block;\"\n ></span>\n <img\n class=\"gatsby-resp-image-image\"\n alt=\"Lernfabrik\"\n title=\"Lernfabrik\"\n src=\"/static/903efdec1e01931509b749db26582149/31198/lernfabrik.png\"\n srcset=\"/static/903efdec1e01931509b749db26582149/772e8/lernfabrik.png 200w,\n/static/903efdec1e01931509b749db26582149/e17e5/lernfabrik.png 400w,\n/static/903efdec1e01931509b749db26582149/31198/lernfabrik.png 694w\"\n sizes=\"(max-width: 694px) 100vw, 694px\"\n style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n loading=\"lazy\"\n decoding=\"async\"\n />\n </a>\n </span></p>\n<p>In diesem Vortrag lernen wir die Technologien und Möglichkeiten von Industrie 4.0 praktisch kennen. Wir nutzen das\nIndustrieprotokoll <em>OPC-UA</em> zur Maschinenkommunikation und Edge-Services um Fabrikdaten in die Cloud zu laden. Wir sehen\nuns die Services hinter einem Dashboard an und mit der Siemens <em>S7</em> Steuerung tunen wir unsere Fabrik.</p>\n<hr>\n<p>Hinweis: Bitte meldet euch zur <strong>Teilnahme über jug-gr(at)digitale-oberlausitz.eu</strong> an. Wir haben eine begrenzte Anzahl\nvon 25 Plätzen zur Verfügung, die nicht überschritten werden darf.</p>","frontmatter":{"title":"Industrie 4.0? Das JUGt mich!","date":"2022-10-12T00:00:00.000Z","time":null,"speaker":["marco_gotthans"],"location":"zeiss","virtual":null,"poster":{"childImageSharp":{"id":"1a0dbc74-dd80-5566-aa7d-5a4aac2ba518","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#28b898","images":{"fallback":{"src":"/static/f522849df2b2b8add5330999b1f5a484/84817/plakat_2022_10.png","srcSet":"/static/f522849df2b2b8add5330999b1f5a484/b8e70/plakat_2022_10.png 750w,\n/static/f522849df2b2b8add5330999b1f5a484/e5839/plakat_2022_10.png 1080w,\n/static/f522849df2b2b8add5330999b1f5a484/f51d5/plakat_2022_10.png 1366w,\n/static/f522849df2b2b8add5330999b1f5a484/84817/plakat_2022_10.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/f522849df2b2b8add5330999b1f5a484/e5d6f/plakat_2022_10.webp 750w,\n/static/f522849df2b2b8add5330999b1f5a484/0671f/plakat_2022_10.webp 1080w,\n/static/f522849df2b2b8add5330999b1f5a484/7e884/plakat_2022_10.webp 1366w,\n/static/f522849df2b2b8add5330999b1f5a484/e2c0d/plakat_2022_10.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und auf der Wolke ist ein Baukran zusehen.","tags":["cloud","iot","industrie4.0","infrastructure"]},"fields":{"slug":"/talks/2022-10-12-indistrie_4.0/","sourceName":"talks"}}},{"node":{"id":"a0820bff-9a0d-5989-b837-8f769fcc2ba6","html":"<p>Keycloak ist ein Open Source IAM (Identity and Access Management) System, das größtenteils in Java implementiert ist.<br>\nEs wird von vielen Unternehmen eingesetzt, um Authentifizierung und Authorisierung für verschiedenste Anwendungen\numzusetzen. Eine große Stärke von Keycloak ist die Konfigurierbarkeit und Erweiterbarkeit.<br>\nIm Vortrag wird ein Überblick über die Konfigurations- und Erweiterungsmöglichkeiten gegeben. In einer Live-Demo wird\ngezeigt, wie man diese Möglichkeiten nutzen kann, um ein kundenspezifisches IAM bereitzustellen.</p>","frontmatter":{"title":"Kundenspezifisches IAM mit Keycloak","date":"2022-11-30T00:00:00.000Z","time":null,"speaker":["daniel_fesenmeyer"],"location":"innolabs","virtual":null,"poster":{"childImageSharp":{"id":"0b48a461-1420-5309-b315-926387e3fc44","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/4313899aa2d31ed4b1e24d7d91e8c20a/84817/plakat_2022_11.png","srcSet":"/static/4313899aa2d31ed4b1e24d7d91e8c20a/b8e70/plakat_2022_11.png 750w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/e5839/plakat_2022_11.png 1080w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/f51d5/plakat_2022_11.png 1366w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/84817/plakat_2022_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/4313899aa2d31ed4b1e24d7d91e8c20a/e5d6f/plakat_2022_11.webp 750w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/0671f/plakat_2022_11.webp 1080w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/7e884/plakat_2022_11.webp 1366w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/e2c0d/plakat_2022_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten.","tags":["security"]},"fields":{"slug":"/talks/2022-11-30-iam-keycloak/","sourceName":"talks"}}},{"node":{"id":"5d96ee33-16f6-5b4c-aca8-557c4c24c14e","html":"<p>Die Mehrheit aktueller Content Management Systeme (CMS) verwaltet Inhalte auf vergleichbare Art wie Dateien in einem Windows-Netzwerkordner. Wie könnte dagegen ein CMS aussehen, wenn wir nochmal von Null starten und auf heutige Technologien wie Git, GraphQL und der Cloud aufbauen?\nIm Vortrag sehen wir uns die Architektur von Contentlab an, einem Git-basierten Open Source CMS, und erstellen live eine CMS Instanz zum Verwalten von Veranstaltungen.</p>","frontmatter":{"title":"Content Management neu gedacht mit Contentlab","date":"2023-01-25T00:00:00.000Z","time":null,"speaker":["markus_weiland"],"location":"cideon","virtual":null,"poster":{"childImageSharp":{"id":"86c1c8d2-94ea-5866-bbdb-3ac21398dcc3","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#9868a8","images":{"fallback":{"src":"/static/8f15082e67d772dd339121432ea649d9/84817/plakat_2023_01.png","srcSet":"/static/8f15082e67d772dd339121432ea649d9/b8e70/plakat_2023_01.png 750w,\n/static/8f15082e67d772dd339121432ea649d9/e5839/plakat_2023_01.png 1080w,\n/static/8f15082e67d772dd339121432ea649d9/f51d5/plakat_2023_01.png 1366w,\n/static/8f15082e67d772dd339121432ea649d9/84817/plakat_2023_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/8f15082e67d772dd339121432ea649d9/e5d6f/plakat_2023_01.webp 750w,\n/static/8f15082e67d772dd339121432ea649d9/0671f/plakat_2023_01.webp 1080w,\n/static/8f15082e67d772dd339121432ea649d9/7e884/plakat_2023_01.webp 1366w,\n/static/8f15082e67d772dd339121432ea649d9/e2c0d/plakat_2023_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt einen Laborkittel und eine Schutzbrille. In der Hand trägt er zwei Reagenzgläser. Scheinbar ist bei seinem Experiment etwas explodiert denn über Jürgen und den Gläsern ziehen Rauchschwaden auf, Jürgen ist komplett grau vom Explosionsstaub.","tags":["platform","web"]},"fields":{"slug":"/talks/2023-01-25-contentlab/","sourceName":"talks"}}},{"node":{"id":"8fa19a6d-7e84-5d43-a513-0644ddb362d6","html":"<p>Fehler sind ein fester Bestandteil unserer Arbeit. Die Suche und das Verstehen dieser nimmt viel Zeit in Anspruch. Die Fehlerbehebung ist häufig nur eine Zeile Code. Wie kann der Prozess des Suchens und Verstehens optimiert werden? Dies ist durch eine strategische Vorbereitung der Codebasis möglich.</p>\n<p>Hierfür stelle ich zwei Transformationen vor. Ziel der ersten Transformation: Beim Auftreten eines Fehlers erfolgt der sofortige Ausstieg aus dem Code mit einer aussagekräftigen Exception. Das ist sehr ähnlich zur Validierung. Auf Ähnlichkeiten und Unterschiede gehe ich im Detail ein. Ziel der zweiten Transformation: Trennung der Standard-Logik von den Sonderfällen. Dies verbessert die Lesbarkeit. Zusätzlich ergänzt es die erste Transformation.</p>\n<p>Anhand der vorgestellten Beispiele kannst du schon morgen deinen Code stabilisieren und deine eigenen Analysen effizienter durchführen. Außerdem gebe ich einen Ausblick darauf, wie du noch mehr aus diesem Konzept rausholen kannst.</p>","frontmatter":{"title":"Exception First – Stabilisiere deinen Code mit mehr Exceptions","date":"2023-02-22T00:00:00.000Z","time":null,"speaker":["sergej_tihonov"],"location":"zeiss","virtual":null,"poster":{"childImageSharp":{"id":"85b5c33a-1b3d-5625-8375-408b5c1f84bf","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e88838","images":{"fallback":{"src":"/static/69a227ac221f5d70680e1772e2b66652/84817/plakat_2023_02.png","srcSet":"/static/69a227ac221f5d70680e1772e2b66652/b8e70/plakat_2023_02.png 750w,\n/static/69a227ac221f5d70680e1772e2b66652/e5839/plakat_2023_02.png 1080w,\n/static/69a227ac221f5d70680e1772e2b66652/f51d5/plakat_2023_02.png 1366w,\n/static/69a227ac221f5d70680e1772e2b66652/84817/plakat_2023_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/69a227ac221f5d70680e1772e2b66652/e5d6f/plakat_2023_02.webp 750w,\n/static/69a227ac221f5d70680e1772e2b66652/0671f/plakat_2023_02.webp 1080w,\n/static/69a227ac221f5d70680e1772e2b66652/7e884/plakat_2023_02.webp 1366w,\n/static/69a227ac221f5d70680e1772e2b66652/e2c0d/plakat_2023_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert.","tags":["architektur"]},"fields":{"slug":"/talks/2023-02-22-exception_first/","sourceName":"talks"}}},{"node":{"id":"f5233192-6039-5c35-9957-b7023ed9e701","html":"<p>Die Architektur und das Design einer Applikation beeinflussen ihre Wartbarkeit, Testbarkeit und Qualität im Allgemeinen.\nSpring war schon immer ein vielseitiges Werkzeug, das Architekt:innen dabei unterstützt, Muster zu implementieren, mit\nHilfe derer technische Bausteine der Applikation mit Domänenkonzepten und -grenzen verknüpft werden können. Es erlaubt\nEntwickler:innen Anwendungen zu schreiben, die ihre architektonischen Ideen deutlich reflektieren und so ultimativ\nänder- und damit wartbarere Anwendungen zu schreiben. Schlüsselaspekte dahin gehend sind Codeorganisation, das\nSpring-Bean-Arrangement und die Nutzung von Domänen-Events, um fachlich individuelle Teile der Applikation voneinander\nzu entkoppeln. Der Vortrag diskutiert diese Muster und Ansätze und stellt Blibliotheken wie jMolecules und Moduliths\nvor, um zu zeigen, wie Spring-Entwickler in die Lage versetzt werden, besonders gut strukturierte und wartbare\nAnwendungen zu schreiben.</p>\n<hr>\n<p><strong>Hinweis</strong>: Wir treffen uns heute das erste mal im Fraunhofer-Institut IOSB. Hier wird vor allem im Bereich\nIT-Sicherheit für Kritische Infrastrukturen für Energie und Wasser geforscht und wir haben die Möglichkeit, eine kurze\nFührung durch das Institut zu bekommen. Deshalb treffen wir uns dieses Mal bereits 18:30 Uhr. Der reguläre Vortrag\nstartet wie gewohnt um 19:00 Uhr.</p>\n<p>Einen kurzen Einblick darüber, was wir in diesen Ersten Teil gesehen und gehört haben, könnt ihr auf der <a href=\"https://digitale-oberlausitz.eu/news/2023/fraunhoferbesuch_jug/\">Website der Digitalen Oberlausitz e. V.</a> nachlesen.</p>","frontmatter":{"title":"Spring für architekturinteressierte Entwickler:innen","date":"2023-03-29T00:00:00.000Z","time":"18:30","speaker":["oliver_drotbohm"],"location":"fraunhofer","virtual":null,"poster":{"childImageSharp":{"id":"ab1c70db-cea4-586b-be81-643ef56fc65a","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8a808","images":{"fallback":{"src":"/static/bd3df371bc1bfedf9acf732740ac6b34/84817/plakat_2023_03.png","srcSet":"/static/bd3df371bc1bfedf9acf732740ac6b34/b8e70/plakat_2023_03.png 750w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/e5839/plakat_2023_03.png 1080w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/f51d5/plakat_2023_03.png 1366w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/84817/plakat_2023_03.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/bd3df371bc1bfedf9acf732740ac6b34/e5d6f/plakat_2023_03.webp 750w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/0671f/plakat_2023_03.webp 1080w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/7e884/plakat_2023_03.webp 1366w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/e2c0d/plakat_2023_03.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgens Kopf ist auf einer Sprungfeder in einer Box, die wie ein Springteufel herausragt.","tags":["architektur","spring"]},"fields":{"slug":"/talks/2023-03-29-spring_fuer_architekturinteressierte_entwickler_innen/","sourceName":"talks"}}},{"node":{"id":"79b0298f-b45a-5707-a02c-37ea990349ee","html":"<p>Architektur und Code driften immer weiter auseinander? Die Umsetzung von nicht-funktionalen Anforderungen und Querschnittsaspekten wird häufig vergessen? Zu viel Spaghetti-Code durch zyklische Abhängigkeiten? Solche Dinge kommen leider viel zu häufig vor und führen schnell zu einer unwartbaren Codebasis.\nIm Java-Umfeld ist die Bibliothek ArchUnit eine mögliche Lösung für diese Situation. Wir schauen, wie wir mit ArchUnit unsere Architektur innerhalb von Unit-Tests testen können und endlich wieder Struktur ins System bekommen. Außerdem schauen wir uns darauf aufbauend jMolecules an, womit wir Architekturkonzepte direkt im Code abbilden können.</p>","frontmatter":{"title":"ArchUnit: Unit-Tests für deine Java-Architektur","date":"2023-04-26T00:00:00.000Z","time":null,"speaker":["roland_weisleder"],"location":"expleo","virtual":null,"poster":{"childImageSharp":{"id":"197c670b-992f-54d0-9a49-0aac78c4b5e4","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#58a848","images":{"fallback":{"src":"/static/3783aca0b180d59828528ae2e9f37788/84817/plakat_2023_04.png","srcSet":"/static/3783aca0b180d59828528ae2e9f37788/b8e70/plakat_2023_04.png 750w,\n/static/3783aca0b180d59828528ae2e9f37788/e5839/plakat_2023_04.png 1080w,\n/static/3783aca0b180d59828528ae2e9f37788/f51d5/plakat_2023_04.png 1366w,\n/static/3783aca0b180d59828528ae2e9f37788/84817/plakat_2023_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/3783aca0b180d59828528ae2e9f37788/e5d6f/plakat_2023_04.webp 750w,\n/static/3783aca0b180d59828528ae2e9f37788/0671f/plakat_2023_04.webp 1080w,\n/static/3783aca0b180d59828528ae2e9f37788/7e884/plakat_2023_04.webp 1366w,\n/static/3783aca0b180d59828528ae2e9f37788/e2c0d/plakat_2023_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgens trägt ein grünes Cape und einen Hut mit einer Feder. Er sieht aus wie Robin Hood. In den Händen hat er Pfeil und Bogen parat, am Rücken trägt er einen Köcher mit weiteren Pfeilen.","tags":["architektur","testen"]},"fields":{"slug":"/talks/2023-04-26-archunit_unit_tests_java_architektur/","sourceName":"talks"}}},{"node":{"id":"d1758688-b708-5de7-8e59-5646800cc19a","html":"<p>Dániel Sulyok von der Tallence AG stellt seine Arbeit im Rahmen des Themas <em>Accessibility</em> (Barrierefreiheit) vor. Das Team wurde beauftragt mit der Umsetzung des Redesigns und technischem Neubau der Webanwendung \"Account Manager\" mit einem besonderen Fokus auf Barrierefreiheit. In enger Abstimmung zwischen Design, Entwicklung und Endnutzern wurden entwicklungsbegleitende UX-Tests durchgeführt und iterativ die Zugänglichkeit und Bedienbarkeit der Anwendung verbessert.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_a11y.pdf\">Folien zum Vortrag</a></li>\n</ul>","frontmatter":{"title":"Accessibility in the Wild","date":"2023-05-31T00:00:00.000Z","time":null,"speaker":["daniel_sulyok"],"location":"tallence","virtual":null,"poster":{"childImageSharp":{"id":"2289c524-859b-5899-a8d7-b9ae17afcad5","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e85888","images":{"fallback":{"src":"/static/4d37935c5d380cb8d64e34d12cbd80d2/84817/plakat_2023_05.png","srcSet":"/static/4d37935c5d380cb8d64e34d12cbd80d2/b8e70/plakat_2023_05.png 750w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/e5839/plakat_2023_05.png 1080w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/f51d5/plakat_2023_05.png 1366w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/84817/plakat_2023_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/4d37935c5d380cb8d64e34d12cbd80d2/e5d6f/plakat_2023_05.webp 750w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/0671f/plakat_2023_05.webp 1080w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/7e884/plakat_2023_05.webp 1366w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/e2c0d/plakat_2023_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hat einen Baseballschläger in den Händen und zerstört damit eine Verkehrsbake.","tags":["java","a11y"]},"fields":{"slug":"/talks/2023-05-31-accessibility_in_the_wild/","sourceName":"talks"}}},{"node":{"id":"8a2e331b-0f3c-52b6-823e-852ecfff1ba4","html":"<p>Die GraalVM ist eine Virtuelle Maschine (VM) für Anwendungen, die in JavaScript, Python, Ruby, R oder mit den JVM-basierten Programmiersprachen Java, Scala, Kotlin, Clojure und LLVM-basierten Sprachen C/C++ geschrieben wurden. Am 13. Juni 2023 wurde die GraalVM 23 freigegeben, mit Performanceverbesserungen und Native-Image-Optimierungen, sowie polyglotter Unterstützung für verschiedene Programmiersprachen, zur Interoperabilität in einer gemeinsamen Laufzeitumgebung. GraalVM kann eigenständig oder im Kontext von OpenJDK, Node.js und Datenbanken betrieben werden. Mit GraalVM‘s Ahead-of-Time-Fähigkeit kompilierte Native Images verfügen über eine optimierte Startup-Time und sie verringern den Memory-Verbrauch von JVM-basierten Applikationen. Die GraalVM kann wahlweise als Open-Source-Community-Edition (CE) oder als optimierte Oracle GraalVM mit GFTC-Lizenz “GraalVM Free Terms and Conditions (GFTC) including License for Early Adopter Versions” verwendet werden. Im Vortrag wird die GraalVM-Architektur im Java-Ökosystem dargestellt und die Einsatzgebiete erläutert, beispielsweise der in Java entwickelte C2-JIT-Compiler und die Verwendung von GraalVM Native Images. GraalVM kann für Spring Boot und Microservices-Frameworks verwendet werden.</p>","frontmatter":{"title":"GraalVM 23 – Konzepte und Features","date":"2023-06-28T00:00:00.000Z","time":null,"speaker":["wolfgang_weigend"],"location":"zeiss","virtual":null,"poster":{"childImageSharp":{"id":"61b0d0a8-fa3a-58b5-b6f0-eef9f3716b60","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#b878a8","images":{"fallback":{"src":"/static/d62e1742243833e9e67ff3a5e8ba41e0/84817/plakat_2023_06.png","srcSet":"/static/d62e1742243833e9e67ff3a5e8ba41e0/b8e70/plakat_2023_06.png 750w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/e5839/plakat_2023_06.png 1080w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/f51d5/plakat_2023_06.png 1366w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/84817/plakat_2023_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/d62e1742243833e9e67ff3a5e8ba41e0/e5d6f/plakat_2023_06.webp 750w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/0671f/plakat_2023_06.webp 1080w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/7e884/plakat_2023_06.webp 1366w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/e2c0d/plakat_2023_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hat ein Prisma in der Hand aus dem ein regenbogenfarbener Lichtstrahl ausdringt. Er schaut erstaunt auf das Prisma.","tags":["java","jdk","graalvm"]},"fields":{"slug":"/talks/2023-06-28-graalvm_23/","sourceName":"talks"}}},{"node":{"id":"4f2a426a-5b98-5f61-8750-46aac0c6c9f3","html":"<p>Erkunden Sie das aufregende Feature von Java 21: Virtuelle Threads. Diese neue Ergänzung revolutioniert die Art und\nWeise, wie Threads in Java verwaltet werden. Erfahren Sie, wie virtuelle Threads eine leichtgewichtige und effiziente\nAlternative zu herkömmlichen Threads bieten und die Leistung Ihrer Anwendungen verbessern können. Dieser Vortrag bietet\nEinblicke in virtuelle Threads und zeigt praktische Anwendungsbeispiele für deren Einsatz in Java 21. Entwickler aller\nErfahrungsstufen sind herzlich willkommen, sich dieser spannenden Diskussion anzuschließen.</p>","frontmatter":{"title":"Java 21: Virtuelle Threads","date":"2023-09-27T00:00:00.000Z","time":null,"speaker":["patryk_lewandowski"],"location":"zeiss","virtual":null,"poster":{"childImageSharp":{"id":"c6ed33d8-5c5c-5ba5-bf35-c5d30ff717b8","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#289898","images":{"fallback":{"src":"/static/7809ea1a362146b531abece65510447f/84817/plakat_2023_09.png","srcSet":"/static/7809ea1a362146b531abece65510447f/b8e70/plakat_2023_09.png 750w,\n/static/7809ea1a362146b531abece65510447f/e5839/plakat_2023_09.png 1080w,\n/static/7809ea1a362146b531abece65510447f/f51d5/plakat_2023_09.png 1366w,\n/static/7809ea1a362146b531abece65510447f/84817/plakat_2023_09.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/7809ea1a362146b531abece65510447f/e5d6f/plakat_2023_09.webp 750w,\n/static/7809ea1a362146b531abece65510447f/0671f/plakat_2023_09.webp 1080w,\n/static/7809ea1a362146b531abece65510447f/7e884/plakat_2023_09.webp 1366w,\n/static/7809ea1a362146b531abece65510447f/e2c0d/plakat_2023_09.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hat sich in einem virtuellen Faden verheddert und schaut etwas verzweifelt.","tags":["java","performance"]},"fields":{"slug":"/talks/2023-09-27-virtual-threads/","sourceName":"talks"}}},{"node":{"id":"34d30efa-4f03-53e5-8043-fa73d75cbd58","html":"<p>Heutzutage gibt es viele Möglichkeiten, um Cloud-Infrastrukturen aufzubauen. Dazu gehören die Containerisierung, die manuelle Erstellung von Ressourcen (auch bekannt als Click-Ops) und die populären deklarativen YAML-Definitionen. Jede dieser Lösungen hat ihre Vorteile. Allerdings haben sie auch Limitierungen, die bei der Entwicklung von Produktionssoftware vermieden werden sollten.</p>\n<p>Einige Lösungen bieten einen einfachen Einstieg, dafür muss mangelnde Skalierbarkeit und Replizierbarkeit in Kauf genommen werden. Andere bieten zwar Skalierbarkeit, können aber nicht modularisiert werden, was den Aufbau und die Wartung großer Infrastrukturen erschwert.</p>\n<p>Das AWS CDK Framework löst diese Probleme und ermöglicht die Erstellung von Ressourcen mit bekannten Programmiersprachen wie Java. Mit dessen Hilfe wird vorgestellt, wie die Entwicklung von Cloud-Infrastrukturen auf ein höheres Level gebracht werden kann. Der Vortrag wird aus der Sicht eines Anfängers, der in der neuen Technologie die Lösung für alle Probleme der Welt sieht, und aus der Sicht eines erfahrenen Anwenders, der täglich mit dem Framework arbeitet und sich an seine Anfänge im Jahr 2019 erinnert, präsentiert.</p>\n<p>Durch die Kombination dieser beiden Perspektiven wird nicht nur veranschaulicht, wie einfach der Einstieg in diese Art von Technologie ist, sondern es werden auch praktische Erfahrungen weitergegeben. Auch mögliche Probleme und deren Lösungen werden angesprochen.\nIm Live Coding wird vorgeführt, wie das AWS CDK Framework für den Aufbau, die Skalierung und Modularisierung von Serverless AWS Infrastrukturen verwendet werden kann.</p>","frontmatter":{"title":"AWS-Infrastruktur mit Java erstellen - CDK in Action","date":"2023-10-25T00:00:00.000Z","time":null,"speaker":["pawel_adaszewski","damian_dudziec"],"location":"zeiss","virtual":null,"poster":{"childImageSharp":{"id":"322b1b28-3c01-54d5-88d6-d64abf4078e4","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d89878","images":{"fallback":{"src":"/static/434d9c3e2846cfe979a57d975235808c/84817/plakat_2023_10.png","srcSet":"/static/434d9c3e2846cfe979a57d975235808c/b8e70/plakat_2023_10.png 750w,\n/static/434d9c3e2846cfe979a57d975235808c/e5839/plakat_2023_10.png 1080w,\n/static/434d9c3e2846cfe979a57d975235808c/f51d5/plakat_2023_10.png 1366w,\n/static/434d9c3e2846cfe979a57d975235808c/84817/plakat_2023_10.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/434d9c3e2846cfe979a57d975235808c/e5d6f/plakat_2023_10.webp 750w,\n/static/434d9c3e2846cfe979a57d975235808c/0671f/plakat_2023_10.webp 1080w,\n/static/434d9c3e2846cfe979a57d975235808c/7e884/plakat_2023_10.webp 1366w,\n/static/434d9c3e2846cfe979a57d975235808c/e2c0d/plakat_2023_10.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und grinst verschmitzt Auf der Wolke ist ein Baukran zu sehen. Am Baukran hängt eine kleine Wolke und zusätzlich fliegen noch Wolken umher.","tags":["java","cloud"]},"fields":{"slug":"/talks/2023-10-25-aws_cdk_in_action/","sourceName":"talks"}}},{"node":{"id":"e583793f-bcc5-5f78-8931-3357be0f0ba5","html":"<p>In einer Welt, in der Microservices mehr und mehr zu einer Standardarchitektur für Java-basierte Anwendungen in der\nCloud werden, kann die JVM-Aufwärmzeit zu einer Einschränkung werden.</p>\n<p>Vor allem wenn es darum geht, als Reaktion auf Laständerungen neue Instanzen einer Anwendung aufzusetzen, kann die\nAufwärmzeit ein Problem darstellen. Native Images sind eine Möglichkeit, diese Probleme zu lösen, da ihr statisch im\nVoraus kompilierter Code keine Aufwärmzeit benötigt und somit eine kurze Startzeit hat. Aber selbst die kürzere\nStartzeit und der geringere Platzbedarf sind nicht ohne Nachteil. Die Gesamtleistung kann aufgrund der fehlenden\nJIT-Optimierungen zur Laufzeit langsamer sein. Es gibt ein neues OpenJDK-Projekt namens CRaC (Coordinated Restore at\nCheckpoint), dessen Ziel es ist, das JVM-Aufwärmproblem mit einem anderen Ansatz anzugehen. Die Idee ist, einen\nSchnappschuss der laufenden JVM zu machen, diesen in Dateien zu speichern und die JVM zu einem späteren Zeitpunkt (oder\nsogar auf einer anderen Maschine) wiederherzustellen.</p>\n<p>Dieser Vortrag gibt Ihnen einen kurzen Überblick über das CRaC-Projekt und zeigt einige Ergebnisse einer\nProof-of-Concept-Implementierung.</p>\n<p><strong>Materialien:</strong></p>\n<ul>\n<li><a href=\"/downloads/juggr_What_The_CRaC.pdf\">Folien zum Vortrag</a></li>\n</ul>","frontmatter":{"title":"What the CRaC - Superfast JVM startup","date":"2023-11-29T00:00:00.000Z","time":null,"speaker":["gerrit_grunwald"],"location":"zeiss","virtual":null,"poster":{"childImageSharp":{"id":"83946b5b-e38c-5b7d-ac9b-81ea660c5ee7","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e85848","images":{"fallback":{"src":"/static/44456e47b4e2d92792552c2d411e2518/84817/plakat_2023_11.png","srcSet":"/static/44456e47b4e2d92792552c2d411e2518/b8e70/plakat_2023_11.png 750w,\n/static/44456e47b4e2d92792552c2d411e2518/e5839/plakat_2023_11.png 1080w,\n/static/44456e47b4e2d92792552c2d411e2518/f51d5/plakat_2023_11.png 1366w,\n/static/44456e47b4e2d92792552c2d411e2518/84817/plakat_2023_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/44456e47b4e2d92792552c2d411e2518/e5d6f/plakat_2023_11.webp 750w,\n/static/44456e47b4e2d92792552c2d411e2518/0671f/plakat_2023_11.webp 1080w,\n/static/44456e47b4e2d92792552c2d411e2518/7e884/plakat_2023_11.webp 1366w,\n/static/44456e47b4e2d92792552c2d411e2518/e2c0d/plakat_2023_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen ist auf einem Fahrrad und hat einen alten Helm mit Fliegerbrille auf. Man sieht, dass er ziemlich schnell fährt.","tags":["java","performance","jdk"]},"fields":{"slug":"/talks/2023-11-29-crac/","sourceName":"talks"}}},{"node":{"id":"cafdb0d7-7218-5608-bd6f-c033864617fe","html":"<p>Wenn sich Google einem Thema widmet, dann meist richtig und mit vollem Einsatz. Genau das sieht man beim Thema Cross-Plattform: Google entwickelte Flutter, ein UI Framework, mit dem Native Apps für Mobile, Web, Desktop und Embedded mit einer einzigen Codebase in sehr kurzer Zeit entwickelt werden können.\nWas Flutter so einzigartig macht und warum wir es bei inovex bereits produktiv für Apps einsetzen, zeige ich dir in diesem Talk.\nAnhand verschiedener Beispiele und Live-Codings siehst du, warum uns Flutter so überzeugt hat. Damit sind wir nicht alleine - Toyota verwendet Flutter bereits für ihre neuen Infotainment Systems und viele weitere namhafte Firmen wie Microsoft, Canonical und BMW setzen ebenfalls auf das Framework.\nLass dich in Flutters Welt der Cross-Plattform entführen und davon begeistern!</p>","frontmatter":{"title":"Flutter, der heilige Gral der Cross-Plattform-Entwicklung?!","date":"2024-01-31T00:00:00.000Z","time":null,"speaker":["christoph_menzel"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"6540f80b-99c8-5564-862b-6fa611e899df","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#c8a858","images":{"fallback":{"src":"/static/1d7a6f48e70fdbaa09372642cdcfc472/84817/plakat_2024_01.png","srcSet":"/static/1d7a6f48e70fdbaa09372642cdcfc472/b8e70/plakat_2024_01.png 750w,\n/static/1d7a6f48e70fdbaa09372642cdcfc472/e5839/plakat_2024_01.png 1080w,\n/static/1d7a6f48e70fdbaa09372642cdcfc472/f51d5/plakat_2024_01.png 1366w,\n/static/1d7a6f48e70fdbaa09372642cdcfc472/84817/plakat_2024_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/1d7a6f48e70fdbaa09372642cdcfc472/e5d6f/plakat_2024_01.webp 750w,\n/static/1d7a6f48e70fdbaa09372642cdcfc472/0671f/plakat_2024_01.webp 1080w,\n/static/1d7a6f48e70fdbaa09372642cdcfc472/7e884/plakat_2024_01.webp 1366w,\n/static/1d7a6f48e70fdbaa09372642cdcfc472/e2c0d/plakat_2024_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt einen Hut und eine Umhängetasche und hat eine Peitsche in der linken Hand. In der rechten Hand hat er einen Gral mit Flügeln, den er begeistert ansieht.","tags":["mobile","frontend","non-jvm-language"]},"fields":{"slug":"/talks/2024-01-31-flutter/","sourceName":"talks"}}},{"node":{"id":"fafd1d08-20ad-5b94-8837-fc066b152f0d","html":"<p>Mit Architekturbewertungen ist es möglich, Schwächen und Potenziale von Softwarelösungen herauszuarbeiten, Entscheidungen abzusichern und Verbesserungsmaßnahmen zu bewerten. Klassische Analyseansätze aus diesem Umfeld wie ATAM sind fundiert, kommen aber gerade in beweglichen Softwarevorhaben etwas schwergewichtig, mitunter fast zeremoniell daher.\nIn diesem Vortrag mit interaktiven Elementen gebe ich einen lebendigen Einstieg in die Welt der Architekturbewertung. Vor allem lernt Ihr eine leichtgewichtige Herangehensweise kennen. Ihr könnt diese mit Eurem Team unmittelbar anwenden, Euer Softwaresystem beleuchten und zügig zu ersten Erkenntnissen kommen. Wir greifen auf die Essenzen etablierter Bewertungsmethoden zurück. Und erarbeiten uns einen roten Faden durch ein Review, inkl. möglicher Vertiefungspunkte für eine höhere Konfidenz im Bewertungsergebnis.</p>","frontmatter":{"title":"Schlanke Architektur-Reviews","date":"2024-02-28T00:00:00.000Z","time":null,"speaker":["stefan_zoerner_2"],"location":null,"virtual":null,"poster":null,"poster_alt":null,"tags":["architektur"]},"fields":{"slug":"/talks/2024-02-28-architektur-reviews/","sourceName":"talks"}}},{"node":{"id":"97f4123c-3293-532b-8ea6-6b81b355fd92","html":"<p>Rust ist eine relativ neue Programmiersprache, die vor allem als Systems-Level Programmiersprache und damit als Alternative zu C und C++\nentwickelt wurde. Der Fokus der Sprache liegt auf Speichersicherheit und der Vermeidung von Bugs, unter anderem auf Grund solcher Speicherfehler.</p>\n<p>Speichersicherheit ist bei Java kein so großes Thema wie bei C/C++, trotzdem gibt es einige Dinge in Rust, die auch für Java-Entwickler*innen\ninteressant sein könnten, um den eigenen Horizont zu erweitern. Denn genau wie Java hat auch Rust in gewisser Weise ein automatisches Speichermanagement,\njedoch ohne eine Virtuelle Maschine und ohne Garbage-Collector.\nUnd mittlerweile wird Rust auch immer häufiger außerhalb von klassischen C-Anwendungsgebieten wie Systemprogrammierung eingesetzt.\nRust kommt zur Entwicklung von Command-Line-Tools, Desktop-Applikationen, Server-Anwendungen und in der Cloud zum Einsatz.\nUnd mittels Web-Assembly lässt sich Rust sogar in Browsern ausführen.</p>\n<p>Dieser Vortrag ist der <strong>erste von zwei Teilen</strong> einer kleinen Rust-Vortragsreihe.</p>\n<ul>\n<li>In diesem Teil wird ein Einstieg in die Programmiersprache gegeben und die wesentlichen Konzepte - auch im Vergleich zu Java - beleuchtet.</li>\n<li>Im <a href=\"/talks/2024-04-24-rust2\">nächsten Teil</a> wird dann stärker auf den konkreten Einsatz der Sprache in Projekten und existierende Bibliotheken und Frameworks eingegangen.</li>\n</ul>","frontmatter":{"title":"Rust (Teil 1): Einführung in die Sprache","date":"2024-03-20T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":null,"virtual":null,"poster":null,"poster_alt":null,"tags":["programmiersprachen","performance","functional-programming","non-jvm-language","security"]},"fields":{"slug":"/talks/2024-03-20-rust/","sourceName":"talks"}}},{"node":{"id":"56c1a59c-f16a-5f43-aa33-412cf06ee342","html":"<p>Infos demnächst.</p>\n<p>Dieser Vortrag ist der <strong>zweite von zwei Teilen</strong> einer kleinen Rust-Vortragsreihe.</p>\n<ul>\n<li>Im <a href=\"/talks/2024-03-20-rust\">ersten Teil</a> wurde ein Einstieg in die Programmiersprache gegeben und die wesentlichen Konzepte - auch im Vergleich zu Java - beleuchtet.</li>\n<li>In diesem Teil wird stärker auf den konkreten Einsatz der Sprache in Projekten und existierende Bibliotheken und Frameworks eingegangen.</li>\n</ul>","frontmatter":{"title":"Rust (Teil 2)","date":"2024-04-24T00:00:00.000Z","time":null,"speaker":["konstantin_eger"],"location":null,"virtual":null,"poster":null,"poster_alt":null,"tags":["programmiersprachen","performance","functional-programming","non-jvm-language","security"]},"fields":{"slug":"/talks/2024-04-24-rust2/","sourceName":"talks"}}}]},"posts":{"edges":[]},"speakers":{"edges":[{"node":{"id":"ff0ef063-2c62-5f5c-8e8a-3fea00727337","html":"","frontmatter":{"name":"Alexander Casall","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/alexander_casall/","speakerId":"alexander_casall"}}},{"node":{"id":"2fce745c-9aae-524d-a24b-d39e282689b0","html":"","frontmatter":{"name":"Andre Tepper","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/andre_tepper/","speakerId":"andre_tepper"}}},{"node":{"id":"83212ced-9134-55d1-bd90-46f149e95898","html":"","frontmatter":{"name":"Bruno Devic","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/bruno_devic/","speakerId":"bruno_devic"}}},{"node":{"id":"02a5cfde-2b00-5350-a999-f314d4c0ee1e","html":"<p>Christian beschäftigt sich seit über 10 Jahren mit Java und ist seit über 7 Jahren Java-Trainer. Als Projektleiter und\nSoftware-Architekt konzipiert und implementiert er seit 10 Jahren komplexe Software-Systeme für Kunden aus\nunterschiedlichsten Branchen. Als Scrum Master ist er maßgeblich an der Entwicklung der freien Eclipse Distribution und\nvisuellen Java Entwicklungsumgebung RapidClipse.com sowie der Open Source Abfragesprache JPA-SQL beteiligt. Zudem ist\nChristian als Speaker bei zahlreichen Entwicklerkonferenzen bekannt.</p>","frontmatter":{"name":"Christian Kümmel","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#c8c8c8","images":{"fallback":{"src":"/static/663d1d267755d1addb5f7399c798dd28/9652e/christian_kuemmel.jpg","srcSet":"/static/663d1d267755d1addb5f7399c798dd28/1728b/christian_kuemmel.jpg 750w,\n/static/663d1d267755d1addb5f7399c798dd28/ab791/christian_kuemmel.jpg 1080w,\n/static/663d1d267755d1addb5f7399c798dd28/0955b/christian_kuemmel.jpg 1366w,\n/static/663d1d267755d1addb5f7399c798dd28/9652e/christian_kuemmel.jpg 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/663d1d267755d1addb5f7399c798dd28/d6c6a/christian_kuemmel.webp 750w,\n/static/663d1d267755d1addb5f7399c798dd28/ffa03/christian_kuemmel.webp 1080w,\n/static/663d1d267755d1addb5f7399c798dd28/af66e/christian_kuemmel.webp 1366w,\n/static/663d1d267755d1addb5f7399c798dd28/eb0ac/christian_kuemmel.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.0177083333333334}}},"twitter_name":null},"fields":{"slug":"/speakers/christian_kuemmel/","speakerId":"christian_kuemmel"}}},{"node":{"id":"78a4398b-6839-50d3-8f1e-5262def696d6","html":"<p><strong>Christoph Menzel</strong> ist Software-Entwickler mit Leib und Seele und seit 2022 als Head of Mobile & Web Development Teil des inovex Teams. Clean Code und Testautomatisierung sind für ihn zwei fundamentale Bestandteile guter Software-Entwicklung.\nEr unterstützt seine Kunden bei der Optimierung von Entwicklungsprozessen, hält Workshops zu Themen wie Unit Tests, Clean Code oder Continuous Integration & Delivery und gibt sein Wissen aktiv auf Konferenzen, Barcamps oder in Fachartikeln weiter.</p>","frontmatter":{"name":"Christoph Menzel","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/4a93039fc8abcf424a9e4aae04665797/13677/christoph_menzel.png","srcSet":"/static/4a93039fc8abcf424a9e4aae04665797/f054e/christoph_menzel.png 750w,\n/static/4a93039fc8abcf424a9e4aae04665797/13677/christoph_menzel.png 1000w","sizes":"100vw"},"sources":[{"srcSet":"/static/4a93039fc8abcf424a9e4aae04665797/4f03f/christoph_menzel.webp 750w,\n/static/4a93039fc8abcf424a9e4aae04665797/3cd29/christoph_menzel.webp 1000w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":null},"fields":{"slug":"/speakers/christoph_menzel/","speakerId":"christoph_menzel"}}},{"node":{"id":"7640e853-d184-5946-a052-be3b7deaa867","html":"<p>Damian ist Softwareentwickler bei der Carl Zeiss Digital Innovation GmbH in Görlitz. In den letzten Jahren war er für die Wartung und Weiterentwicklung einer großen Java-Enterprise-Anwendung im Bereich Logistik verantwortlich. Aktuell beschäftigt er sich mit Serverless, automatisierter Infrastrukturbereitstellung und ist ein begeisterter Wanderer durch die AWS-Landschaft geworden, der jeden Tag etwas Neues entdeckt.</p>","frontmatter":{"name":"Damian Dudziec","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#383838","images":{"fallback":{"src":"/static/5640e558ae686329d65703c5e957bb07/1f67d/damian_dudziec.jpg","srcSet":"/static/5640e558ae686329d65703c5e957bb07/74e81/damian_dudziec.jpg 750w,\n/static/5640e558ae686329d65703c5e957bb07/c4291/damian_dudziec.jpg 1080w,\n/static/5640e558ae686329d65703c5e957bb07/80c2b/damian_dudziec.jpg 1366w,\n/static/5640e558ae686329d65703c5e957bb07/1f67d/damian_dudziec.jpg 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/5640e558ae686329d65703c5e957bb07/77dd0/damian_dudziec.webp 750w,\n/static/5640e558ae686329d65703c5e957bb07/847ea/damian_dudziec.webp 1080w,\n/static/5640e558ae686329d65703c5e957bb07/c5bbd/damian_dudziec.webp 1366w,\n/static/5640e558ae686329d65703c5e957bb07/70a54/damian_dudziec.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4890625000000002}}},"twitter_name":null},"fields":{"slug":"/speakers/damian_dudziec/","speakerId":"damian_dudziec"}}},{"node":{"id":"2adfcaf8-baac-58d8-ac17-2e9e978bea1b","html":"<p><strong>Daniel Fesenmeyer</strong> arbeitet als Software Entwickler bei Bosch IO (Berlin). Seine Schwerpunkte sind Backend-Entwicklung, Testing und\nIAM. Derzeit besteht seine Haupttätigkeit darin, Keycloak-Erweiterungen und -Bugfixes zu implementieren, sowohl in\nKundenprojekten als auch in der Open Source Community.</p>","frontmatter":{"name":"Daniel Fesenmeyer","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#484848","images":{"fallback":{"src":"/static/ff8a246288f95ed463003fb141d5e735/f39ed/daniel_fesenmeyer.jpg","srcSet":"/static/ff8a246288f95ed463003fb141d5e735/53ca3/daniel_fesenmeyer.jpg 750w,\n/static/ff8a246288f95ed463003fb141d5e735/f39ed/daniel_fesenmeyer.jpg 1006w","sizes":"100vw"},"sources":[{"srcSet":"/static/ff8a246288f95ed463003fb141d5e735/4512e/daniel_fesenmeyer.webp 750w,\n/static/ff8a246288f95ed463003fb141d5e735/36031/daniel_fesenmeyer.webp 1006w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.18389662027833}}},"twitter_name":"fesicraft"},"fields":{"slug":"/speakers/daniel_fesenmeyer/","speakerId":"daniel_fesenmeyer"}}},{"node":{"id":"2c287f6d-72f9-5142-8d7e-8cb0049f7898","html":"<ul>\n<li>2008 -2011 bei der SQS AG als Softwaretester, Projektkoordinator, Testmanager in den Branchen Telekommunikation,\nBanken, öffentlicher Dienst</li>\n<li>Seit 2011 Trainer für ISTQB Foundation und Advanced Level</li>\n<li>Seit 2011 als Dozent an der FH Görlitz (Grundlagen des Softwaretestens)</li>\n<li>Seit 2011 Junior Operation Manager mit Themenschwerpunkte: Mitarbeiterführung, Aus- und Weiterbildung,\nMitarbeitergewinnung, Öffentlichkeitsarbeit</li>\n</ul>","frontmatter":{"name":"Daniel Sernow","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/daniel_sernow/","speakerId":"daniel_sernow"}}},{"node":{"id":"e86d9d23-67e9-58de-853e-30051fb1eabb","html":"<p><strong>Dániel Sulyok</strong> ist Software Developer bei Tallence. Am Standort Görlitz entwickelt er Anwendungen in Fullstack mit einem strengen Blick auf Usability und Accessibility.</p>","frontmatter":{"name":"Dániel Sulyok","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#181818","images":{"fallback":{"src":"/static/50081822309e984340e546ad54f158db/f2005/daniel_sulyok.jpg","srcSet":"/static/50081822309e984340e546ad54f158db/53c59/daniel_sulyok.jpg 750w,\n/static/50081822309e984340e546ad54f158db/64b93/daniel_sulyok.jpg 1080w,\n/static/50081822309e984340e546ad54f158db/2baac/daniel_sulyok.jpg 1366w,\n/static/50081822309e984340e546ad54f158db/f2005/daniel_sulyok.jpg 1778w","sizes":"100vw"},"sources":[{"srcSet":"/static/50081822309e984340e546ad54f158db/3970f/daniel_sulyok.webp 750w,\n/static/50081822309e984340e546ad54f158db/90a5d/daniel_sulyok.webp 1080w,\n/static/50081822309e984340e546ad54f158db/1e947/daniel_sulyok.webp 1366w,\n/static/50081822309e984340e546ad54f158db/8afd9/daniel_sulyok.webp 1778w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":0.6659167604049494}}},"twitter_name":null},"fields":{"slug":"/speakers/daniel_sulyok/","speakerId":"daniel_sulyok"}}},{"node":{"id":"770e92e8-4326-5909-ace2-ddfcc7deae8b","html":"<p>Denny arbeitet als Softwareentwickler bei der Ottogroup Solution Provider (OSP) GmbH, derzeit mit den Schwerpunkten\nSecurity und DevOps. Seit ca. 8 Jahren entwickelt er im Team Softwarelösungen in den verschiedensten Branchen und\nThemen. Immer mit Fokus auf agile Vorgehensweise und pragmatische Problemlösung.</p>","frontmatter":{"name":"Denny Israel","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#181818","images":{"fallback":{"src":"/static/5d26c2337d3979921b663ac24f9c75b4/18869/denny.israel.jpg","srcSet":"/static/5d26c2337d3979921b663ac24f9c75b4/18869/denny.israel.jpg 400w","sizes":"100vw"},"sources":[{"srcSet":"/static/5d26c2337d3979921b663ac24f9c75b4/3d164/denny.israel.webp 400w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.5}}},"twitter_name":"sideisra"},"fields":{"slug":"/speakers/denny_israel/","speakerId":"denny_israel"}}},{"node":{"id":"074397e2-c590-59cc-8c29-413f81c9e045","html":"<p>Erik Jähne hat von 2010 bis 2015 an der HS Zittau/Görlitz Bachelor und Master Informatik studiert. Seit 2015 ist er bei\nder Quanteo GmbH in Görlitz für Daimler tätig. Dort unter anderem im Lastest und PoC Bereich und als letztes an der\nEntwicklung der Testumgebung für die Sprachsteuerung der neuen Mercedes Fahrzeuge beteiligt.</p>","frontmatter":{"name":"Erik Jähne","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/erik_jaehne/","speakerId":"erik_jaehne"}}},{"node":{"id":"f13237e6-5775-5e35-bc7e-7ab125cff716","html":"<p>Gerrit Grunwald ist ein Softwareentwickler, der schon seit 40 Jahren gerne programmiert. Er ist ein echter Anhänger von\nOpen Source und hat sowohl an populären Projekten wie <a href=\"https://jfxtras.org/\">JFXtras.org</a> als auch an seinen eigenen\nProjekten (TilesFX, Medusa, Enzo, SteelSeries Swing, SteelSeries Canvas, JDKMon) mitgewirkt.</p>\n<p>Gerrit bloggt regelmäßig auf <a href=\"http://harmonic-code.org/\">http://harmonic-code.org</a>, er ist ein aktives Mitglied der\nJava-Community, in der er die Java User Group Münster gegründet hat und leitet, er ist ein JavaOne Rockstar und ein Java\nChampion. Er ist Sprecher auf internationalen Konferenzen und User Groups und schreibt für verschiedene Magazine.</p>","frontmatter":{"name":"Gerrit Grunwald","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#080808","images":{"fallback":{"src":"/static/eb32dcf4d119698fb4c41c828663b429/83d4e/gerrit_grunwald.jpg","srcSet":"/static/eb32dcf4d119698fb4c41c828663b429/b32a2/gerrit_grunwald.jpg 750w,\n/static/eb32dcf4d119698fb4c41c828663b429/83d4e/gerrit_grunwald.jpg 1031w","sizes":"100vw"},"sources":[{"srcSet":"/static/eb32dcf4d119698fb4c41c828663b429/1bd31/gerrit_grunwald.webp 750w,\n/static/eb32dcf4d119698fb4c41c828663b429/3847e/gerrit_grunwald.webp 1031w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.0775945683802135}}},"twitter_name":null},"fields":{"slug":"/speakers/gerrit_grunwald/","speakerId":"gerrit_grunwald"}}},{"node":{"id":"f8ac41fc-2d52-5c52-8a5b-cc148abad020","html":"<p>Gregor ist einer der Organisatoren der Java User Group Mannheim und Gründer der Softwerkskammer Rhein-Neckar. Er\narbeitet als Team Lead bei LivePerson. Sein erstes Programm war ein in BASIC geschriebenes Text Adventure.</p>","frontmatter":{"name":"Gregor Trefs","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#b8a898","images":{"fallback":{"src":"/static/4b9c6a7a832986754e4721d4ea4f9fcf/d6138/gregor_trefs.png","srcSet":"/static/4b9c6a7a832986754e4721d4ea4f9fcf/d6138/gregor_trefs.png 400w","sizes":"100vw"},"sources":[{"srcSet":"/static/4b9c6a7a832986754e4721d4ea4f9fcf/416c3/gregor_trefs.webp 400w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":"gtrefs"},"fields":{"slug":"/speakers/gregor_trefs/","speakerId":"gregor_trefs"}}},{"node":{"id":"1dd06ad5-50e3-58f4-b8a3-30ffdf3c4cc0","html":"<p>Hannes Kretschmer arbeitet als Softwareentwickler bei der Carl Zeiss Digital Innovation AG in Görlitz. Dabei beschäftigt\ner sich neben der Entwicklung von Java Applikationen mit der Optimierung von Build- und Deployment-Prozessen.</p>","frontmatter":{"name":"Hannes Kretschmer","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#181818","images":{"fallback":{"src":"/static/cdc8e44feda8ef3b0686a0dce92fa4cb/bd0c7/hannes_kretschmer.jpg","srcSet":"/static/cdc8e44feda8ef3b0686a0dce92fa4cb/51b3b/hannes_kretschmer.jpg 750w,\n/static/cdc8e44feda8ef3b0686a0dce92fa4cb/4693e/hannes_kretschmer.jpg 1080w,\n/static/cdc8e44feda8ef3b0686a0dce92fa4cb/b5f28/hannes_kretschmer.jpg 1366w,\n/static/cdc8e44feda8ef3b0686a0dce92fa4cb/bd0c7/hannes_kretschmer.jpg 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/cdc8e44feda8ef3b0686a0dce92fa4cb/6e47b/hannes_kretschmer.webp 750w,\n/static/cdc8e44feda8ef3b0686a0dce92fa4cb/6e082/hannes_kretschmer.webp 1080w,\n/static/cdc8e44feda8ef3b0686a0dce92fa4cb/19fb5/hannes_kretschmer.webp 1366w,\n/static/cdc8e44feda8ef3b0686a0dce92fa4cb/a1630/hannes_kretschmer.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4979166666666666}}},"twitter_name":null},"fields":{"slug":"/speakers/hannes_kretschmer/","speakerId":"hannes_kretschmer"}}},{"node":{"id":"35a72c9a-cbdf-5f39-8b2a-1813b7e94cc7","html":"","frontmatter":{"name":"Hans Markwart","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/hans_markwart/","speakerId":"hans_markwart"}}},{"node":{"id":"93129b19-f730-5e77-879a-58c8e08a198a","html":"<p>Hendrik Ebbers (<a href=\"https://twitter.com/hendrikEbbers\">@hendrikEbbers</a>) ist Co-Founder der Karakun AG\n(<a href=\"https://dev.karakun.com/\">dev.karakun.com</a>). Hendrik leitet die JUG Dortmund. Sein Buch \"Mastering JavaFX 8 Controls\"\nist 2014 bei Oracle Press erschienen. Hendrik ist Java Champion, JavaOne Rockstar und JCP Expert Group Member.</p>","frontmatter":{"name":"Hendrik Ebbers","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#080808","images":{"fallback":{"src":"/static/274aec9265704ce5d8cbe2794470665a/d6138/hendrik_ebbers.png","srcSet":"/static/274aec9265704ce5d8cbe2794470665a/d6138/hendrik_ebbers.png 400w","sizes":"100vw"},"sources":[{"srcSet":"/static/274aec9265704ce5d8cbe2794470665a/416c3/hendrik_ebbers.webp 400w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":"hendrikEbbers"},"fields":{"slug":"/speakers/hendrik_ebbers/","speakerId":"hendrik_ebbers"}}},{"node":{"id":"44493f6a-f9c2-527b-a086-fed0da68f1c4","html":"","frontmatter":{"name":"Ingo Körner","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/ingo_koerner/","speakerId":"ingo_koerner"}}},{"node":{"id":"1f477a08-7805-5bf3-984b-4afec0b2cd45","html":"<p><strong>Jens Leuschner</strong> hat vor einem Jahr sein Informatik-Studium an der Hochschule Zittau/Görlitz abgeschlossen und\narbeitet seitdem als Junior Softwareentwickler bei der CIDEON Software GmbH & Co. KG in Görlitz, wo er zuvor als\nWerksstudent tätig war. Ein besonderer Schwerpunkt seiner Arbeit beschäftigt sich mit der Entwicklung webbasierter\nIntegrationslösungen im Bereich von SAP und cloudbasierten CAD-Systemen.</p>","frontmatter":{"name":"Jens Leuschner","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d8f8f8","images":{"fallback":{"src":"/static/a1e48f2c95b162ec6bf5d44449042bca/0fdf4/jens_leuschner.jpg","srcSet":"/static/a1e48f2c95b162ec6bf5d44449042bca/0fdf4/jens_leuschner.jpg 300w","sizes":"100vw"},"sources":[{"srcSet":"/static/a1e48f2c95b162ec6bf5d44449042bca/078c3/jens_leuschner.webp 300w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":null},"fields":{"slug":"/speakers/jens_leuschner/","speakerId":"jens_leuschner"}}},{"node":{"id":"d857c285-3a43-5120-8453-7b2f87424152","html":"<p><strong>Kay Grebenstein</strong> arbeitet als Tester und agiler QA-Coach für die Saxiona Systems AG, Dresden. Er hat in den letzten\nJahren in Projekten unterschiedlicher fachlicher Domänen (Telekommunikation, Industrie, Versandhandel, Energie, …)\nQualität gesichert und Software getestet.</p>","frontmatter":{"name":"Kay Grebenstein","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/kay_grebenstein/","speakerId":"kay_grebenstein"}}},{"node":{"id":"abafb571-eb5b-5194-818a-f2b18a1382c9","html":"","frontmatter":{"name":"Konstantin Eger","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/konstantin_eger/","speakerId":"konstantin_eger"}}},{"node":{"id":"184d7622-4aae-50bd-a14c-f44f4db9c575","html":"<p>Lars Röwekamp, Gründer des IT-Beratungs- und Entwicklungsunternehmens open knowledge GmbH, beschäftigt sich im Rahmen\nseiner Tätigkeit als \"CIO New Technologies\" mit der eingehenden Analyse und Bewertung neuer Software- und\nTechnologietrends. Ein besonderer Schwerpunkt seiner Arbeit liegt derzeit in den Bereichen Enterprise und Mobile\nComputing, wobei neben Design- und Architekturfragen insbesondere die Real-Life-Aspekte im Fokus seiner Betrachtung\nstehen. Lars Röwekamp, Autor mehrerer Fachartikel und -bücher, beschäftigt sich seit der Geburtsstunde von Java mit\ndieser Programmiersprache, wobei er einen Großteil seiner praktischen Erfahrungen im Rahmen großer internationaler\nProjekte sammeln konnte.</p>","frontmatter":{"name":"Lars Röwekamp","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e8e8e8","images":{"fallback":{"src":"/static/861b10f092bc6e58a4082b1150733dc8/6f086/lars_roewekamp.png","srcSet":"/static/861b10f092bc6e58a4082b1150733dc8/6f086/lars_roewekamp.png 500w","sizes":"100vw"},"sources":[{"srcSet":"/static/861b10f092bc6e58a4082b1150733dc8/b9f92/lars_roewekamp.webp 500w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.144}}},"twitter_name":"mobileLarson"},"fields":{"slug":"/speakers/lars_roewekamp/","speakerId":"lars_roewekamp"}}},{"node":{"id":"fee4bf04-1e31-54b1-b809-c3d510531b5c","html":"<p>Maik arbeitet als Softwareentwickler bei der Tallence AG, derzeit mit den Schwerpunkten Java und OAuth/OpenID Connect.\nSeit ca. 12 Jahren entwickelt er im Team Softwarelösungen in den verschiedensten Branchen und Themen. Immer mit Fokus\nauf agile Vorgehensweise und pragmatische Problemlösung.</p>","frontmatter":{"name":"Maik Wagner","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#a8c8e8","images":{"fallback":{"src":"/static/5950914f5c41841b7071a04a8e9bbcfd/5b03d/maik_wagner.jpg","srcSet":"/static/5950914f5c41841b7071a04a8e9bbcfd/4423a/maik_wagner.jpg 750w,\n/static/5950914f5c41841b7071a04a8e9bbcfd/5b03d/maik_wagner.jpg 960w","sizes":"100vw"},"sources":[{"srcSet":"/static/5950914f5c41841b7071a04a8e9bbcfd/3131c/maik_wagner.webp 750w,\n/static/5950914f5c41841b7071a04a8e9bbcfd/479a8/maik_wagner.webp 960w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.25}}},"twitter_name":null},"fields":{"slug":"/speakers/maik_wagner/","speakerId":"maik_wagner"}}},{"node":{"id":"c48b140e-258d-5030-8fcc-70fedc7dd5b4","html":"<p>Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten\nder Anwendungsentwicklung, wobei der Fokus auf dem Frontend liegt. Daneben interessieren ihn Themen wie funktionale\nProgrammierung und neue Programmiersprachen. Manuel ist Gründungsmitglied und Organisator der Java User Group Görlitz\nund steuert hierfür und auch für andere Usergroups und Konferenzen regelmäßig Vorträge bei.</p>","frontmatter":{"name":"Manuel Mauky","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#c8d8e8","images":{"fallback":{"src":"/static/c80baf199647599d13cde2f183750fd7/9ce86/manuel_mauky.jpg","srcSet":"/static/c80baf199647599d13cde2f183750fd7/d2e45/manuel_mauky.jpg 750w,\n/static/c80baf199647599d13cde2f183750fd7/fd5af/manuel_mauky.jpg 1080w,\n/static/c80baf199647599d13cde2f183750fd7/c71d7/manuel_mauky.jpg 1366w,\n/static/c80baf199647599d13cde2f183750fd7/9ce86/manuel_mauky.jpg 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/c80baf199647599d13cde2f183750fd7/4d4e9/manuel_mauky.webp 750w,\n/static/c80baf199647599d13cde2f183750fd7/8ff35/manuel_mauky.webp 1080w,\n/static/c80baf199647599d13cde2f183750fd7/2b2db/manuel_mauky.webp 1366w,\n/static/c80baf199647599d13cde2f183750fd7/7188c/manuel_mauky.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.3161458333333333}}},"twitter_name":"manuel_mauky"},"fields":{"slug":"/speakers/manuel_mauky/","speakerId":"manuel_mauky"}}},{"node":{"id":"83b497c1-a32d-5e39-a543-439154b750d9","html":"<p><strong>Marco Gotthans</strong> arbeitet als Tester bei der ZEISS Digital Innovation in Görlitz. Mit automatisierten Testscripten stellt er\nSoftwarequalität sicher. In der Industrie 4.0 beschäftigt er sich mit den vielen neuen Herausforderungen der\nQualitätssicherung, die sich aus der Verbindung von komplexen Maschinensteuerungen mit Cloudsystemen ergeben.</p>","frontmatter":{"name":"Marco Gotthans","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#081838","images":{"fallback":{"src":"/static/d96c9533996a3deed2a5551b1a94c812/3b4fe/marco_gotthans.jpg","srcSet":"/static/d96c9533996a3deed2a5551b1a94c812/b0c6e/marco_gotthans.jpg 750w,\n/static/d96c9533996a3deed2a5551b1a94c812/3b4fe/marco_gotthans.jpg 768w","sizes":"100vw"},"sources":[{"srcSet":"/static/d96c9533996a3deed2a5551b1a94c812/4c1cf/marco_gotthans.webp 750w,\n/static/d96c9533996a3deed2a5551b1a94c812/9f5d6/marco_gotthans.webp 768w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.3333333333333333}}},"twitter_name":null},"fields":{"slug":"/speakers/marco_gotthans/","speakerId":"marco_gotthans"}}},{"node":{"id":"d0f25d9d-4106-5691-a1b2-28cbe4275e46","html":"","frontmatter":{"name":"Marcus Döring","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/marcus_doering/","speakerId":"marcus_doering"}}},{"node":{"id":"9e00ea79-267c-5db0-9e41-f5d872b4c595","html":"","frontmatter":{"name":"Mario Mann","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/mario_mann/","speakerId":"mario_mann"}}},{"node":{"id":"d08d4526-e68f-5a1d-8a78-6c5a99cbe1e4","html":"","frontmatter":{"name":"Mario Reichel","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/mario_reichel/","speakerId":"mario_reichel"}}},{"node":{"id":"678c9f26-730c-5aff-999b-bd4eb93dc92f","html":"<p><strong>Mariusz Zienkiewicz</strong> hat nach seinem Studium an HTWS Zittau/Görlitz bei CIDEON Software GmbH & Co. KG angefangen und\nist dort seit 19 Jahren tätig. Hier arbeitet er als Senior Expert Developer. Seine beruflichen Schwerpunkte liegen in\nder Steuerung von ALM-Prozessen und der agilen Softwareentwicklung im Umfeld von C, C++ und Java. Aktuell beschäftigt er\nsich mit Cloud-Technologien.</p>","frontmatter":{"name":"Mariusz Zienkiewicz","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#281818","images":{"fallback":{"src":"/static/bae1e2f992c7bebba96ec2dc974a0895/0fdf4/mariusz_zienkiewicz.jpg","srcSet":"/static/bae1e2f992c7bebba96ec2dc974a0895/0fdf4/mariusz_zienkiewicz.jpg 300w","sizes":"100vw"},"sources":[{"srcSet":"/static/bae1e2f992c7bebba96ec2dc974a0895/078c3/mariusz_zienkiewicz.webp 300w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":null},"fields":{"slug":"/speakers/mariusz_zienkiewicz/","speakerId":"mariusz_zienkiewicz"}}},{"node":{"id":"5834f4d7-e0a3-505c-b1d0-81a37f5144f1","html":"","frontmatter":{"name":"Mark Ziener","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/mark_ziener/","speakerId":"mark_ziener"}}},{"node":{"id":"74ed9e96-8a2b-59cb-8642-93f5dec4d7b3","html":"","frontmatter":{"name":"Marko Modsching","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/marko_modsching/","speakerId":"marko_modsching"}}},{"node":{"id":"af5cd69a-023f-577f-9cb1-5f5185d0848d","html":"<p>Markus entwickelt seit 20 Jahren mit seinem Team Developer-Tools für Java und alle wichtigen Datenbanksysteme sowie\nIndividualsoftware für Endkunden. Er ist Product Owner der freien Eclipse Distribution und visuellen Java\nEntwicklungsumgebung RapidClipse sowie der Open Source Abfragesprache JPA-SQL. Markus ist Gründer und CEO von\nMicroStream, Chefredakteur des kostenlosen Java Magazins JAVAPRO, Co-Organisator der Java Konferenz JCON, freier Autor\nfür verschiedene Fachzeitschriften sowie Speaker bei zahlreichen Entwicklerkonferenzen, User Groups und Meetups.</p>","frontmatter":{"name":"Markus Kett","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#58a8d8","images":{"fallback":{"src":"/static/ce58d8e1afec86c71bef3c5971759db8/eadd3/markus_kett.png","srcSet":"/static/ce58d8e1afec86c71bef3c5971759db8/eadd3/markus_kett.png 640w","sizes":"100vw"},"sources":[{"srcSet":"/static/ce58d8e1afec86c71bef3c5971759db8/90d07/markus_kett.webp 640w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":"MarkusKett"},"fields":{"slug":"/speakers/markus_kett/","speakerId":"markus_kett"}}},{"node":{"id":"b0aa71a0-d2a3-5a2a-8831-2137b43e583d","html":"<p><strong>Markus Weiland</strong> arbeitet als Freelance Solution Architect im ecommerce unter anderem an der Einführung und Migration von Content Management Lösungen für größere Unternehmen mit komplexen Geschäftsprozessen. Er ist notorisch unzufrieden mit den Lock-in-Effekten geschlossener Plattformen und Verfechter von Libre Software.</p>","frontmatter":{"name":"Markus Weiland","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#080808","images":{"fallback":{"src":"/static/9a5a3c451d197c3c973e2af76ac66c29/47930/markus_weiland.jpg","srcSet":"/static/9a5a3c451d197c3c973e2af76ac66c29/47930/markus_weiland.jpg 400w","sizes":"100vw"},"sources":[{"srcSet":"/static/9a5a3c451d197c3c973e2af76ac66c29/416c3/markus_weiland.webp 400w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":null},"fields":{"slug":"/speakers/markus_weiland/","speakerId":"markus_weiland"}}},{"node":{"id":"2376b174-04f1-5b56-b72f-8201a1dfb2a5","html":"<p>Marlene ist freischaffende Illustratorin und Künstlerin und widmet sich in ihrem künstlerischen Schaffen regelmäßig\nThemen aus der Informatik und Mathematik. Davor hat sie als Software-Entwicklerin gearbeitet. Zudem ist sie\nMitorganisatorin der Java User Group Görlitz und organisiert den Chaostreff Görlitz.</p>","frontmatter":{"name":"Marlene Knoche","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e8f8f8","images":{"fallback":{"src":"/static/fb8c1a1fc6c46340f65bfc9186c17d03/afa21/marlene_knoche.jpg","srcSet":"/static/fb8c1a1fc6c46340f65bfc9186c17d03/0f5ce/marlene_knoche.jpg 750w,\n/static/fb8c1a1fc6c46340f65bfc9186c17d03/b74b1/marlene_knoche.jpg 1080w,\n/static/fb8c1a1fc6c46340f65bfc9186c17d03/afa21/marlene_knoche.jpg 1280w","sizes":"100vw"},"sources":[{"srcSet":"/static/fb8c1a1fc6c46340f65bfc9186c17d03/4f03f/marlene_knoche.webp 750w,\n/static/fb8c1a1fc6c46340f65bfc9186c17d03/4f506/marlene_knoche.webp 1080w,\n/static/fb8c1a1fc6c46340f65bfc9186c17d03/9e21f/marlene_knoche.webp 1280w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":null},"fields":{"slug":"/speakers/marlene_knoche/","speakerId":"marlene_knoche"}}},{"node":{"id":"db05ced3-0480-51fe-83be-d0149d94da93","html":"<p>Max Wielsch ist seit 2011 als Software-Entwickler bei der Saxonia Systems AG tätig. Derzeit beschäftigt er sich mit der\nMigration von monolithischen Architekturen hin zu entkoppelten Service-Architekturen im Kontext von\nJava-Enterprise-Applikationen. Dabei ist er von Backend bis Frontend involviert. Besondere Begeisterung empfindet er für\nReact als Vertreter von aktuellen JavaScript-UI-Bibliotheken, die einen funktionalen Stil der Entwicklung unterstützen.\nIn seiner Freizeit engagiert sich Max als Organisator der Java User Group Görlitz, um auch in der östlichsten Stadt\nDeutschlands die Vielfalt von IT-Angeboten zu erhöhen und insbesondere die Community zu unterstützen.</p>","frontmatter":{"name":"Max Wielsch","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#484858","images":{"fallback":{"src":"/static/0fb18b404d101e5878db1bc4a490cf19/bbd03/max_wielsch.jpg","srcSet":"/static/0fb18b404d101e5878db1bc4a490cf19/99918/max_wielsch.jpg 750w,\n/static/0fb18b404d101e5878db1bc4a490cf19/f449b/max_wielsch.jpg 1080w,\n/static/0fb18b404d101e5878db1bc4a490cf19/34fc5/max_wielsch.jpg 1366w,\n/static/0fb18b404d101e5878db1bc4a490cf19/bbd03/max_wielsch.jpg 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/0fb18b404d101e5878db1bc4a490cf19/e5fa4/max_wielsch.webp 750w,\n/static/0fb18b404d101e5878db1bc4a490cf19/171d7/max_wielsch.webp 1080w,\n/static/0fb18b404d101e5878db1bc4a490cf19/b1984/max_wielsch.webp 1366w,\n/static/0fb18b404d101e5878db1bc4a490cf19/ad9f4/max_wielsch.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.5}}},"twitter_name":null},"fields":{"slug":"/speakers/max_wielsch/","speakerId":"max_wielsch"}}},{"node":{"id":"f042c1af-7b71-5d8f-ab98-aa158cb2a418","html":"","frontmatter":{"name":"Michael Förster","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/michael_foerster/","speakerId":"michael_foerster"}}},{"node":{"id":"21c7def1-78a4-52e2-bf13-b3a646e3215d","html":"<p>Seit Mitte 2010 arbeitet <strong>Michael Hunger</strong> eng mit Neo Technology zusammen, um deren Graphendatenbank\nNeo4j noch leichter für Entwickler zugänglich zu machen. Hauptinteressensgebiete sind dort Integration mit anderen\nTechnologien, wie z.B. Spring-Data, Datenimport und Performance. Er unterstützt alle Nutzer von Neo4j tagtäglich bei der\nerfolgreichen Realisierung ihrer Projekte und Lösung ihrer Fragen und Probleme.</p>\n<p>Michael arbeitet an mehreren Open Source Projekten mit, ist Autor, Editor, Buch-Reviewer und häufiger Sprecher und\nOrganisator von Konferenzen.</p>","frontmatter":{"name":"Michael Hunger","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#181808","images":{"fallback":{"src":"/static/a27527592fa9acc54399d3ab9508193f/30cdc/michael_hunger.png","srcSet":"/static/a27527592fa9acc54399d3ab9508193f/30cdc/michael_hunger.png 300w","sizes":"100vw"},"sources":[{"srcSet":"/static/a27527592fa9acc54399d3ab9508193f/078c3/michael_hunger.webp 300w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":"mesirii"},"fields":{"slug":"/speakers/michael_hunger/","speakerId":"michael_hunger"}}},{"node":{"id":"fc3d2a4f-3ab8-5fc9-aa19-09fc69dd1385","html":"","frontmatter":{"name":"Michael Thiele","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/michael_thiele/","speakerId":"michael_thiele"}}},{"node":{"id":"917f2c35-500a-5f14-bfb1-d99f287d2afe","html":"","frontmatter":{"name":"Michael Wiedeking","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/michael_wiedeking/","speakerId":"michael_wiedeking"}}},{"node":{"id":"543c0c0e-1ed8-519c-a2d3-544f86c7b5d2","html":"<p>Nico Förster arbeitet als Softwareentwickler bei der Carl Zeiss Digital Innovation GmbH in Görlitz. Er ist im Bereich\nder Softwareevolution tätig und beschäftigt sich aktuell mit der Weiterentwicklung und Wartung einer umfangreichen\nJava-Enterprise-Applikation im Bereich Schienenlogistik. Sein Interessengebiet umfasst außerdem die Bereiche IT- und\nApplication Security.</p>","frontmatter":{"name":"Nico Förster","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#485858","images":{"fallback":{"src":"/static/01f1f076678841fa70905cc41bb50757/18869/nico_foerster.jpg","srcSet":"/static/01f1f076678841fa70905cc41bb50757/18869/nico_foerster.jpg 400w","sizes":"100vw"},"sources":[{"srcSet":"/static/01f1f076678841fa70905cc41bb50757/3d164/nico_foerster.webp 400w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.5}}},"twitter_name":null},"fields":{"slug":"/speakers/nico_foerster/","speakerId":"nico_foerster"}}},{"node":{"id":"8402dc7e-d767-5b77-8ca3-ff9c967248fb","html":"<p><strong>Oliver Drotbohm</strong> ist Teil des Spring Engineering Teams bei VMware. Seine Arbeitsschwerpunkte liegen im Bereich Softwarearchitektur, Domain-Driven Design, REST, Spring und Persistenztechnologien. Sein neues Buch \"Modulithic Applications with Spring\" erscheint 2023.</p>","frontmatter":{"name":"Oliver Drotbohm","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e8e8e8","images":{"fallback":{"src":"/static/bc32a8e1242b1987951435e5d8008305/94804/oliver_drotbohm.png","srcSet":"/static/bc32a8e1242b1987951435e5d8008305/94804/oliver_drotbohm.png 491w","sizes":"100vw"},"sources":[{"srcSet":"/static/bc32a8e1242b1987951435e5d8008305/d94cc/oliver_drotbohm.webp 491w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":"odrotbohm"},"fields":{"slug":"/speakers/oliver_drotbohm/","speakerId":"oliver_drotbohm"}}},{"node":{"id":"c8fa437e-3c34-56b6-b03b-c67c1370f111","html":"<p><strong>Patryk Lewandowski</strong> ist ein Softwareentwickler, der bei Zeiss Digital Innovation GmbH arbeitet. Kürzlich hat er\nerfolgreich eine Zertifizierung für Java 17 abgeschlossen. Er hat ein starkes Interesse an neuen Technologien,\nSoftwarearchitektur und der Suche nach den richtigen Werkzeugen für die jeweilige Aufgabe.</p>","frontmatter":{"name":"Patryk Lewandowski","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#283828","images":{"fallback":{"src":"/static/373970275b508640294e2478b4090c54/b52c4/patryk_lewandowski.jpg","srcSet":"/static/373970275b508640294e2478b4090c54/ae2f6/patryk_lewandowski.jpg 750w,\n/static/373970275b508640294e2478b4090c54/1a7b3/patryk_lewandowski.jpg 1080w,\n/static/373970275b508640294e2478b4090c54/1748d/patryk_lewandowski.jpg 1366w,\n/static/373970275b508640294e2478b4090c54/b52c4/patryk_lewandowski.jpg 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/373970275b508640294e2478b4090c54/8c41c/patryk_lewandowski.webp 750w,\n/static/373970275b508640294e2478b4090c54/b826b/patryk_lewandowski.webp 1080w,\n/static/373970275b508640294e2478b4090c54/d4680/patryk_lewandowski.webp 1366w,\n/static/373970275b508640294e2478b4090c54/5e02f/patryk_lewandowski.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.2494791666666667}}},"twitter_name":null},"fields":{"slug":"/speakers/patryk_lewandowski/","speakerId":"patryk_lewandowski"}}},{"node":{"id":"339b9441-8737-533f-aefe-b31bbb6663f4","html":"","frontmatter":{"name":"Paul Weinhold","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/paul_weinhold/","speakerId":"paul_weinhold"}}},{"node":{"id":"e52c08b9-aaed-5384-920c-d08af9991f5b","html":"<p><strong>Pawel Adaszewski</strong> ist als Softwareentwickler bei der Carl Zeiss Digital Innovation GmbH in Görlitz tätig. In seiner täglichen Arbeit\nversucht er die Herausforderungen aus der Industrial-IoT-Welt mithilfe der AWS-Cloud zu bewältigen. Zu seinen\nHauptaufgaben gehören das Design und die Erstellung von automatisch bereitgestellten Serverless-Cloud-Infrastrukturen.</p>","frontmatter":{"name":"Pawel Adaszewski","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#c8c8e8","images":{"fallback":{"src":"/static/276b01211c38e45a877d2f2a5d1a4532/00175/pawel_adaszewski.jpg","srcSet":"/static/276b01211c38e45a877d2f2a5d1a4532/ffc4f/pawel_adaszewski.jpg 750w,\n/static/276b01211c38e45a877d2f2a5d1a4532/00175/pawel_adaszewski.jpg 1080w","sizes":"100vw"},"sources":[{"srcSet":"/static/276b01211c38e45a877d2f2a5d1a4532/6e066/pawel_adaszewski.webp 750w,\n/static/276b01211c38e45a877d2f2a5d1a4532/9683a/pawel_adaszewski.webp 1080w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.6444444444444444}}},"twitter_name":null},"fields":{"slug":"/speakers/pawel_adaszewski/","speakerId":"pawel_adaszewski"}}},{"node":{"id":"304f3f2c-44ca-5275-9f73-5b789038daf0","html":"","frontmatter":{"name":"Richard Hauswald","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/richard_hauswald/","speakerId":"richard_hauswald"}}},{"node":{"id":"18051d64-e79b-5ad5-bdc3-0b0f822ae644","html":"","frontmatter":{"name":"Robert Wirbs","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/robert_wirbs/","speakerId":"robert_wirbs"}}},{"node":{"id":"54a0f9fe-80ab-52ba-9aea-e3f2a5dd045f","html":"<p><strong>Roland Weisleder</strong> ist freiberuflicher Softwareentwickler und seit 2009 im Java-Ökosystem unterwegs. Sein Schwerpunkt ist die Stabilisierung und Weiterentwicklung von gewachsenen Enterprise-Anwendungen. Er hat eine Leidenschaft für Test- und Buildautomatisierung und verfolgt das Ziel, dass Prozesse in der Softwareentwicklung einfacher und robuster werden. Seine Erfahrungen teilt er in Vorträgen im In- und Ausland.</p>","frontmatter":{"name":"Roland Weisleder","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#98c8f8","images":{"fallback":{"src":"/static/0292a65386102f7b15c663142861115e/22e9f/roland_weisleder.jpg","srcSet":"/static/0292a65386102f7b15c663142861115e/22e9f/roland_weisleder.jpg 500w","sizes":"100vw"},"sources":[{"srcSet":"/static/0292a65386102f7b15c663142861115e/024c8/roland_weisleder.webp 500w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":0.7}}},"twitter_name":"Ro_Wei"},"fields":{"slug":"/speakers/roland_weisleder/","speakerId":"roland_weisleder"}}},{"node":{"id":"cb2ea0b2-b790-5204-9f7b-e1cd0f0583c1","html":"","frontmatter":{"name":"Sebastian Schmeck","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/sebastian_schmeck/","speakerId":"sebastian_schmeck"}}},{"node":{"id":"87a83879-1b5e-50f5-9829-2699d9a01da5","html":"<p><strong>Sergej Tihonov</strong> ist ein freiberuflicher Softwareentwickler. Seit mehr als 8 Jahren widmet er sich der Entwicklung von komplexen Softwaresystemen und Open-Source-Projekten. Seine Tätigkeitsschwerpunkte sind Projektmanagement, Softwarearchitektur und Projektstabilisierung. Privat geht er gerne barfuß joggen.</p>","frontmatter":{"name":"Sergej Tihonov","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#787878","images":{"fallback":{"src":"/static/b485586e0b2c66703b49784827202ddd/22e9f/sergej_tihonov.jpg","srcSet":"/static/b485586e0b2c66703b49784827202ddd/22e9f/sergej_tihonov.jpg 500w","sizes":"100vw"},"sources":[{"srcSet":"/static/b485586e0b2c66703b49784827202ddd/024c8/sergej_tihonov.webp 500w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":0.7}}},"twitter_name":"EvenMoreDev"},"fields":{"slug":"/speakers/sergej_tihonov/","speakerId":"sergej_tihonov"}}},{"node":{"id":"4f81ccbd-2893-5804-a68a-04c6b8c20f75","html":"<p>Simon arbeitet als Softwareentwickler bei der Korasoft GmbH. Er findet es spannend, wie in der SAP Welt wenige Zeilen\nCode riesige Unternehmen steuern. Manchmal hat er dabei das Gefühl, sich in einem Museum zu befinden, während er auf der\nanderen Seite mit innovativen Technologien am Puls der Zeit sein darf. Dementsprechend reicht sein Erfahrungsspektrum\nvon traditionsreichen ABAP Reports bis hin zu modernen Cloud Foundry Apps.</p>","frontmatter":{"name":"Simon Roloff","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e8e8e8","images":{"fallback":{"src":"/static/8997189be722553b2c839d4576fdee41/f76fb/simon_roloff.png","srcSet":"/static/8997189be722553b2c839d4576fdee41/0dee1/simon_roloff.png 750w,\n/static/8997189be722553b2c839d4576fdee41/8beaa/simon_roloff.png 1080w,\n/static/8997189be722553b2c839d4576fdee41/f76fb/simon_roloff.png 1182w","sizes":"100vw"},"sources":[{"srcSet":"/static/8997189be722553b2c839d4576fdee41/a66aa/simon_roloff.webp 750w,\n/static/8997189be722553b2c839d4576fdee41/65dd5/simon_roloff.webp 1080w,\n/static/8997189be722553b2c839d4576fdee41/3c6ec/simon_roloff.webp 1182w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":0.5626057529610828}}},"twitter_name":null},"fields":{"slug":"/speakers/simon_roloff/","speakerId":"simon_roloff"}}},{"node":{"id":"a26cc991-7e1d-5caa-8926-7a52b0fa93e6","html":"","frontmatter":{"name":"Stefan Barth","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/stefan_barth/","speakerId":"stefan_barth"}}},{"node":{"id":"63ab1902-d259-53c5-99ea-3564ac4ce81a","html":"<p>Stefan Bley ist Senior Consultant und Coach bei der Saxonia Systems AG in Dresden. Sein Schwerpunkt in Kundenprojekten\nsind webbasierte Softwarelösungen mit Java-EE- Toolstack. Er beschäftigt sich gern mit innovativen Technologien und gibt\nsein Wissen auf Konferenzen und Community-Veranstaltung weiter. Aktuell befasst er sich mit Microservices im Java-Umfeld\nund Single-Page-Apps mit Angular 2.</p>","frontmatter":{"name":"Stefan Bley","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#686868","images":{"fallback":{"src":"/static/92076116610bf424c9719adb66fa22c0/f3dd0/stefan_bley.jpg","srcSet":"/static/92076116610bf424c9719adb66fa22c0/f3dd0/stefan_bley.jpg 299w","sizes":"100vw"},"sources":[{"srcSet":"/static/92076116610bf424c9719adb66fa22c0/04c61/stefan_bley.webp 299w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4983277591973243}}},"twitter_name":"sbley"},"fields":{"slug":"/speakers/stefan_bley/","speakerId":"stefan_bley"}}},{"node":{"id":"dd47473a-7d7f-54fa-9daa-e062ae1c9bef","html":"","frontmatter":{"name":"Stefan Bradl","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/stefan_bradl/","speakerId":"stefan_bradl"}}},{"node":{"id":"d4e04ddf-59bb-542f-b6bc-58e5cf77667d","html":"","frontmatter":{"name":"Stefan Heinze","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/stefan_heinze/","speakerId":"stefan_heinze"}}},{"node":{"id":"bd7c2828-9149-5013-8dca-331d23b9953f","html":"","frontmatter":{"name":"Stefan Scheumann","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/stefan_scheumann/","speakerId":"stefan_scheumann"}}},{"node":{"id":"7b63d414-09ef-5e63-bda2-a3259175090c","html":"<p>Von der Bayer AG über IBM und oose zu embarc. <strong>Stefan Zörner</strong> blickt auf zwanzig Jahre IT-Erfahrung zurück und stets\ngespannt nach vorn. Er unterstützt in Architektur- und Umsetzungsfragen mit dem Ziel, gute Architekturansätze wirksam in\nder Implementierung zu verankern. Sein Wissen und seine Erfahrung teilt er regelmäßig in Vorträgen, Artikeln und\nWorkshops. Stefan ist Apache Committer, aktives Board-Mitglied im iSAQB und Autor des Buchs „Softwarearchitekturen\ndokumentieren und kommunizieren“ (Hanser Verlag).</p>","frontmatter":{"name":"Stefan Zörner","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#b8a878","images":{"fallback":{"src":"/static/357c5655cc1d492de0f8357e5419c624/47930/stefan_zoerner.jpg","srcSet":"/static/357c5655cc1d492de0f8357e5419c624/47930/stefan_zoerner.jpg 400w","sizes":"100vw"},"sources":[{"srcSet":"/static/357c5655cc1d492de0f8357e5419c624/416c3/stefan_zoerner.webp 400w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":null},"fields":{"slug":"/speakers/stefan_zoerner/","speakerId":"stefan_zoerner"}}},{"node":{"id":"09a6b265-f443-579a-ae78-9188aaeca6ca","html":"<p><strong>Stefan Zörner</strong> (<a href=\"mailto:stefan.zoerner@embarc.de\">stefan.zoerner@embarc.de</a>) arbeitet bei embarc in Hamburg. Er unterstützt Entwicklungsteams dabei Softwarelösungen zu konzipieren, zu bewerten und zu verbessern. Das Vermitteln von Architekturansätzen ist einer seiner fachlichen Schwerpunkte. Sein Wissen und seine Erfahrung teilt er regelmäßig in Vorträgen, Artikeln und Workshops. Sein Buch \"Softwarearchitekturen dokumentieren und kommunizieren“ ist beim Hanser-Verlag erschienen.</p>","frontmatter":{"name":"Stefan Zörner","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d8e8f8","images":{"fallback":{"src":"/static/cf60a2326a44e6c970127f3f0ac2978d/a89ca/stefan_zoerner_2.jpg","srcSet":"/static/cf60a2326a44e6c970127f3f0ac2978d/a89ca/stefan_zoerner_2.jpg 600w","sizes":"100vw"},"sources":[{"srcSet":"/static/cf60a2326a44e6c970127f3f0ac2978d/6d09e/stefan_zoerner_2.webp 600w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":null},"fields":{"slug":"/speakers/stefan_zoerner_2/","speakerId":"stefan_zoerner_2"}}},{"node":{"id":"39cc0655-cd1a-540e-9553-b9fa67e895cc","html":"","frontmatter":{"name":"Steffen Seidler","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/steffen_seidler/","speakerId":"steffen_seidler"}}},{"node":{"id":"a8d3dca8-b87d-568d-8e70-dcac046e98d5","html":"<p>Stephan ist seit 2013 Informatikstudent an der Hochschule Zittau/Görlitz und schreibt derzeit seine Masterarbeit über\nGraphQL in der Microservice Architektur bei Saxonia Systems AG in Görlitz. Er beschäftigt sich mit Webanwendungen sowie\nFrontend-Technologien. Dabei finden GraphQL und React Verwendungen in mehreren Projekten.</p>","frontmatter":{"name":"Stephan Strehler","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#080808","images":{"fallback":{"src":"/static/a123ccdaefc129dd10224cd767e2c9b9/30f07/stephan_strehler.jpg","srcSet":"/static/a123ccdaefc129dd10224cd767e2c9b9/30f07/stephan_strehler.jpg 640w","sizes":"100vw"},"sources":[{"srcSet":"/static/a123ccdaefc129dd10224cd767e2c9b9/90d07/stephan_strehler.webp 640w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":null},"fields":{"slug":"/speakers/stephan_strehler/","speakerId":"stephan_strehler"}}},{"node":{"id":"aefd4a1f-a4ed-5e51-a713-1da570fcd2ee","html":"<p>Sven Hoffmann ist seit über 8 Jahren für die Saxonia Systems AG tätig. Er beschäftigte sich in dieser Zeit mit einer\nVielzahl von Backend und Frontend-Technologien. Zu seinen technologischen Hauptschwerpunkten zählen Webanwendungen und\nJavaEE.</p>","frontmatter":{"name":"Sven Hoffmann","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#484848","images":{"fallback":{"src":"/static/9b60a5387f4809c8bf0c20f0de29922e/69538/sven_hoffmann.jpg","srcSet":"/static/9b60a5387f4809c8bf0c20f0de29922e/69538/sven_hoffmann.jpg 406w","sizes":"100vw"},"sources":[{"srcSet":"/static/9b60a5387f4809c8bf0c20f0de29922e/2ccb1/sven_hoffmann.webp 406w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.502463054187192}}},"twitter_name":null},"fields":{"slug":"/speakers/sven_hoffmann/","speakerId":"sven_hoffmann"}}},{"node":{"id":"9a66bc44-37f7-527c-9f45-6c0b1dd74510","html":"<p>Thilo Frotscher arbeitet als freiberuflicher Software-Architekt und Trainer. Als Experte für Enterprise Java und\nSystemintegration unterstützt er seine Kunden überwiegend durch Entwicklung, Reviews oder die Durchführung von\nSchulungen. Thilo ist (Co-)Autor mehrerer Bücher sowie zahlreicher Fachartikel und spricht regelmäßig auf\nFachkonferenzen oder bei User Groups.</p>","frontmatter":{"name":"Thilo Frotscher","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#a8a8a8","images":{"fallback":{"src":"/static/5e6dbea52d281cdada5adcd4769087bc/147a6/thilo_frotscher.jpg","srcSet":"/static/5e6dbea52d281cdada5adcd4769087bc/147a6/thilo_frotscher.jpg 313w","sizes":"100vw"},"sources":[{"srcSet":"/static/5e6dbea52d281cdada5adcd4769087bc/acaa7/thilo_frotscher.webp 313w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.3099041533546325}}},"twitter_name":"thfro"},"fields":{"slug":"/speakers/thilo_frotscher/","speakerId":"thilo_frotscher"}}},{"node":{"id":"3cab3c25-9f08-5d29-a7c2-3e2b0d414c16","html":"","frontmatter":{"name":"Thomas Storch","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/thomas_storch/","speakerId":"thomas_storch"}}},{"node":{"id":"9776c4f1-e686-5cf2-b042-939797958362","html":"<p><strong>Tobias Blaschke</strong> hat sein Informatik-Studium an der Universität Magdeburg abgeschlossen. In den letzten Jahren ist er\nbei der Eudemonia Solutions AG als Software-Architekt tätig und unterstützt dort insbesondere die Entwicklung einer\nwebbasierten Lösung zur Firmenkundenberatung in den Volks- und Raiffeisenbanken auf Basis von Java und GWT.</p>","frontmatter":{"name":"Tobias Blaschke","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/tobias_blaschke/","speakerId":"tobias_blaschke"}}},{"node":{"id":"91d3bc22-4970-51b8-90cf-7583f2dc5ff5","html":"<p>Uwe Manteuffel ist Senior Consultant für Webentwicklung bei Saxonia Systems AG in Görlitz. Er ist seit 2008 im Umfeld\nvon Webtechnologien und ASP.NET unterwegs. Sein Schwerpunkt liegt dabei auf dem Design und der Umsetzung von\nOberflächen. Besonderer Fokus liegt dabei auf der Verwendung von CSS. Hierbei beschäftigt er sich mit verschiedenen\nMethoden wie OOCSS (Objektorientiertes CSS) und der Verwendung von Präprozessoren wie LESS oder SASS. Aktuell entwickelt\ner ASP.NET MVC Anwendungen für B2B Kunden.</p>","frontmatter":{"name":"Uwe Manteuffel","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#585868","images":{"fallback":{"src":"/static/26d3f744bce66e93610087ebefd7fcb2/0fdf4/uwe_manteuffel.jpg","srcSet":"/static/26d3f744bce66e93610087ebefd7fcb2/0fdf4/uwe_manteuffel.jpg 300w","sizes":"100vw"},"sources":[{"srcSet":"/static/26d3f744bce66e93610087ebefd7fcb2/078c3/uwe_manteuffel.webp 300w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":"dasuew"},"fields":{"slug":"/speakers/uwe_manteuffel/","speakerId":"uwe_manteuffel"}}},{"node":{"id":"53f5069e-fb7c-5f5d-b967-b5df3c1df975","html":"<p>Wolfgang Weigend arbeitet als Sen. Leitender Systemberater bei ORACLE Global Services Germany GmbH. Er gehört zum\nweltweiten Java Team und ist zuständig für Java Technologie & GraalVM und Architektur für unternehmensweite\nAnwendungsentwicklung.</p>","frontmatter":{"name":"Wolfgang Weigend","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#181818","images":{"fallback":{"src":"/static/afd51a81ad1e8768bed62639c9389490/c2725/wolfgang_weigend.jpg","srcSet":"/static/afd51a81ad1e8768bed62639c9389490/c2725/wolfgang_weigend.jpg 559w","sizes":"100vw"},"sources":[{"srcSet":"/static/afd51a81ad1e8768bed62639c9389490/fa89f/wolfgang_weigend.webp 559w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.2629695885509837}}},"twitter_name":"wolflook"},"fields":{"slug":"/speakers/wolfgang_weigend/","speakerId":"wolfgang_weigend"}}}]},"locations":{"edges":[{"node":{"fields":{"slug":"/locations/cideon/","locationId":"cideon"},"frontmatter":{"name":"CIDEON Software & Services GmbH & Co. KG","number":"25","info":null,"zip":"02826","city":"Görlitz","street":"Untermarkt"}}},{"node":{"fields":{"slug":"/locations/dser_steinstrasse/","locationId":"dser_steinstrasse"},"frontmatter":{"name":"DSER","number":"11","info":null,"zip":"02826","city":"Görlitz","street":"Steinstraße"}}},{"node":{"fields":{"slug":"/locations/expleo/","locationId":"expleo"},"frontmatter":{"name":"Expleo","number":"23","info":null,"zip":"02826","city":"Görlitz","street":"Konsulstraße"}}},{"node":{"fields":{"slug":"/locations/fraunhofer/","locationId":"fraunhofer"},"frontmatter":{"name":"Fraunhofer-Institut IOSB - Angewandte Systemtechnik","number":"11","info":null,"zip":"02826","city":"Görlitz","street":"Wilhelmsplatz"}}},{"node":{"fields":{"slug":"/locations/dser_elisabethstrasse/","locationId":"dser_elisabethstrasse"},"frontmatter":{"name":"DSER","number":"42/43","info":null,"zip":"02826","city":"Görlitz","street":"Elisabethstraße"}}},{"node":{"fields":{"slug":"/locations/hochschule_campus/","locationId":"hochschule_campus"},"frontmatter":{"name":"Hochschule Zittau/Görlitz","number":"1","info":"Haus G2 Raum 0.10","zip":"02826","city":"Görlitz","street":"Brückenstraße"}}},{"node":{"fields":{"slug":"/locations/hochschule_obermarkt/","locationId":"hochschule_obermarkt"},"frontmatter":{"name":"Hochschule Zittau/Görlitz","number":"17","info":null,"zip":"02826","city":"Görlitz","street":"Obermarkt"}}},{"node":{"fields":{"slug":"/locations/innolabs/","locationId":"innolabs"},"frontmatter":{"name":"Innolabs Görlitz","number":"22","info":null,"zip":"02826","city":"Görlitz","street":"Bahnhofstraße"}}},{"node":{"fields":{"slug":"/locations/sqs/","locationId":"sqs"},"frontmatter":{"name":"SQS TestCenter Görlitz","number":"10","info":null,"zip":"02826","city":"Görlitz","street":"Brückenstraße"}}},{"node":{"fields":{"slug":"/locations/saxsys/","locationId":"saxsys"},"frontmatter":{"name":"Saxonia Systems AG","number":"63","info":null,"zip":"02826","city":"Görlitz","street":"Berliner Straße"}}},{"node":{"fields":{"slug":"/locations/tallence/","locationId":"tallence"},"frontmatter":{"name":"Tallence AG","number":"27","info":null,"zip":"02826","city":"Görlitz","street":"Neißstraße"}}},{"node":{"fields":{"slug":"/locations/zeiss/","locationId":"zeiss"},"frontmatter":{"name":"Carl Zeiss Digital Innovation","number":"63","info":null,"zip":"02826","city":"Görlitz","street":"Berliner Straße"}}}]}},"pageContext":{}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/locations/page-data.json b/page-data/locations/page-data.json index ef0597c34..a281fc849 100644 --- a/page-data/locations/page-data.json +++ b/page-data/locations/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-locations-tsx","path":"/locations/","result":{"data":{"locations":{"edges":[{"node":{"fields":{"slug":"/locations/cideon/","locationId":"cideon"},"frontmatter":{"name":"CIDEON Software & Services GmbH & Co. KG","info":null,"street":"Untermarkt","number":"25","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/dser_elisabethstrasse/","locationId":"dser_elisabethstrasse"},"frontmatter":{"name":"DSER","info":null,"street":"Elisabethstraße","number":"42/43","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/dser_steinstrasse/","locationId":"dser_steinstrasse"},"frontmatter":{"name":"DSER","info":null,"street":"Steinstraße","number":"11","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/expleo/","locationId":"expleo"},"frontmatter":{"name":"Expleo","info":null,"street":"Konsulstraße","number":"23","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/fraunhofer/","locationId":"fraunhofer"},"frontmatter":{"name":"Fraunhofer-Institut IOSB - Angewandte Systemtechnik","info":null,"street":"Wilhelmsplatz","number":"11","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/hochschule_obermarkt/","locationId":"hochschule_obermarkt"},"frontmatter":{"name":"Hochschule Zittau/Görlitz","info":null,"street":"Obermarkt","number":"17","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/hochschule_campus/","locationId":"hochschule_campus"},"frontmatter":{"name":"Hochschule Zittau/Görlitz","info":"Haus G2 Raum 0.10","street":"Brückenstraße","number":"1","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/innolabs/","locationId":"innolabs"},"frontmatter":{"name":"Innolabs Görlitz","info":null,"street":"Bahnhofstraße","number":"22","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/saxsys/","locationId":"saxsys"},"frontmatter":{"name":"Saxonia Systems AG","info":null,"street":"Berliner Straße","number":"63","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/sqs/","locationId":"sqs"},"frontmatter":{"name":"SQS TestCenter Görlitz","info":null,"street":"Brückenstraße","number":"10","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/tallence/","locationId":"tallence"},"frontmatter":{"name":"Tallence AG","info":null,"street":"Neißstraße","number":"27","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/zeiss/","locationId":"zeiss"},"frontmatter":{"name":"Carl Zeiss Digital Innovation","info":null,"street":"Berliner Straße","number":"63","zip":"02826","city":"Görlitz"}}}]},"talks":{"edges":[{"node":{"id":"b0252f0d-2a16-5085-913a-7fb7bf5364a6","frontmatter":{"title":"EasyMock","location":"hochschule_obermarkt"}}},{"node":{"id":"c92b2d55-0d33-50f7-a73c-de8f55b7d75e","frontmatter":{"title":"Jenkins/Hudson","location":"hochschule_obermarkt"}}},{"node":{"id":"6d1edf0b-d32b-5274-baa2-34c7f27786b8","frontmatter":{"title":"GWT - Google Web Toolkit","location":"dser_steinstrasse"}}},{"node":{"id":"2d5fb6de-57a5-54c0-9485-b2ea5bb67a81","frontmatter":{"title":"OSGi mit SpringDM","location":"dser_steinstrasse"}}},{"node":{"id":"54c98b64-64a8-515b-a02c-8a54c51dcca1","frontmatter":{"title":"Google Guice","location":"dser_steinstrasse"}}},{"node":{"id":"5c110017-4815-5ac0-a4e3-a75e759080ac","frontmatter":{"title":"JavaEE und JBoss","location":"dser_steinstrasse"}}},{"node":{"id":"603cc23a-9840-5867-b78d-99fbd489d472","frontmatter":{"title":"Scala","location":"dser_steinstrasse"}}},{"node":{"id":"4bb73d33-af61-5eac-a5fa-d075fa8660f5","frontmatter":{"title":"TestNG","location":"dser_steinstrasse"}}},{"node":{"id":"67828855-f7d8-5d6d-9d90-7c3760bb7705","frontmatter":{"title":"Testen - Patterns und Best Practices","location":"dser_steinstrasse"}}},{"node":{"id":"9bcc98b0-826d-5513-b828-008dbf11c915","frontmatter":{"title":"JDOM","location":"dser_steinstrasse"}}},{"node":{"id":"6cca53f4-9edd-55ac-a225-75c94aa0dd8b","frontmatter":{"title":"Single Sign-On mit JAAS und JGSS","location":"dser_steinstrasse"}}},{"node":{"id":"c40cc73f-d2be-5960-b15f-87e4b39429c8","frontmatter":{"title":"Android","location":"dser_steinstrasse"}}},{"node":{"id":"11771522-730a-5373-b0f8-585c9c4f52c1","frontmatter":{"title":"JavaServer Faces 2 und CDI","location":"saxsys"}}},{"node":{"id":"e3831714-860d-5867-9952-89ecfe8b81dd","frontmatter":{"title":"JPA - Hibernate","location":"dser_steinstrasse"}}},{"node":{"id":"67e2091a-15eb-56f9-bb65-586c4b2a809d","frontmatter":{"title":"Advanced JSF und CDI","location":"hochschule_obermarkt"}}},{"node":{"id":"7881a4dc-ab76-5124-b9b1-dc13c982a250","frontmatter":{"title":"Webentwicklung mit Scala","location":"hochschule_obermarkt"}}},{"node":{"id":"bd3b256f-6609-52bb-9d05-5a57482e4f42","frontmatter":{"title":"Webtests mit Selenium","location":"saxsys"}}},{"node":{"id":"fa3c70d9-f376-541d-be0b-ca24e0ac6b89","frontmatter":{"title":"Maven","location":"dser_steinstrasse"}}},{"node":{"id":"88119287-b9a3-5745-bd33-a7735cb39b4b","frontmatter":{"title":"JMonkeyEngine 3 - 3D-Applikationen in Java","location":"hochschule_obermarkt"}}},{"node":{"id":"5e4ab94f-157d-5292-864d-57606942e1ff","frontmatter":{"title":"GridGain - Parallel Computing und Data Grid Anwendungen","location":"dser_steinstrasse"}}},{"node":{"id":"09982d70-f13f-5626-8a14-2d8d92abf724","frontmatter":{"title":"Selenium/Webdriver in der Praxis","location":"dser_steinstrasse"}}},{"node":{"id":"c044b319-accb-5fca-8339-9f01293583e6","frontmatter":{"title":"JSR-303 BeanValidation","location":"saxsys"}}},{"node":{"id":"90157438-0e03-57ef-870f-701aac0b6210","frontmatter":{"title":"JavaFX 2","location":"saxsys"}}},{"node":{"id":"a13fb811-969f-5eb3-91f8-c71970bff046","frontmatter":{"title":"Lego NXT-Roboter mit Java programmieren","location":"dser_steinstrasse"}}},{"node":{"id":"df78a5f7-4e2e-5f4d-83dd-6ad6432ef93e","frontmatter":{"title":"JRuby - Ruby auf der Java VM","location":"hochschule_campus"}}},{"node":{"id":"6cde30c0-930e-5a8f-9a80-e0bfc34878a6","frontmatter":{"title":"Persona - Werkzeug für die GUI-Entwicklung","location":"dser_steinstrasse"}}},{"node":{"id":"fb329b7c-5599-55bf-85c5-54a1a6b821bb","frontmatter":{"title":"Modernes App-Design am Beispiel von Android","location":"hochschule_campus"}}},{"node":{"id":"a8a6dc9d-ed19-56f9-9fd3-8c83531f61d0","frontmatter":{"title":"Performance-Optimierung im Web","location":"dser_steinstrasse"}}},{"node":{"id":"f39e922a-28fe-514b-838c-4b89e4ec981e","frontmatter":{"title":"Tool-Integration im Softwareentwicklungsprozess","location":"hochschule_obermarkt"}}},{"node":{"id":"27050ce5-4d13-504b-90e0-8a4c3f2e6514","frontmatter":{"title":"Besser lesbare Unittests mit AssertJ","location":"saxsys"}}},{"node":{"id":"09dfae71-65f1-52de-81a7-e0746238f502","frontmatter":{"title":"Hazelcast - Synchronisation von In-Memory-Daten","location":"dser_steinstrasse"}}},{"node":{"id":"bd5b8775-c069-521b-803e-4a62493c8247","frontmatter":{"title":"Java8 - Streams und Lambdas","location":"hochschule_obermarkt"}}},{"node":{"id":"ded25abd-db1f-5b9b-9cd2-8c905bc15ab0","frontmatter":{"title":"Solr - Eine Enterprise-Suchmaschine","location":"dser_steinstrasse"}}},{"node":{"id":"5840ef2b-08af-57a6-81b0-7a69c1d1beb0","frontmatter":{"title":"Infrastructure as Code","location":"hochschule_obermarkt"}}},{"node":{"id":"2fdb9675-dfcf-55b8-899d-8e6d04242b4a","frontmatter":{"title":"Model-View-*: UI-Design-Patterns im Detail","location":"saxsys"}}},{"node":{"id":"d88d92c2-cf39-5768-b424-1b211f08c8e8","frontmatter":{"title":"MoSKito - Monitoring Framework","location":"dser_steinstrasse"}}},{"node":{"id":"d853656a-6dac-5d38-b25a-c241c13cbadb","frontmatter":{"title":"Einstieg in die Android-App-Entwicklung","location":"hochschule_campus"}}},{"node":{"id":"1faa8cf7-10f9-54d5-a480-6d2e44896011","frontmatter":{"title":"Fortgeschrittene Android-Entwicklung","location":"saxsys"}}},{"node":{"id":"a3c8bbba-0df8-503b-a702-21589e288614","frontmatter":{"title":"Regelbasierte Systeme mit JBoss Drools","location":"hochschule_obermarkt"}}},{"node":{"id":"eff228ab-8f49-5773-905c-fee144de429f","frontmatter":{"title":"Guava","location":"dser_elisabethstrasse"}}},{"node":{"id":"43538367-514c-5009-b9eb-0f730f52bfd9","frontmatter":{"title":"JavaFX auf Mobile","location":"saxsys"}}},{"node":{"id":"79835d68-651b-57a2-8c75-042baeba5b30","frontmatter":{"title":"Funktionale Programmierung mit Java","location":"hochschule_campus"}}},{"node":{"id":"7d996009-4040-5330-a46c-5877cc5668af","frontmatter":{"title":"Haskell und Frege","location":"hochschule_campus"}}},{"node":{"id":"4dc84ec4-23f6-5438-a2e6-b5944dc868c9","frontmatter":{"title":"Performance-Analyse mit inspectIT","location":"saxsys"}}},{"node":{"id":"e14cd50a-435a-5855-ae06-c0d1eb30d8af","frontmatter":{"title":"Testwerkzeuge für JavaFX","location":"hochschule_obermarkt"}}},{"node":{"id":"a4cfc466-b5f6-5b10-be7e-13c92d3ab2f7","frontmatter":{"title":"Kommunikationskultur im Softwareentwicklungsprozess","location":"sqs"}}},{"node":{"id":"c67796c2-6477-5658-a163-1de4870f548e","frontmatter":{"title":"Inside JVM","location":"saxsys"}}},{"node":{"id":"cf0f1947-1449-5df5-b546-aa31d25046a7","frontmatter":{"title":"JUnit 5","location":"hochschule_campus"}}},{"node":{"id":"f009504d-3327-52e9-8948-6cd4d3ba952e","frontmatter":{"title":"CSS, Aha-Effekte und Perspektiven","location":"hochschule_obermarkt"}}},{"node":{"id":"d7528a15-3b10-587c-9543-5c372945763a","frontmatter":{"title":"Angular 2 für Java Entwickler","location":"hochschule_campus"}}},{"node":{"id":"9ba71f6c-f0dd-5c4e-b70f-3d7ac1ec19ca","frontmatter":{"title":"JDK 9","location":"saxsys"}}},{"node":{"id":"935f30df-c07e-5cfa-9188-3564b4e0fab7","frontmatter":{"title":"React und React-Native: Functional UI Development für Browser und mobile Endgeräte","location":"hochschule_campus"}}},{"node":{"id":"29eb8b61-615f-5f82-afc0-25abdc540af7","frontmatter":{"title":"Spracherkennung mit Amazon Alexa","location":"dser_elisabethstrasse"}}},{"node":{"id":"fd607630-d7dd-503a-8da0-25a963df4df3","frontmatter":{"title":"Serverless Application - Who the heck needs a Server?","location":"hochschule_campus"}}},{"node":{"id":"92f30cfa-20d5-5aba-8db4-e6e1de091225","frontmatter":{"title":"Neo4j: Panama Papers","location":"sqs"}}},{"node":{"id":"259289d0-862c-5044-bdb1-38c8d853780d","frontmatter":{"title":"Refactoring to a System of Systems","location":"saxsys"}}},{"node":{"id":"67f5c805-4443-51af-9f87-0a9aff577dce","frontmatter":{"title":"Entwicklung von Java Applikationen auf der SAP Cloud Platform","location":"cideon"}}},{"node":{"id":"dad0ee9f-ea34-5ce1-b7fe-a0e45b09e845","frontmatter":{"title":"Mikro- vs. Makroarchitektur – Spielraum und Spielregeln","location":"hochschule_campus"}}},{"node":{"id":"1b2f3079-33fa-52a7-8f63-17ed40feb17e","frontmatter":{"title":"Kotlin","location":"saxsys"}}},{"node":{"id":"bba11502-e73b-5c5e-9ce7-f4102b1daed5","frontmatter":{"title":"GraphQL","location":"hochschule_campus"}}},{"node":{"id":"f17a3451-b9a5-5b42-b740-3c15fe9268f5","frontmatter":{"title":"Immutable Data - Unveränderliche Daten im Griff","location":"hochschule_campus"}}},{"node":{"id":"f3a5b0e9-0351-58c1-a827-a5f39196ddee","frontmatter":{"title":"Monadische Transaktionen","location":"hochschule_campus"}}},{"node":{"id":"6c6f82f3-26da-59ee-a8b6-8c178256b6b7","frontmatter":{"title":"Java APIs - the missing manual","location":"cideon"}}},{"node":{"id":"f37a3185-cf74-5401-9461-328751a5a63e","frontmatter":{"title":"Java Reflection: Classes behind the scenes","location":"saxsys"}}},{"node":{"id":"dd2fc902-b2b3-5256-b24b-e09f17f45415","frontmatter":{"title":"Static-Site-Generators","location":"hochschule_campus"}}},{"node":{"id":"9a7e9567-b7fe-59cd-90fe-aec93c90f2af","frontmatter":{"title":"It's a JDK jungle out there - oder wie es mit den neuen Java-Versionen geordnet weitergeht","location":"saxsys"}}},{"node":{"id":"a5f7b4d5-03e6-588d-9778-62b4b8c44286","frontmatter":{"title":"OAuth 2.0/OpenIDConnect mit Keycloak","location":"hochschule_campus"}}},{"node":{"id":"6895717e-291c-581d-8fef-3b5e73bc8369","frontmatter":{"title":"Wie gut kennst Du das Collections Framework?","location":"cideon"}}},{"node":{"id":"a0f32bfb-f9fa-5c9c-a70d-ffd93be7d859","frontmatter":{"title":"Advanced BDD Tests","location":"tallence"}}},{"node":{"id":"c7067e06-b5be-50ec-83d2-9ea30dc14640","frontmatter":{"title":"Innovationsmotor Cloud Foundry!?","location":"saxsys"}}},{"node":{"id":"92ec8c3c-c428-5ca1-bb98-7b8ebac5cdfb","frontmatter":{"title":"JDK 14 und GraalVM im Java Ökosystem","location":null}}},{"node":{"id":"0ebf9412-38af-5831-82e8-2b0aa744f924","frontmatter":{"title":"Branching-Modelle","location":null}}},{"node":{"id":"fee8a0ec-6360-5446-9bb0-9ecbe5695536","frontmatter":{"title":"Java Secure Coding in der Praxis","location":null}}},{"node":{"id":"3c969ad0-d843-57d0-92c4-91340d71851d","frontmatter":{"title":"Web Components","location":null}}},{"node":{"id":"1249d4ab-1401-5936-92b8-3d6dee7f14bb","frontmatter":{"title":"Ultraschnelle Java In-Memory Datenbank-Anwendungen & Microservices mit MicroStream","location":null}}},{"node":{"id":"2e3945a5-7de9-5188-b447-47134c218967","frontmatter":{"title":"Hebe deine IoT-Infrastruktur auf das Serverless-Level an","location":"zeiss"}}},{"node":{"id":"2b8e8a71-59c4-53fb-baa2-5b6136f7efe8","frontmatter":{"title":"Industrie 4.0? Das JUGt mich!","location":"zeiss"}}},{"node":{"id":"a0820bff-9a0d-5989-b837-8f769fcc2ba6","frontmatter":{"title":"Kundenspezifisches IAM mit Keycloak","location":"innolabs"}}},{"node":{"id":"5d96ee33-16f6-5b4c-aca8-557c4c24c14e","frontmatter":{"title":"Content Management neu gedacht mit Contentlab","location":"cideon"}}},{"node":{"id":"8fa19a6d-7e84-5d43-a513-0644ddb362d6","frontmatter":{"title":"Exception First – Stabilisiere deinen Code mit mehr Exceptions","location":"zeiss"}}},{"node":{"id":"f5233192-6039-5c35-9957-b7023ed9e701","frontmatter":{"title":"Spring für architekturinteressierte Entwickler:innen","location":"fraunhofer"}}},{"node":{"id":"79b0298f-b45a-5707-a02c-37ea990349ee","frontmatter":{"title":"ArchUnit: Unit-Tests für deine Java-Architektur","location":"expleo"}}},{"node":{"id":"d1758688-b708-5de7-8e59-5646800cc19a","frontmatter":{"title":"Accessibility in the Wild","location":"tallence"}}},{"node":{"id":"8a2e331b-0f3c-52b6-823e-852ecfff1ba4","frontmatter":{"title":"GraalVM 23 – Konzepte und Features","location":"zeiss"}}},{"node":{"id":"4f2a426a-5b98-5f61-8750-46aac0c6c9f3","frontmatter":{"title":"Java 21: Virtuelle Threads","location":"zeiss"}}},{"node":{"id":"34d30efa-4f03-53e5-8043-fa73d75cbd58","frontmatter":{"title":"AWS-Infrastruktur mit Java erstellen - CDK in Action","location":"zeiss"}}},{"node":{"id":"e583793f-bcc5-5f78-8931-3357be0f0ba5","frontmatter":{"title":"What the CRaC - Superfast JVM startup","location":"zeiss"}}},{"node":{"id":"cafdb0d7-7218-5608-bd6f-c033864617fe","frontmatter":{"title":"Flutter, der heilige Gral der Cross-Plattform-Entwicklung?!","location":"hochschule_campus"}}},{"node":{"id":"fafd1d08-20ad-5b94-8837-fc066b152f0d","frontmatter":{"title":"Schlanke Architektur-Reviews","location":null}}},{"node":{"id":"97f4123c-3293-532b-8ea6-6b81b355fd92","frontmatter":{"title":"Rust (Teil 1): Einführung in die Sprache","location":null}}},{"node":{"id":"56c1a59c-f16a-5f43-aa33-412cf06ee342","frontmatter":{"title":"Rust (Teil 2)","location":null}}}]}},"pageContext":{}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-locations-tsx","path":"/locations/","result":{"data":{"locations":{"edges":[{"node":{"fields":{"slug":"/locations/cideon/","locationId":"cideon"},"frontmatter":{"name":"CIDEON Software & Services GmbH & Co. KG","info":null,"street":"Untermarkt","number":"25","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/dser_steinstrasse/","locationId":"dser_steinstrasse"},"frontmatter":{"name":"DSER","info":null,"street":"Steinstraße","number":"11","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/expleo/","locationId":"expleo"},"frontmatter":{"name":"Expleo","info":null,"street":"Konsulstraße","number":"23","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/fraunhofer/","locationId":"fraunhofer"},"frontmatter":{"name":"Fraunhofer-Institut IOSB - Angewandte Systemtechnik","info":null,"street":"Wilhelmsplatz","number":"11","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/dser_elisabethstrasse/","locationId":"dser_elisabethstrasse"},"frontmatter":{"name":"DSER","info":null,"street":"Elisabethstraße","number":"42/43","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/hochschule_campus/","locationId":"hochschule_campus"},"frontmatter":{"name":"Hochschule Zittau/Görlitz","info":"Haus G2 Raum 0.10","street":"Brückenstraße","number":"1","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/hochschule_obermarkt/","locationId":"hochschule_obermarkt"},"frontmatter":{"name":"Hochschule Zittau/Görlitz","info":null,"street":"Obermarkt","number":"17","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/innolabs/","locationId":"innolabs"},"frontmatter":{"name":"Innolabs Görlitz","info":null,"street":"Bahnhofstraße","number":"22","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/sqs/","locationId":"sqs"},"frontmatter":{"name":"SQS TestCenter Görlitz","info":null,"street":"Brückenstraße","number":"10","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/saxsys/","locationId":"saxsys"},"frontmatter":{"name":"Saxonia Systems AG","info":null,"street":"Berliner Straße","number":"63","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/tallence/","locationId":"tallence"},"frontmatter":{"name":"Tallence AG","info":null,"street":"Neißstraße","number":"27","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/zeiss/","locationId":"zeiss"},"frontmatter":{"name":"Carl Zeiss Digital Innovation","info":null,"street":"Berliner Straße","number":"63","zip":"02826","city":"Görlitz"}}}]},"talks":{"edges":[{"node":{"id":"b0252f0d-2a16-5085-913a-7fb7bf5364a6","frontmatter":{"title":"EasyMock","location":"hochschule_obermarkt"}}},{"node":{"id":"c92b2d55-0d33-50f7-a73c-de8f55b7d75e","frontmatter":{"title":"Jenkins/Hudson","location":"hochschule_obermarkt"}}},{"node":{"id":"6d1edf0b-d32b-5274-baa2-34c7f27786b8","frontmatter":{"title":"GWT - Google Web Toolkit","location":"dser_steinstrasse"}}},{"node":{"id":"2d5fb6de-57a5-54c0-9485-b2ea5bb67a81","frontmatter":{"title":"OSGi mit SpringDM","location":"dser_steinstrasse"}}},{"node":{"id":"54c98b64-64a8-515b-a02c-8a54c51dcca1","frontmatter":{"title":"Google Guice","location":"dser_steinstrasse"}}},{"node":{"id":"5c110017-4815-5ac0-a4e3-a75e759080ac","frontmatter":{"title":"JavaEE und JBoss","location":"dser_steinstrasse"}}},{"node":{"id":"603cc23a-9840-5867-b78d-99fbd489d472","frontmatter":{"title":"Scala","location":"dser_steinstrasse"}}},{"node":{"id":"4bb73d33-af61-5eac-a5fa-d075fa8660f5","frontmatter":{"title":"TestNG","location":"dser_steinstrasse"}}},{"node":{"id":"67828855-f7d8-5d6d-9d90-7c3760bb7705","frontmatter":{"title":"Testen - Patterns und Best Practices","location":"dser_steinstrasse"}}},{"node":{"id":"9bcc98b0-826d-5513-b828-008dbf11c915","frontmatter":{"title":"JDOM","location":"dser_steinstrasse"}}},{"node":{"id":"6cca53f4-9edd-55ac-a225-75c94aa0dd8b","frontmatter":{"title":"Single Sign-On mit JAAS und JGSS","location":"dser_steinstrasse"}}},{"node":{"id":"c40cc73f-d2be-5960-b15f-87e4b39429c8","frontmatter":{"title":"Android","location":"dser_steinstrasse"}}},{"node":{"id":"11771522-730a-5373-b0f8-585c9c4f52c1","frontmatter":{"title":"JavaServer Faces 2 und CDI","location":"saxsys"}}},{"node":{"id":"e3831714-860d-5867-9952-89ecfe8b81dd","frontmatter":{"title":"JPA - Hibernate","location":"dser_steinstrasse"}}},{"node":{"id":"67e2091a-15eb-56f9-bb65-586c4b2a809d","frontmatter":{"title":"Advanced JSF und CDI","location":"hochschule_obermarkt"}}},{"node":{"id":"7881a4dc-ab76-5124-b9b1-dc13c982a250","frontmatter":{"title":"Webentwicklung mit Scala","location":"hochschule_obermarkt"}}},{"node":{"id":"bd3b256f-6609-52bb-9d05-5a57482e4f42","frontmatter":{"title":"Webtests mit Selenium","location":"saxsys"}}},{"node":{"id":"fa3c70d9-f376-541d-be0b-ca24e0ac6b89","frontmatter":{"title":"Maven","location":"dser_steinstrasse"}}},{"node":{"id":"88119287-b9a3-5745-bd33-a7735cb39b4b","frontmatter":{"title":"JMonkeyEngine 3 - 3D-Applikationen in Java","location":"hochschule_obermarkt"}}},{"node":{"id":"5e4ab94f-157d-5292-864d-57606942e1ff","frontmatter":{"title":"GridGain - Parallel Computing und Data Grid Anwendungen","location":"dser_steinstrasse"}}},{"node":{"id":"09982d70-f13f-5626-8a14-2d8d92abf724","frontmatter":{"title":"Selenium/Webdriver in der Praxis","location":"dser_steinstrasse"}}},{"node":{"id":"c044b319-accb-5fca-8339-9f01293583e6","frontmatter":{"title":"JSR-303 BeanValidation","location":"saxsys"}}},{"node":{"id":"90157438-0e03-57ef-870f-701aac0b6210","frontmatter":{"title":"JavaFX 2","location":"saxsys"}}},{"node":{"id":"a13fb811-969f-5eb3-91f8-c71970bff046","frontmatter":{"title":"Lego NXT-Roboter mit Java programmieren","location":"dser_steinstrasse"}}},{"node":{"id":"df78a5f7-4e2e-5f4d-83dd-6ad6432ef93e","frontmatter":{"title":"JRuby - Ruby auf der Java VM","location":"hochschule_campus"}}},{"node":{"id":"6cde30c0-930e-5a8f-9a80-e0bfc34878a6","frontmatter":{"title":"Persona - Werkzeug für die GUI-Entwicklung","location":"dser_steinstrasse"}}},{"node":{"id":"fb329b7c-5599-55bf-85c5-54a1a6b821bb","frontmatter":{"title":"Modernes App-Design am Beispiel von Android","location":"hochschule_campus"}}},{"node":{"id":"a8a6dc9d-ed19-56f9-9fd3-8c83531f61d0","frontmatter":{"title":"Performance-Optimierung im Web","location":"dser_steinstrasse"}}},{"node":{"id":"f39e922a-28fe-514b-838c-4b89e4ec981e","frontmatter":{"title":"Tool-Integration im Softwareentwicklungsprozess","location":"hochschule_obermarkt"}}},{"node":{"id":"27050ce5-4d13-504b-90e0-8a4c3f2e6514","frontmatter":{"title":"Besser lesbare Unittests mit AssertJ","location":"saxsys"}}},{"node":{"id":"09dfae71-65f1-52de-81a7-e0746238f502","frontmatter":{"title":"Hazelcast - Synchronisation von In-Memory-Daten","location":"dser_steinstrasse"}}},{"node":{"id":"bd5b8775-c069-521b-803e-4a62493c8247","frontmatter":{"title":"Java8 - Streams und Lambdas","location":"hochschule_obermarkt"}}},{"node":{"id":"ded25abd-db1f-5b9b-9cd2-8c905bc15ab0","frontmatter":{"title":"Solr - Eine Enterprise-Suchmaschine","location":"dser_steinstrasse"}}},{"node":{"id":"5840ef2b-08af-57a6-81b0-7a69c1d1beb0","frontmatter":{"title":"Infrastructure as Code","location":"hochschule_obermarkt"}}},{"node":{"id":"2fdb9675-dfcf-55b8-899d-8e6d04242b4a","frontmatter":{"title":"Model-View-*: UI-Design-Patterns im Detail","location":"saxsys"}}},{"node":{"id":"d853656a-6dac-5d38-b25a-c241c13cbadb","frontmatter":{"title":"Einstieg in die Android-App-Entwicklung","location":"hochschule_campus"}}},{"node":{"id":"d88d92c2-cf39-5768-b424-1b211f08c8e8","frontmatter":{"title":"MoSKito - Monitoring Framework","location":"dser_steinstrasse"}}},{"node":{"id":"1faa8cf7-10f9-54d5-a480-6d2e44896011","frontmatter":{"title":"Fortgeschrittene Android-Entwicklung","location":"saxsys"}}},{"node":{"id":"a3c8bbba-0df8-503b-a702-21589e288614","frontmatter":{"title":"Regelbasierte Systeme mit JBoss Drools","location":"hochschule_obermarkt"}}},{"node":{"id":"eff228ab-8f49-5773-905c-fee144de429f","frontmatter":{"title":"Guava","location":"dser_elisabethstrasse"}}},{"node":{"id":"43538367-514c-5009-b9eb-0f730f52bfd9","frontmatter":{"title":"JavaFX auf Mobile","location":"saxsys"}}},{"node":{"id":"79835d68-651b-57a2-8c75-042baeba5b30","frontmatter":{"title":"Funktionale Programmierung mit Java","location":"hochschule_campus"}}},{"node":{"id":"7d996009-4040-5330-a46c-5877cc5668af","frontmatter":{"title":"Haskell und Frege","location":"hochschule_campus"}}},{"node":{"id":"4dc84ec4-23f6-5438-a2e6-b5944dc868c9","frontmatter":{"title":"Performance-Analyse mit inspectIT","location":"saxsys"}}},{"node":{"id":"e14cd50a-435a-5855-ae06-c0d1eb30d8af","frontmatter":{"title":"Testwerkzeuge für JavaFX","location":"hochschule_obermarkt"}}},{"node":{"id":"a4cfc466-b5f6-5b10-be7e-13c92d3ab2f7","frontmatter":{"title":"Kommunikationskultur im Softwareentwicklungsprozess","location":"sqs"}}},{"node":{"id":"c67796c2-6477-5658-a163-1de4870f548e","frontmatter":{"title":"Inside JVM","location":"saxsys"}}},{"node":{"id":"cf0f1947-1449-5df5-b546-aa31d25046a7","frontmatter":{"title":"JUnit 5","location":"hochschule_campus"}}},{"node":{"id":"f009504d-3327-52e9-8948-6cd4d3ba952e","frontmatter":{"title":"CSS, Aha-Effekte und Perspektiven","location":"hochschule_obermarkt"}}},{"node":{"id":"9ba71f6c-f0dd-5c4e-b70f-3d7ac1ec19ca","frontmatter":{"title":"JDK 9","location":"saxsys"}}},{"node":{"id":"d7528a15-3b10-587c-9543-5c372945763a","frontmatter":{"title":"Angular 2 für Java Entwickler","location":"hochschule_campus"}}},{"node":{"id":"935f30df-c07e-5cfa-9188-3564b4e0fab7","frontmatter":{"title":"React und React-Native: Functional UI Development für Browser und mobile Endgeräte","location":"hochschule_campus"}}},{"node":{"id":"29eb8b61-615f-5f82-afc0-25abdc540af7","frontmatter":{"title":"Spracherkennung mit Amazon Alexa","location":"dser_elisabethstrasse"}}},{"node":{"id":"fd607630-d7dd-503a-8da0-25a963df4df3","frontmatter":{"title":"Serverless Application - Who the heck needs a Server?","location":"hochschule_campus"}}},{"node":{"id":"92f30cfa-20d5-5aba-8db4-e6e1de091225","frontmatter":{"title":"Neo4j: Panama Papers","location":"sqs"}}},{"node":{"id":"259289d0-862c-5044-bdb1-38c8d853780d","frontmatter":{"title":"Refactoring to a System of Systems","location":"saxsys"}}},{"node":{"id":"67f5c805-4443-51af-9f87-0a9aff577dce","frontmatter":{"title":"Entwicklung von Java Applikationen auf der SAP Cloud Platform","location":"cideon"}}},{"node":{"id":"dad0ee9f-ea34-5ce1-b7fe-a0e45b09e845","frontmatter":{"title":"Mikro- vs. Makroarchitektur – Spielraum und Spielregeln","location":"hochschule_campus"}}},{"node":{"id":"bba11502-e73b-5c5e-9ce7-f4102b1daed5","frontmatter":{"title":"GraphQL","location":"hochschule_campus"}}},{"node":{"id":"f17a3451-b9a5-5b42-b740-3c15fe9268f5","frontmatter":{"title":"Immutable Data - Unveränderliche Daten im Griff","location":"hochschule_campus"}}},{"node":{"id":"1b2f3079-33fa-52a7-8f63-17ed40feb17e","frontmatter":{"title":"Kotlin","location":"saxsys"}}},{"node":{"id":"f3a5b0e9-0351-58c1-a827-a5f39196ddee","frontmatter":{"title":"Monadische Transaktionen","location":"hochschule_campus"}}},{"node":{"id":"6c6f82f3-26da-59ee-a8b6-8c178256b6b7","frontmatter":{"title":"Java APIs - the missing manual","location":"cideon"}}},{"node":{"id":"f37a3185-cf74-5401-9461-328751a5a63e","frontmatter":{"title":"Java Reflection: Classes behind the scenes","location":"saxsys"}}},{"node":{"id":"dd2fc902-b2b3-5256-b24b-e09f17f45415","frontmatter":{"title":"Static-Site-Generators","location":"hochschule_campus"}}},{"node":{"id":"9a7e9567-b7fe-59cd-90fe-aec93c90f2af","frontmatter":{"title":"It's a JDK jungle out there - oder wie es mit den neuen Java-Versionen geordnet weitergeht","location":"saxsys"}}},{"node":{"id":"a5f7b4d5-03e6-588d-9778-62b4b8c44286","frontmatter":{"title":"OAuth 2.0/OpenIDConnect mit Keycloak","location":"hochschule_campus"}}},{"node":{"id":"6895717e-291c-581d-8fef-3b5e73bc8369","frontmatter":{"title":"Wie gut kennst Du das Collections Framework?","location":"cideon"}}},{"node":{"id":"a0f32bfb-f9fa-5c9c-a70d-ffd93be7d859","frontmatter":{"title":"Advanced BDD Tests","location":"tallence"}}},{"node":{"id":"c7067e06-b5be-50ec-83d2-9ea30dc14640","frontmatter":{"title":"Innovationsmotor Cloud Foundry!?","location":"saxsys"}}},{"node":{"id":"92ec8c3c-c428-5ca1-bb98-7b8ebac5cdfb","frontmatter":{"title":"JDK 14 und GraalVM im Java Ökosystem","location":null}}},{"node":{"id":"0ebf9412-38af-5831-82e8-2b0aa744f924","frontmatter":{"title":"Branching-Modelle","location":null}}},{"node":{"id":"fee8a0ec-6360-5446-9bb0-9ecbe5695536","frontmatter":{"title":"Java Secure Coding in der Praxis","location":null}}},{"node":{"id":"3c969ad0-d843-57d0-92c4-91340d71851d","frontmatter":{"title":"Web Components","location":null}}},{"node":{"id":"1249d4ab-1401-5936-92b8-3d6dee7f14bb","frontmatter":{"title":"Ultraschnelle Java In-Memory Datenbank-Anwendungen & Microservices mit MicroStream","location":null}}},{"node":{"id":"2e3945a5-7de9-5188-b447-47134c218967","frontmatter":{"title":"Hebe deine IoT-Infrastruktur auf das Serverless-Level an","location":"zeiss"}}},{"node":{"id":"2b8e8a71-59c4-53fb-baa2-5b6136f7efe8","frontmatter":{"title":"Industrie 4.0? Das JUGt mich!","location":"zeiss"}}},{"node":{"id":"a0820bff-9a0d-5989-b837-8f769fcc2ba6","frontmatter":{"title":"Kundenspezifisches IAM mit Keycloak","location":"innolabs"}}},{"node":{"id":"5d96ee33-16f6-5b4c-aca8-557c4c24c14e","frontmatter":{"title":"Content Management neu gedacht mit Contentlab","location":"cideon"}}},{"node":{"id":"8fa19a6d-7e84-5d43-a513-0644ddb362d6","frontmatter":{"title":"Exception First – Stabilisiere deinen Code mit mehr Exceptions","location":"zeiss"}}},{"node":{"id":"f5233192-6039-5c35-9957-b7023ed9e701","frontmatter":{"title":"Spring für architekturinteressierte Entwickler:innen","location":"fraunhofer"}}},{"node":{"id":"79b0298f-b45a-5707-a02c-37ea990349ee","frontmatter":{"title":"ArchUnit: Unit-Tests für deine Java-Architektur","location":"expleo"}}},{"node":{"id":"d1758688-b708-5de7-8e59-5646800cc19a","frontmatter":{"title":"Accessibility in the Wild","location":"tallence"}}},{"node":{"id":"8a2e331b-0f3c-52b6-823e-852ecfff1ba4","frontmatter":{"title":"GraalVM 23 – Konzepte und Features","location":"zeiss"}}},{"node":{"id":"4f2a426a-5b98-5f61-8750-46aac0c6c9f3","frontmatter":{"title":"Java 21: Virtuelle Threads","location":"zeiss"}}},{"node":{"id":"34d30efa-4f03-53e5-8043-fa73d75cbd58","frontmatter":{"title":"AWS-Infrastruktur mit Java erstellen - CDK in Action","location":"zeiss"}}},{"node":{"id":"e583793f-bcc5-5f78-8931-3357be0f0ba5","frontmatter":{"title":"What the CRaC - Superfast JVM startup","location":"zeiss"}}},{"node":{"id":"cafdb0d7-7218-5608-bd6f-c033864617fe","frontmatter":{"title":"Flutter, der heilige Gral der Cross-Plattform-Entwicklung?!","location":"hochschule_campus"}}},{"node":{"id":"fafd1d08-20ad-5b94-8837-fc066b152f0d","frontmatter":{"title":"Schlanke Architektur-Reviews","location":null}}},{"node":{"id":"97f4123c-3293-532b-8ea6-6b81b355fd92","frontmatter":{"title":"Rust (Teil 1): Einführung in die Sprache","location":null}}},{"node":{"id":"56c1a59c-f16a-5f43-aa33-412cf06ee342","frontmatter":{"title":"Rust (Teil 2)","location":null}}}]}},"pageContext":{}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/posters/page-data.json b/page-data/posters/page-data.json index 42cc64026..735926b3b 100644 --- a/page-data/posters/page-data.json +++ b/page-data/posters/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-posters-tsx","path":"/posters/","result":{"data":{"talks":{"edges":[{"node":{"id":"4036ceaf-9643-59e0-af12-2faa665cd0d6","fields":{"slug":"/posts/2023-12-01-javaland/"},"frontmatter":{"title":"","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"56c1a59c-f16a-5f43-aa33-412cf06ee342","fields":{"slug":"/talks/2024-04-24-rust2/"},"frontmatter":{"title":"Rust (Teil 2)","speaker":["konstantin_eger"],"poster":null,"poster_alt":null}}},{"node":{"id":"97f4123c-3293-532b-8ea6-6b81b355fd92","fields":{"slug":"/talks/2024-03-20-rust/"},"frontmatter":{"title":"Rust (Teil 1): Einführung in die Sprache","speaker":["manuel_mauky"],"poster":null,"poster_alt":null}}},{"node":{"id":"fafd1d08-20ad-5b94-8837-fc066b152f0d","fields":{"slug":"/talks/2024-02-28-architektur-reviews/"},"frontmatter":{"title":"Schlanke Architektur-Reviews","speaker":["stefan_zoerner_2"],"poster":null,"poster_alt":null}}},{"node":{"id":"cafdb0d7-7218-5608-bd6f-c033864617fe","fields":{"slug":"/talks/2024-01-31-flutter/"},"frontmatter":{"title":"Flutter, der heilige Gral der Cross-Plattform-Entwicklung?!","speaker":["christoph_menzel"],"poster":null,"poster_alt":null}}},{"node":{"id":"e583793f-bcc5-5f78-8931-3357be0f0ba5","fields":{"slug":"/talks/2023-11-29-crac/"},"frontmatter":{"title":"What the CRaC - Superfast JVM startup","speaker":["gerrit_grunwald"],"poster":{"childImageSharp":{"id":"83946b5b-e38c-5b7d-ac9b-81ea660c5ee7","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e85848","images":{"fallback":{"src":"/static/44456e47b4e2d92792552c2d411e2518/84817/plakat_2023_11.png","srcSet":"/static/44456e47b4e2d92792552c2d411e2518/b8e70/plakat_2023_11.png 750w,\n/static/44456e47b4e2d92792552c2d411e2518/e5839/plakat_2023_11.png 1080w,\n/static/44456e47b4e2d92792552c2d411e2518/f51d5/plakat_2023_11.png 1366w,\n/static/44456e47b4e2d92792552c2d411e2518/84817/plakat_2023_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/44456e47b4e2d92792552c2d411e2518/e5d6f/plakat_2023_11.webp 750w,\n/static/44456e47b4e2d92792552c2d411e2518/0671f/plakat_2023_11.webp 1080w,\n/static/44456e47b4e2d92792552c2d411e2518/7e884/plakat_2023_11.webp 1366w,\n/static/44456e47b4e2d92792552c2d411e2518/e2c0d/plakat_2023_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen ist auf einem Fahrrad und hat einen alten Helm mit Fliegerbrille auf. Man sieht, dass er ziemlich schnell fährt."}}},{"node":{"id":"34d30efa-4f03-53e5-8043-fa73d75cbd58","fields":{"slug":"/talks/2023-10-25-aws_cdk_in_action/"},"frontmatter":{"title":"AWS-Infrastruktur mit Java erstellen - CDK in Action","speaker":["pawel_adaszewski","damian_dudziec"],"poster":{"childImageSharp":{"id":"322b1b28-3c01-54d5-88d6-d64abf4078e4","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d89878","images":{"fallback":{"src":"/static/434d9c3e2846cfe979a57d975235808c/84817/plakat_2023_10.png","srcSet":"/static/434d9c3e2846cfe979a57d975235808c/b8e70/plakat_2023_10.png 750w,\n/static/434d9c3e2846cfe979a57d975235808c/e5839/plakat_2023_10.png 1080w,\n/static/434d9c3e2846cfe979a57d975235808c/f51d5/plakat_2023_10.png 1366w,\n/static/434d9c3e2846cfe979a57d975235808c/84817/plakat_2023_10.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/434d9c3e2846cfe979a57d975235808c/e5d6f/plakat_2023_10.webp 750w,\n/static/434d9c3e2846cfe979a57d975235808c/0671f/plakat_2023_10.webp 1080w,\n/static/434d9c3e2846cfe979a57d975235808c/7e884/plakat_2023_10.webp 1366w,\n/static/434d9c3e2846cfe979a57d975235808c/e2c0d/plakat_2023_10.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und grinst verschmitzt Auf der Wolke ist ein Baukran zu sehen. Am Baukran hängt eine kleine Wolke und zusätzlich fliegen noch Wolken umher."}}},{"node":{"id":"4f2a426a-5b98-5f61-8750-46aac0c6c9f3","fields":{"slug":"/talks/2023-09-27-virtual-threads/"},"frontmatter":{"title":"Java 21: Virtuelle Threads","speaker":["patryk_lewandowski"],"poster":{"childImageSharp":{"id":"c6ed33d8-5c5c-5ba5-bf35-c5d30ff717b8","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#289898","images":{"fallback":{"src":"/static/7809ea1a362146b531abece65510447f/84817/plakat_2023_09.png","srcSet":"/static/7809ea1a362146b531abece65510447f/b8e70/plakat_2023_09.png 750w,\n/static/7809ea1a362146b531abece65510447f/e5839/plakat_2023_09.png 1080w,\n/static/7809ea1a362146b531abece65510447f/f51d5/plakat_2023_09.png 1366w,\n/static/7809ea1a362146b531abece65510447f/84817/plakat_2023_09.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/7809ea1a362146b531abece65510447f/e5d6f/plakat_2023_09.webp 750w,\n/static/7809ea1a362146b531abece65510447f/0671f/plakat_2023_09.webp 1080w,\n/static/7809ea1a362146b531abece65510447f/7e884/plakat_2023_09.webp 1366w,\n/static/7809ea1a362146b531abece65510447f/e2c0d/plakat_2023_09.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hat sich in einem virtuellen Faden verheddert und schaut etwas verzweifelt."}}},{"node":{"id":"8a2e331b-0f3c-52b6-823e-852ecfff1ba4","fields":{"slug":"/talks/2023-06-28-graalvm_23/"},"frontmatter":{"title":"GraalVM 23 – Konzepte und Features","speaker":["wolfgang_weigend"],"poster":{"childImageSharp":{"id":"61b0d0a8-fa3a-58b5-b6f0-eef9f3716b60","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#b878a8","images":{"fallback":{"src":"/static/d62e1742243833e9e67ff3a5e8ba41e0/84817/plakat_2023_06.png","srcSet":"/static/d62e1742243833e9e67ff3a5e8ba41e0/b8e70/plakat_2023_06.png 750w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/e5839/plakat_2023_06.png 1080w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/f51d5/plakat_2023_06.png 1366w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/84817/plakat_2023_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/d62e1742243833e9e67ff3a5e8ba41e0/e5d6f/plakat_2023_06.webp 750w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/0671f/plakat_2023_06.webp 1080w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/7e884/plakat_2023_06.webp 1366w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/e2c0d/plakat_2023_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hat ein Prisma in der Hand aus dem ein regenbogenfarbener Lichtstrahl ausdringt. Er schaut erstaunt auf das Prisma."}}},{"node":{"id":"d1758688-b708-5de7-8e59-5646800cc19a","fields":{"slug":"/talks/2023-05-31-accessibility_in_the_wild/"},"frontmatter":{"title":"Accessibility in the Wild","speaker":["daniel_sulyok"],"poster":{"childImageSharp":{"id":"2289c524-859b-5899-a8d7-b9ae17afcad5","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e85888","images":{"fallback":{"src":"/static/4d37935c5d380cb8d64e34d12cbd80d2/84817/plakat_2023_05.png","srcSet":"/static/4d37935c5d380cb8d64e34d12cbd80d2/b8e70/plakat_2023_05.png 750w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/e5839/plakat_2023_05.png 1080w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/f51d5/plakat_2023_05.png 1366w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/84817/plakat_2023_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/4d37935c5d380cb8d64e34d12cbd80d2/e5d6f/plakat_2023_05.webp 750w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/0671f/plakat_2023_05.webp 1080w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/7e884/plakat_2023_05.webp 1366w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/e2c0d/plakat_2023_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hat einen Baseballschläger in den Händen und zerstört damit eine Verkehrsbake."}}},{"node":{"id":"79b0298f-b45a-5707-a02c-37ea990349ee","fields":{"slug":"/talks/2023-04-26-archunit_unit_tests_java_architektur/"},"frontmatter":{"title":"ArchUnit: Unit-Tests für deine Java-Architektur","speaker":["roland_weisleder"],"poster":{"childImageSharp":{"id":"197c670b-992f-54d0-9a49-0aac78c4b5e4","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#58a848","images":{"fallback":{"src":"/static/3783aca0b180d59828528ae2e9f37788/84817/plakat_2023_04.png","srcSet":"/static/3783aca0b180d59828528ae2e9f37788/b8e70/plakat_2023_04.png 750w,\n/static/3783aca0b180d59828528ae2e9f37788/e5839/plakat_2023_04.png 1080w,\n/static/3783aca0b180d59828528ae2e9f37788/f51d5/plakat_2023_04.png 1366w,\n/static/3783aca0b180d59828528ae2e9f37788/84817/plakat_2023_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/3783aca0b180d59828528ae2e9f37788/e5d6f/plakat_2023_04.webp 750w,\n/static/3783aca0b180d59828528ae2e9f37788/0671f/plakat_2023_04.webp 1080w,\n/static/3783aca0b180d59828528ae2e9f37788/7e884/plakat_2023_04.webp 1366w,\n/static/3783aca0b180d59828528ae2e9f37788/e2c0d/plakat_2023_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgens trägt ein grünes Cape und einen Hut mit einer Feder. Er sieht aus wie Robin Hood. In den Händen hat er Pfeil und Bogen parat, am Rücken trägt er einen Köcher mit weiteren Pfeilen."}}},{"node":{"id":"f5233192-6039-5c35-9957-b7023ed9e701","fields":{"slug":"/talks/2023-03-29-spring_fuer_architekturinteressierte_entwickler_innen/"},"frontmatter":{"title":"Spring für architekturinteressierte Entwickler:innen","speaker":["oliver_drotbohm"],"poster":{"childImageSharp":{"id":"ab1c70db-cea4-586b-be81-643ef56fc65a","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8a808","images":{"fallback":{"src":"/static/bd3df371bc1bfedf9acf732740ac6b34/84817/plakat_2023_03.png","srcSet":"/static/bd3df371bc1bfedf9acf732740ac6b34/b8e70/plakat_2023_03.png 750w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/e5839/plakat_2023_03.png 1080w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/f51d5/plakat_2023_03.png 1366w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/84817/plakat_2023_03.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/bd3df371bc1bfedf9acf732740ac6b34/e5d6f/plakat_2023_03.webp 750w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/0671f/plakat_2023_03.webp 1080w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/7e884/plakat_2023_03.webp 1366w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/e2c0d/plakat_2023_03.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgens Kopf ist auf einer Sprungfeder in einer Box, die wie ein Springteufel herausragt."}}},{"node":{"id":"8fa19a6d-7e84-5d43-a513-0644ddb362d6","fields":{"slug":"/talks/2023-02-22-exception_first/"},"frontmatter":{"title":"Exception First – Stabilisiere deinen Code mit mehr Exceptions","speaker":["sergej_tihonov"],"poster":{"childImageSharp":{"id":"85b5c33a-1b3d-5625-8375-408b5c1f84bf","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e88838","images":{"fallback":{"src":"/static/69a227ac221f5d70680e1772e2b66652/84817/plakat_2023_02.png","srcSet":"/static/69a227ac221f5d70680e1772e2b66652/b8e70/plakat_2023_02.png 750w,\n/static/69a227ac221f5d70680e1772e2b66652/e5839/plakat_2023_02.png 1080w,\n/static/69a227ac221f5d70680e1772e2b66652/f51d5/plakat_2023_02.png 1366w,\n/static/69a227ac221f5d70680e1772e2b66652/84817/plakat_2023_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/69a227ac221f5d70680e1772e2b66652/e5d6f/plakat_2023_02.webp 750w,\n/static/69a227ac221f5d70680e1772e2b66652/0671f/plakat_2023_02.webp 1080w,\n/static/69a227ac221f5d70680e1772e2b66652/7e884/plakat_2023_02.webp 1366w,\n/static/69a227ac221f5d70680e1772e2b66652/e2c0d/plakat_2023_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert."}}},{"node":{"id":"5d96ee33-16f6-5b4c-aca8-557c4c24c14e","fields":{"slug":"/talks/2023-01-25-contentlab/"},"frontmatter":{"title":"Content Management neu gedacht mit Contentlab","speaker":["markus_weiland"],"poster":{"childImageSharp":{"id":"86c1c8d2-94ea-5866-bbdb-3ac21398dcc3","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#9868a8","images":{"fallback":{"src":"/static/8f15082e67d772dd339121432ea649d9/84817/plakat_2023_01.png","srcSet":"/static/8f15082e67d772dd339121432ea649d9/b8e70/plakat_2023_01.png 750w,\n/static/8f15082e67d772dd339121432ea649d9/e5839/plakat_2023_01.png 1080w,\n/static/8f15082e67d772dd339121432ea649d9/f51d5/plakat_2023_01.png 1366w,\n/static/8f15082e67d772dd339121432ea649d9/84817/plakat_2023_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/8f15082e67d772dd339121432ea649d9/e5d6f/plakat_2023_01.webp 750w,\n/static/8f15082e67d772dd339121432ea649d9/0671f/plakat_2023_01.webp 1080w,\n/static/8f15082e67d772dd339121432ea649d9/7e884/plakat_2023_01.webp 1366w,\n/static/8f15082e67d772dd339121432ea649d9/e2c0d/plakat_2023_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt einen Laborkittel und eine Schutzbrille. In der Hand trägt er zwei Reagenzgläser. Scheinbar ist bei seinem Experiment etwas explodiert denn über Jürgen und den Gläsern ziehen Rauchschwaden auf, Jürgen ist komplett grau vom Explosionsstaub."}}},{"node":{"id":"a0820bff-9a0d-5989-b837-8f769fcc2ba6","fields":{"slug":"/talks/2022-11-30-iam-keycloak/"},"frontmatter":{"title":"Kundenspezifisches IAM mit Keycloak","speaker":["daniel_fesenmeyer"],"poster":{"childImageSharp":{"id":"0b48a461-1420-5309-b315-926387e3fc44","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/4313899aa2d31ed4b1e24d7d91e8c20a/84817/plakat_2022_11.png","srcSet":"/static/4313899aa2d31ed4b1e24d7d91e8c20a/b8e70/plakat_2022_11.png 750w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/e5839/plakat_2022_11.png 1080w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/f51d5/plakat_2022_11.png 1366w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/84817/plakat_2022_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/4313899aa2d31ed4b1e24d7d91e8c20a/e5d6f/plakat_2022_11.webp 750w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/0671f/plakat_2022_11.webp 1080w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/7e884/plakat_2022_11.webp 1366w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/e2c0d/plakat_2022_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten."}}},{"node":{"id":"2b8e8a71-59c4-53fb-baa2-5b6136f7efe8","fields":{"slug":"/talks/2022-10-12-indistrie_4.0/"},"frontmatter":{"title":"Industrie 4.0? Das JUGt mich!","speaker":["marco_gotthans"],"poster":{"childImageSharp":{"id":"1a0dbc74-dd80-5566-aa7d-5a4aac2ba518","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#28b898","images":{"fallback":{"src":"/static/f522849df2b2b8add5330999b1f5a484/84817/plakat_2022_10.png","srcSet":"/static/f522849df2b2b8add5330999b1f5a484/b8e70/plakat_2022_10.png 750w,\n/static/f522849df2b2b8add5330999b1f5a484/e5839/plakat_2022_10.png 1080w,\n/static/f522849df2b2b8add5330999b1f5a484/f51d5/plakat_2022_10.png 1366w,\n/static/f522849df2b2b8add5330999b1f5a484/84817/plakat_2022_10.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/f522849df2b2b8add5330999b1f5a484/e5d6f/plakat_2022_10.webp 750w,\n/static/f522849df2b2b8add5330999b1f5a484/0671f/plakat_2022_10.webp 1080w,\n/static/f522849df2b2b8add5330999b1f5a484/7e884/plakat_2022_10.webp 1366w,\n/static/f522849df2b2b8add5330999b1f5a484/e2c0d/plakat_2022_10.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und auf der Wolke ist ein Baukran zusehen."}}},{"node":{"id":"2e3945a5-7de9-5188-b447-47134c218967","fields":{"slug":"/talks/2022-06-22-iot-infrastruktur-serverless/"},"frontmatter":{"title":"Hebe deine IoT-Infrastruktur auf das Serverless-Level an","speaker":["pawel_adaszewski"],"poster":{"childImageSharp":{"id":"fff1b9ff-e9ff-5fc3-ac26-c00c71f16bde","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8b838","images":{"fallback":{"src":"/static/16e022022a45fa9f5687edc16e865aec/84817/plakat_2022_06.png","srcSet":"/static/16e022022a45fa9f5687edc16e865aec/b8e70/plakat_2022_06.png 750w,\n/static/16e022022a45fa9f5687edc16e865aec/e5839/plakat_2022_06.png 1080w,\n/static/16e022022a45fa9f5687edc16e865aec/f51d5/plakat_2022_06.png 1366w,\n/static/16e022022a45fa9f5687edc16e865aec/84817/plakat_2022_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/16e022022a45fa9f5687edc16e865aec/e5d6f/plakat_2022_06.webp 750w,\n/static/16e022022a45fa9f5687edc16e865aec/0671f/plakat_2022_06.webp 1080w,\n/static/16e022022a45fa9f5687edc16e865aec/7e884/plakat_2022_06.webp 1366w,\n/static/16e022022a45fa9f5687edc16e865aec/e2c0d/plakat_2022_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen spielt eine Flöte. Hinter ihm sieht man einen Weg auf dem Jürgen gelaufen kommt. Hinter ihm ist ein Smartphone und eine Waschmaschine, jeweils mit Armen, Beinen und Gesicht. Die Gesichter der Geräte sehen aus wie paralysiert und sie halten ihre Arme wie Zombies nach Vorn. Sie folgen Jürgen, so als wäre er der Rattenfänger von Hameln."}}},{"node":{"id":"e11f95ba-4519-56e7-a60e-e066c5379738","fields":{"slug":"/posts/2022-01-07-javaland/"},"frontmatter":{"title":"","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"1249d4ab-1401-5936-92b8-3d6dee7f14bb","fields":{"slug":"/talks/2021-06-30-microstream/"},"frontmatter":{"title":"Ultraschnelle Java In-Memory Datenbank-Anwendungen & Microservices mit MicroStream","speaker":["markus_kett","christian_kuemmel"],"poster":{"childImageSharp":{"id":"1567f34a-c228-511c-a368-2041cf79e3fa","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f85838","images":{"fallback":{"src":"/static/8f427a4552cb3ca64fe96511228f5a57/84817/plakat_2021_06.png","srcSet":"/static/8f427a4552cb3ca64fe96511228f5a57/b8e70/plakat_2021_06.png 750w,\n/static/8f427a4552cb3ca64fe96511228f5a57/e5839/plakat_2021_06.png 1080w,\n/static/8f427a4552cb3ca64fe96511228f5a57/f51d5/plakat_2021_06.png 1366w,\n/static/8f427a4552cb3ca64fe96511228f5a57/84817/plakat_2021_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/8f427a4552cb3ca64fe96511228f5a57/e5d6f/plakat_2021_06.webp 750w,\n/static/8f427a4552cb3ca64fe96511228f5a57/0671f/plakat_2021_06.webp 1080w,\n/static/8f427a4552cb3ca64fe96511228f5a57/7e884/plakat_2021_06.webp 1366w,\n/static/8f427a4552cb3ca64fe96511228f5a57/e2c0d/plakat_2021_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt am Tisch und überlegt. Er spielt Memory und hat gerade eine aufgedeckte Memory-Karte mit dem Java-Duke darauf in der Hand. Auf dem Tisch sind die anderen Karten zugedeckt, bis auf eine offene Karte. Auf dieser ist ein Datenbank-Symbol zu sehen."}}},{"node":{"id":"3c969ad0-d843-57d0-92c4-91340d71851d","fields":{"slug":"/talks/2021-01-27-webcomponents/"},"frontmatter":{"title":"Web Components","speaker":["manuel_mauky"],"poster":{"childImageSharp":{"id":"9bba5bef-9d0e-50c8-b451-ffed64ad6bd4","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#981848","images":{"fallback":{"src":"/static/540abccd98049d14ae192d2ada3cbcc3/84817/plakat_2021_01.png","srcSet":"/static/540abccd98049d14ae192d2ada3cbcc3/b8e70/plakat_2021_01.png 750w,\n/static/540abccd98049d14ae192d2ada3cbcc3/e5839/plakat_2021_01.png 1080w,\n/static/540abccd98049d14ae192d2ada3cbcc3/f51d5/plakat_2021_01.png 1366w,\n/static/540abccd98049d14ae192d2ada3cbcc3/84817/plakat_2021_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/540abccd98049d14ae192d2ada3cbcc3/e5d6f/plakat_2021_01.webp 750w,\n/static/540abccd98049d14ae192d2ada3cbcc3/0671f/plakat_2021_01.webp 1080w,\n/static/540abccd98049d14ae192d2ada3cbcc3/7e884/plakat_2021_01.webp 1366w,\n/static/540abccd98049d14ae192d2ada3cbcc3/e2c0d/plakat_2021_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Wir sehen ein großes Spinnennetz, in dem Jürgen gefangen ist. Er hängt verkehrt herum im Netz und sieht ziemlich erschrocken aus."}}},{"node":{"id":"fee8a0ec-6360-5446-9bb0-9ecbe5695536","fields":{"slug":"/talks/2020-11-25-secure_coding/"},"frontmatter":{"title":"Java Secure Coding in der Praxis","speaker":["nico_foerster"],"poster":{"childImageSharp":{"id":"b5a8cec9-632e-5d2d-acc3-45cfdedb6dfa","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#182838","images":{"fallback":{"src":"/static/c2b6e13c2719de1c7a0da2b790067455/84817/plakat_2020_11.png","srcSet":"/static/c2b6e13c2719de1c7a0da2b790067455/b8e70/plakat_2020_11.png 750w,\n/static/c2b6e13c2719de1c7a0da2b790067455/e5839/plakat_2020_11.png 1080w,\n/static/c2b6e13c2719de1c7a0da2b790067455/f51d5/plakat_2020_11.png 1366w,\n/static/c2b6e13c2719de1c7a0da2b790067455/84817/plakat_2020_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/c2b6e13c2719de1c7a0da2b790067455/e5d6f/plakat_2020_11.webp 750w,\n/static/c2b6e13c2719de1c7a0da2b790067455/0671f/plakat_2020_11.webp 1080w,\n/static/c2b6e13c2719de1c7a0da2b790067455/7e884/plakat_2020_11.webp 1366w,\n/static/c2b6e13c2719de1c7a0da2b790067455/e2c0d/plakat_2020_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt eine schwarze Woll-Mütze und eine schwarze Maske. Er trägt Handschuhe und sieht aus wie ein Einbrecher. Im Hintergrund sieht man eine Wohnungstür, vor der Jürgen kniet. Er hat einen Dietrich in der Hand und versucht gerade, dass Schloß zu knacken. Wir sehen Jürgens Rücken und er schaut zu uns über die Schulter. Seinem Blick zu urteilen, ist er überrascht weil wir ihn beim Einbrechen erwischt haben."}}},{"node":{"id":"0ebf9412-38af-5831-82e8-2b0aa744f924","fields":{"slug":"/talks/2020-07-22-branching_modelle/"},"frontmatter":{"title":"Branching-Modelle","speaker":["hannes_kretschmer"],"poster":{"childImageSharp":{"id":"1908832c-2f77-598f-a24b-2bcdee954b3a","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d86838","images":{"fallback":{"src":"/static/595b224b634a1c6694d94578a61bc06c/84817/plakat_2020_07.png","srcSet":"/static/595b224b634a1c6694d94578a61bc06c/b8e70/plakat_2020_07.png 750w,\n/static/595b224b634a1c6694d94578a61bc06c/e5839/plakat_2020_07.png 1080w,\n/static/595b224b634a1c6694d94578a61bc06c/f51d5/plakat_2020_07.png 1366w,\n/static/595b224b634a1c6694d94578a61bc06c/84817/plakat_2020_07.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/595b224b634a1c6694d94578a61bc06c/e5d6f/plakat_2020_07.webp 750w,\n/static/595b224b634a1c6694d94578a61bc06c/0671f/plakat_2020_07.webp 1080w,\n/static/595b224b634a1c6694d94578a61bc06c/7e884/plakat_2020_07.webp 1366w,\n/static/595b224b634a1c6694d94578a61bc06c/e2c0d/plakat_2020_07.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hat einen Schaffner-Hut auf dem Kopf. Er hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier mit der Überschrift 'Fahrplan' geheftet ist. Unter der Überschrift ist ein Streckenplan mit Verzweigungen angedeutet."}}},{"node":{"id":"92ec8c3c-c428-5ca1-bb98-7b8ebac5cdfb","fields":{"slug":"/talks/2020-04-29-jdk14_graalvm/"},"frontmatter":{"title":"JDK 14 und GraalVM im Java Ökosystem","speaker":["wolfgang_weigend"],"poster":{"childImageSharp":{"id":"59ef0a09-a854-5bc5-a122-2d35ddcf6987","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#486888","images":{"fallback":{"src":"/static/1b5849494114993b21e29316b4af1f35/84817/plakat_2020_04.png","srcSet":"/static/1b5849494114993b21e29316b4af1f35/b8e70/plakat_2020_04.png 750w,\n/static/1b5849494114993b21e29316b4af1f35/e5839/plakat_2020_04.png 1080w,\n/static/1b5849494114993b21e29316b4af1f35/f51d5/plakat_2020_04.png 1366w,\n/static/1b5849494114993b21e29316b4af1f35/84817/plakat_2020_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/1b5849494114993b21e29316b4af1f35/e5d6f/plakat_2020_04.webp 750w,\n/static/1b5849494114993b21e29316b4af1f35/0671f/plakat_2020_04.webp 1080w,\n/static/1b5849494114993b21e29316b4af1f35/7e884/plakat_2020_04.webp 1366w,\n/static/1b5849494114993b21e29316b4af1f35/e2c0d/plakat_2020_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt in seinem Sessel. Er trägt sein übliches Jacket, eine Schlafanzug-Hose und Latschen. Neben dem Sessel sieht man seine üblichen schicken Schnürschuhe herumliegen. Er hat ein Headset aufgesetzt und seinen Laptop im Schoß. Jürgen verfolgt den Vortrag aus dem Home-Office. Auf dem Laptop-Deckel ist eine angebissene Banane zusehen."}}},{"node":{"id":"b4f5ca9b-9c1d-5041-ac18-4e371787ac48","fields":{"slug":"/posts/2020-03-24-corona/"},"frontmatter":{"title":"","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"c7067e06-b5be-50ec-83d2-9ea30dc14640","fields":{"slug":"/talks/2020-01-27-cloud-foundry/"},"frontmatter":{"title":"Innovationsmotor Cloud Foundry!?","speaker":["simon_roloff"],"poster":{"childImageSharp":{"id":"abe046a7-29a3-5710-9b2b-cf4a5ff0c1a2","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#583898","images":{"fallback":{"src":"/static/5ef746b99e05db0762f96d0a28f278da/84817/plakat_2020-01.png","srcSet":"/static/5ef746b99e05db0762f96d0a28f278da/b8e70/plakat_2020-01.png 750w,\n/static/5ef746b99e05db0762f96d0a28f278da/e5839/plakat_2020-01.png 1080w,\n/static/5ef746b99e05db0762f96d0a28f278da/f51d5/plakat_2020-01.png 1366w,\n/static/5ef746b99e05db0762f96d0a28f278da/84817/plakat_2020-01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/5ef746b99e05db0762f96d0a28f278da/e5d6f/plakat_2020-01.webp 750w,\n/static/5ef746b99e05db0762f96d0a28f278da/0671f/plakat_2020-01.webp 1080w,\n/static/5ef746b99e05db0762f96d0a28f278da/7e884/plakat_2020-01.webp 1366w,\n/static/5ef746b99e05db0762f96d0a28f278da/e2c0d/plakat_2020-01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Wir sehen das typische Cloud-Symbol einer Wolke im Vordergrund. Jürgen stützt sich auf die Wolke, so als wäre es ein Kopfkissen. Er stützt seinen Kopf mit einem Arm ab und schaut ein bisschen verträumt. Er wirkt wie in Gedanken versunken."}}},{"node":{"id":"a0f32bfb-f9fa-5c9c-a70d-ffd93be7d859","fields":{"slug":"/talks/2019-11-28-advanced-bdd-tests/"},"frontmatter":{"title":"Advanced BDD Tests","speaker":["maik_wagner"],"poster":{"childImageSharp":{"id":"6f443280-7e6e-5951-ab2a-0815064e81b4","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d86868","images":{"fallback":{"src":"/static/c5e4690e979964e9c44af61d883856f8/b6707/plakat_2019_11.png","srcSet":"/static/c5e4690e979964e9c44af61d883856f8/0e3b9/plakat_2019_11.png 750w,\n/static/c5e4690e979964e9c44af61d883856f8/7aaf4/plakat_2019_11.png 1080w,\n/static/c5e4690e979964e9c44af61d883856f8/006ba/plakat_2019_11.png 1366w,\n/static/c5e4690e979964e9c44af61d883856f8/b6707/plakat_2019_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/c5e4690e979964e9c44af61d883856f8/ebc34/plakat_2019_11.webp 750w,\n/static/c5e4690e979964e9c44af61d883856f8/47da9/plakat_2019_11.webp 1080w,\n/static/c5e4690e979964e9c44af61d883856f8/659f9/plakat_2019_11.webp 1366w,\n/static/c5e4690e979964e9c44af61d883856f8/c86cf/plakat_2019_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier zusehen ist. Auf dem Blatt steht 'Testplan' oben und darunter sind drei Checkboxen mit angedeuteten Textzeilen daneben."}}},{"node":{"id":"1e8e7717-76b0-59ff-b867-620afdfc1cd7","fields":{"slug":"/posts/2019-08-16-grillen/"},"frontmatter":{"title":"JUG Sommerpause: Grillen","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"6895717e-291c-581d-8fef-3b5e73bc8369","fields":{"slug":"/talks/2019-06-26-collection-framework/"},"frontmatter":{"title":"Wie gut kennst Du das Collections Framework?","speaker":["thilo_frotscher"],"poster":{"childImageSharp":{"id":"ecc9b098-2be1-50e1-87d8-48488a256061","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#389838","images":{"fallback":{"src":"/static/359c95f2d624a1b8d7167b6ff2c5340c/b6707/plakat_2019_06.png","srcSet":"/static/359c95f2d624a1b8d7167b6ff2c5340c/0e3b9/plakat_2019_06.png 750w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/7aaf4/plakat_2019_06.png 1080w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/006ba/plakat_2019_06.png 1366w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/b6707/plakat_2019_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/359c95f2d624a1b8d7167b6ff2c5340c/ebc34/plakat_2019_06.webp 750w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/47da9/plakat_2019_06.webp 1080w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/659f9/plakat_2019_06.webp 1366w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/c86cf/plakat_2019_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen trägt eine Sonnenbrille und ein buntes Hemd mit Blumen darauf. Er hält sich die Hand ans Kinn und grinst, so als würde er gerade einen Plan schmieden. An seinem Hemd hängt ein Schild mit der Aufschrift 'Sommer Collection'."}}},{"node":{"id":"a5f7b4d5-03e6-588d-9778-62b4b8c44286","fields":{"slug":"/talks/2019-05-29-oauth/"},"frontmatter":{"title":"OAuth 2.0/OpenIDConnect mit Keycloak","speaker":["denny_israel"],"poster":{"childImageSharp":{"id":"cb4beaed-8514-5a8a-8dfe-7bec12fbdd27","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#386898","images":{"fallback":{"src":"/static/eaf6c5845a5ab5a40e0dd634a7eaed23/b6707/plakat_2019_05.png","srcSet":"/static/eaf6c5845a5ab5a40e0dd634a7eaed23/0e3b9/plakat_2019_05.png 750w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/7aaf4/plakat_2019_05.png 1080w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/006ba/plakat_2019_05.png 1366w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/b6707/plakat_2019_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/eaf6c5845a5ab5a40e0dd634a7eaed23/ebc34/plakat_2019_05.webp 750w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/47da9/plakat_2019_05.webp 1080w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/659f9/plakat_2019_05.webp 1366w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/c86cf/plakat_2019_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten."}}},{"node":{"id":"9a7e9567-b7fe-59cd-90fe-aec93c90f2af","fields":{"slug":"/talks/2019-04-24_jdk_jungle/"},"frontmatter":{"title":"It's a JDK jungle out there - oder wie es mit den neuen Java-Versionen geordnet weitergeht","speaker":["wolfgang_weigend"],"poster":{"childImageSharp":{"id":"e335d1a1-3789-5e42-9670-a3e1c361eadc","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/32de550f9e63747cb85192fa0598ae2c/b6707/plakat_2019_04.png","srcSet":"/static/32de550f9e63747cb85192fa0598ae2c/0e3b9/plakat_2019_04.png 750w,\n/static/32de550f9e63747cb85192fa0598ae2c/7aaf4/plakat_2019_04.png 1080w,\n/static/32de550f9e63747cb85192fa0598ae2c/006ba/plakat_2019_04.png 1366w,\n/static/32de550f9e63747cb85192fa0598ae2c/b6707/plakat_2019_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/32de550f9e63747cb85192fa0598ae2c/ebc34/plakat_2019_04.webp 750w,\n/static/32de550f9e63747cb85192fa0598ae2c/47da9/plakat_2019_04.webp 1080w,\n/static/32de550f9e63747cb85192fa0598ae2c/659f9/plakat_2019_04.webp 1366w,\n/static/32de550f9e63747cb85192fa0598ae2c/c86cf/plakat_2019_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen hält eine Schriftrolle mit offiziellen Siegel in der Hand und liest wie ein mittelalterlicher Herold daraus vor. Wir sehen leider nicht den Text auf der Schriftrolle."}}},{"node":{"id":"dd2fc902-b2b3-5256-b24b-e09f17f45415","fields":{"slug":"/talks/2019-03-27-static-site-generators/"},"frontmatter":{"title":"Static-Site-Generators","speaker":["manuel_mauky"],"poster":{"childImageSharp":{"id":"bffb7b05-0e58-5922-92df-21ce241ccd84","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#a8c868","images":{"fallback":{"src":"/static/a69cadfbb400620dadfb89d178c1c8db/a6b6d/plakat_2019_03.png","srcSet":"/static/a69cadfbb400620dadfb89d178c1c8db/0e3b9/plakat_2019_03.png 750w,\n/static/a69cadfbb400620dadfb89d178c1c8db/7aaf4/plakat_2019_03.png 1080w,\n/static/a69cadfbb400620dadfb89d178c1c8db/a6b6d/plakat_2019_03.png 1240w","sizes":"100vw"},"sources":[{"srcSet":"/static/a69cadfbb400620dadfb89d178c1c8db/ebc34/plakat_2019_03.webp 750w,\n/static/a69cadfbb400620dadfb89d178c1c8db/47da9/plakat_2019_03.webp 1080w,\n/static/a69cadfbb400620dadfb89d178c1c8db/5c55f/plakat_2019_03.webp 1240w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.414516129032258}}},"poster_alt":"Poster: Jürgen hält einen Kasten in der Hand mit jeweils einem Trichter oben und unten. Oben gibt er zwei Dokumente hinein und unten fällt das Bild einer Webseite heraus. Auf dem Kasten ist das Logo von Gatsbyjs zu sehen."}}},{"node":{"id":"f37a3185-cf74-5401-9461-328751a5a63e","fields":{"slug":"/talks/2019-02-27_reflection/"},"frontmatter":{"title":"Java Reflection: Classes behind the scenes","speaker":["erik_jaehne"],"poster":{"childImageSharp":{"id":"b2cb5256-0c61-5e8b-8a34-23f74562f16f","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#78b8b8","images":{"fallback":{"src":"/static/15923e5b77de857597a70091dfe03bd5/84817/plakat_2019_02.png","srcSet":"/static/15923e5b77de857597a70091dfe03bd5/b8e70/plakat_2019_02.png 750w,\n/static/15923e5b77de857597a70091dfe03bd5/e5839/plakat_2019_02.png 1080w,\n/static/15923e5b77de857597a70091dfe03bd5/f51d5/plakat_2019_02.png 1366w,\n/static/15923e5b77de857597a70091dfe03bd5/84817/plakat_2019_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/15923e5b77de857597a70091dfe03bd5/e5d6f/plakat_2019_02.webp 750w,\n/static/15923e5b77de857597a70091dfe03bd5/0671f/plakat_2019_02.webp 1080w,\n/static/15923e5b77de857597a70091dfe03bd5/7e884/plakat_2019_02.webp 1366w,\n/static/15923e5b77de857597a70091dfe03bd5/e2c0d/plakat_2019_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand."}}},{"node":{"id":"6c6f82f3-26da-59ee-a8b6-8c178256b6b7","fields":{"slug":"/talks/2019-01-31_java_apis_missing_manual/"},"frontmatter":{"title":"Java APIs - the missing manual","speaker":["hendrik_ebbers"],"poster":{"childImageSharp":{"id":"8509bc59-0ad5-5d24-87e3-f253d53d68b2","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#3858b8","images":{"fallback":{"src":"/static/8c4759d0cca5ff005992863b4cbbfd0c/84817/plakat_2019_01.png","srcSet":"/static/8c4759d0cca5ff005992863b4cbbfd0c/b8e70/plakat_2019_01.png 750w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/e5839/plakat_2019_01.png 1080w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/f51d5/plakat_2019_01.png 1366w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/84817/plakat_2019_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/8c4759d0cca5ff005992863b4cbbfd0c/e5d6f/plakat_2019_01.webp 750w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/0671f/plakat_2019_01.webp 1080w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/7e884/plakat_2019_01.webp 1366w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/e2c0d/plakat_2019_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt mit seiner Lesebrille in seinem Sessel und liest ein Buch. Auf dem Buchrücken steht 'Javadoc'"}}},{"node":{"id":"2a012a23-7791-512a-af55-7a5d72c7b67d","fields":{"slug":"/posts/2018-12-30-congress-everywhere/"},"frontmatter":{"title":"Congress Everywhere - 35C3@Görlitz","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"f3a5b0e9-0351-58c1-a827-a5f39196ddee","fields":{"slug":"/talks/2018-11-23-monadische_transaktionen/"},"frontmatter":{"title":"Monadische Transaktionen","speaker":["gregor_trefs"],"poster":{"childImageSharp":{"id":"918002c9-e393-5b8d-a2d6-ee73c1735383","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#680838","images":{"fallback":{"src":"/static/d29473cce93e3ade3231fd7ea7b0188e/84817/plakat_2018_11.png","srcSet":"/static/d29473cce93e3ade3231fd7ea7b0188e/b8e70/plakat_2018_11.png 750w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/e5839/plakat_2018_11.png 1080w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/f51d5/plakat_2018_11.png 1366w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/84817/plakat_2018_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/d29473cce93e3ade3231fd7ea7b0188e/e5d6f/plakat_2018_11.webp 750w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/0671f/plakat_2018_11.webp 1080w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/7e884/plakat_2018_11.webp 1366w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/e2c0d/plakat_2018_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und hält ein Tablett in der Hand. Auf dem Tablett steht eine durchsichtige Flasche mit gelber Limo darin. Auf dem Etikett steht 'Li-Monade' geschrieben."}}},{"node":{"id":"fafec1ba-0938-562d-9926-409d1d341c50","fields":{"slug":"/posts/2018-09-26-coding-dojo/"},"frontmatter":{"title":"Vortrag entfällt. Stattdessen Coding-Dojo","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"bb4a6f0c-58fc-590e-9a58-f1ea08fc6cad","fields":{"slug":"/posts/2018-07-31-grillabend/"},"frontmatter":{"title":"JUG Sommerpause: Grillen","speaker":null,"poster":{"childImageSharp":{"id":"f72f3e37-dad2-51b5-9e2a-b6413a70715c","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d88828","images":{"fallback":{"src":"/static/ef0ba78d7c603390b50fd5bee9599b5a/84817/plakat_2017_07.png","srcSet":"/static/ef0ba78d7c603390b50fd5bee9599b5a/b8e70/plakat_2017_07.png 750w,\n/static/ef0ba78d7c603390b50fd5bee9599b5a/e5839/plakat_2017_07.png 1080w,\n/static/ef0ba78d7c603390b50fd5bee9599b5a/f51d5/plakat_2017_07.png 1366w,\n/static/ef0ba78d7c603390b50fd5bee9599b5a/84817/plakat_2017_07.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/ef0ba78d7c603390b50fd5bee9599b5a/e5d6f/plakat_2017_07.webp 750w,\n/static/ef0ba78d7c603390b50fd5bee9599b5a/0671f/plakat_2017_07.webp 1080w,\n/static/ef0ba78d7c603390b50fd5bee9599b5a/7e884/plakat_2017_07.webp 1366w,\n/static/ef0ba78d7c603390b50fd5bee9599b5a/e2c0d/plakat_2017_07.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und hält einen Teller mit Bratwürsten in der Hand"}}},{"node":{"id":"f17a3451-b9a5-5b42-b740-3c15fe9268f5","fields":{"slug":"/talks/2018-06-27-immutable-data/"},"frontmatter":{"title":"Immutable Data - Unveränderliche Daten im Griff","speaker":["manuel_mauky"],"poster":{"childImageSharp":{"id":"314ba704-f1f4-5d2c-8535-b32da028a3c9","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#780838","images":{"fallback":{"src":"/static/1fae33eb72f57d492a22e010e53219f1/84817/plakat_2018_06.png","srcSet":"/static/1fae33eb72f57d492a22e010e53219f1/b8e70/plakat_2018_06.png 750w,\n/static/1fae33eb72f57d492a22e010e53219f1/e5839/plakat_2018_06.png 1080w,\n/static/1fae33eb72f57d492a22e010e53219f1/f51d5/plakat_2018_06.png 1366w,\n/static/1fae33eb72f57d492a22e010e53219f1/84817/plakat_2018_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/1fae33eb72f57d492a22e010e53219f1/e5d6f/plakat_2018_06.webp 750w,\n/static/1fae33eb72f57d492a22e010e53219f1/0671f/plakat_2018_06.webp 1080w,\n/static/1fae33eb72f57d492a22e010e53219f1/7e884/plakat_2018_06.webp 1366w,\n/static/1fae33eb72f57d492a22e010e53219f1/e2c0d/plakat_2018_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen steht vor einem großen Steinblock, der fast aussieht wie ein Grabstein. Auf dem Stein sind lauter Nullen und Einsen eingraviert. Er hält einen Hammer und Meißel in der Hand."}}},{"node":{"id":"bba11502-e73b-5c5e-9ce7-f4102b1daed5","fields":{"slug":"/talks/2018-05-30-graphql/"},"frontmatter":{"title":"GraphQL","speaker":["stephan_strehler"],"poster":{"childImageSharp":{"id":"90e1be0b-07fd-5977-ad85-c716671424c1","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e838a8","images":{"fallback":{"src":"/static/70801d1cf0778b63b022c58e167483bf/84817/plakat_2018_05.png","srcSet":"/static/70801d1cf0778b63b022c58e167483bf/b8e70/plakat_2018_05.png 750w,\n/static/70801d1cf0778b63b022c58e167483bf/e5839/plakat_2018_05.png 1080w,\n/static/70801d1cf0778b63b022c58e167483bf/f51d5/plakat_2018_05.png 1366w,\n/static/70801d1cf0778b63b022c58e167483bf/84817/plakat_2018_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/70801d1cf0778b63b022c58e167483bf/e5d6f/plakat_2018_05.webp 750w,\n/static/70801d1cf0778b63b022c58e167483bf/0671f/plakat_2018_05.webp 1080w,\n/static/70801d1cf0778b63b022c58e167483bf/7e884/plakat_2018_05.webp 1366w,\n/static/70801d1cf0778b63b022c58e167483bf/e2c0d/plakat_2018_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das GraphQL-Logo zu sehen."}}},{"node":{"id":"1b2f3079-33fa-52a7-8f63-17ed40feb17e","fields":{"slug":"/talks/2018-04-25-kotlin/"},"frontmatter":{"title":"Kotlin","speaker":["tobias_blaschke"],"poster":{"childImageSharp":{"id":"1a259f6b-01d1-58d9-9813-e4fb56a34153","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d8b808","images":{"fallback":{"src":"/static/7425eb2154d8ac0def6b6a91b1bc7b2d/84817/plakat_2018_04.png","srcSet":"/static/7425eb2154d8ac0def6b6a91b1bc7b2d/0e3b9/plakat_2018_04.png 750w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/e5839/plakat_2018_04.png 1080w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/006ba/plakat_2018_04.png 1366w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/84817/plakat_2018_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/7425eb2154d8ac0def6b6a91b1bc7b2d/ebc34/plakat_2018_04.webp 750w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/0671f/plakat_2018_04.webp 1080w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/659f9/plakat_2018_04.webp 1366w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/e2c0d/plakat_2018_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hält einen Globus in der Hand und platziert eine kleine Fahne an die Stelle der russischen Insel 'Kotlin'. Er trägt eine russische Fell-Mütze"}}},{"node":{"id":"dad0ee9f-ea34-5ce1-b7fe-a0e45b09e845","fields":{"slug":"/talks/2018-03-20-mikro_vs_makroarchitektur/"},"frontmatter":{"title":"Mikro- vs. Makroarchitektur – Spielraum und Spielregeln","speaker":["stefan_zoerner"],"poster":{"childImageSharp":{"id":"96d1873a-e218-5bea-9d77-8dc2e42dbbc6","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#082868","images":{"fallback":{"src":"/static/6067d1db118af9c9218894cda3ecec37/84817/plakat_2018_03.png","srcSet":"/static/6067d1db118af9c9218894cda3ecec37/0e3b9/plakat_2018_03.png 750w,\n/static/6067d1db118af9c9218894cda3ecec37/e5839/plakat_2018_03.png 1080w,\n/static/6067d1db118af9c9218894cda3ecec37/006ba/plakat_2018_03.png 1366w,\n/static/6067d1db118af9c9218894cda3ecec37/84817/plakat_2018_03.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/6067d1db118af9c9218894cda3ecec37/ebc34/plakat_2018_03.webp 750w,\n/static/6067d1db118af9c9218894cda3ecec37/0671f/plakat_2018_03.webp 1080w,\n/static/6067d1db118af9c9218894cda3ecec37/659f9/plakat_2018_03.webp 1366w,\n/static/6067d1db118af9c9218894cda3ecec37/e2c0d/plakat_2018_03.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen freut sich und hält einen Bauplan in der Hand."}}},{"node":{"id":"67f5c805-4443-51af-9f87-0a9aff577dce","fields":{"slug":"/talks/2018-02-28-java_auf_sap_cloud/"},"frontmatter":{"title":"Entwicklung von Java Applikationen auf der SAP Cloud Platform","speaker":["jens_leuschner","mariusz_zienkiewicz"],"poster":{"childImageSharp":{"id":"65d7329c-3fb6-5a77-8b25-3984a599f9e8","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#78b8b8","images":{"fallback":{"src":"/static/55c9a31f3c453bcd2592f54f307655df/84817/plakat_2018_02.png","srcSet":"/static/55c9a31f3c453bcd2592f54f307655df/0e3b9/plakat_2018_02.png 750w,\n/static/55c9a31f3c453bcd2592f54f307655df/e5839/plakat_2018_02.png 1080w,\n/static/55c9a31f3c453bcd2592f54f307655df/006ba/plakat_2018_02.png 1366w,\n/static/55c9a31f3c453bcd2592f54f307655df/84817/plakat_2018_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/55c9a31f3c453bcd2592f54f307655df/ebc34/plakat_2018_02.webp 750w,\n/static/55c9a31f3c453bcd2592f54f307655df/0671f/plakat_2018_02.webp 1080w,\n/static/55c9a31f3c453bcd2592f54f307655df/659f9/plakat_2018_02.webp 1366w,\n/static/55c9a31f3c453bcd2592f54f307655df/e2c0d/plakat_2018_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hält einige kleine Programm-Fenster in der Hand. Er hebt die Programme in eine Wolke, die sich hinter ihm befindet. Die Wolke sieht aus wie das Cloud-Symbol."}}},{"node":{"id":"259289d0-862c-5044-bdb1-38c8d853780d","fields":{"slug":"/talks/2018-01-31-system_of_systems/"},"frontmatter":{"title":"Refactoring to a System of Systems","speaker":["oliver_drotbohm"],"poster":{"childImageSharp":{"id":"9685adbf-d27b-5f98-934a-54d7dc3fcdb8","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#383898","images":{"fallback":{"src":"/static/88afeee4b9b4d069f5896633d252a8d6/242cd/plakat_2018_01.png","srcSet":"/static/88afeee4b9b4d069f5896633d252a8d6/0e3b9/plakat_2018_01.png 750w,\n/static/88afeee4b9b4d069f5896633d252a8d6/e5839/plakat_2018_01.png 1080w,\n/static/88afeee4b9b4d069f5896633d252a8d6/242cd/plakat_2018_01.png 1241w","sizes":"100vw"},"sources":[{"srcSet":"/static/88afeee4b9b4d069f5896633d252a8d6/ebc34/plakat_2018_01.webp 750w,\n/static/88afeee4b9b4d069f5896633d252a8d6/0671f/plakat_2018_01.webp 1080w,\n/static/88afeee4b9b4d069f5896633d252a8d6/cbc2f/plakat_2018_01.webp 1241w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4141821112006447}}},"poster_alt":"Poster: Wir sehen Jürgen über die Schulter, wie er einen Bauplan in der Hand hält und mit einer Schere in kleinere Stücke zerschneidet."}}},{"node":{"id":"92f30cfa-20d5-5aba-8db4-e6e1de091225","fields":{"slug":"/talks/2017-11-29-neo4j/"},"frontmatter":{"title":"Neo4j: Panama Papers","speaker":["michael_hunger"],"poster":{"childImageSharp":{"id":"0d8148d9-9587-5da3-aaf0-f92c5603d344","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#587828","images":{"fallback":{"src":"/static/b722dd1b2e5bde00c9706fb3bb19bd30/84817/plakat_2017_11.png","srcSet":"/static/b722dd1b2e5bde00c9706fb3bb19bd30/0e3b9/plakat_2017_11.png 750w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/e5839/plakat_2017_11.png 1080w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/006ba/plakat_2017_11.png 1366w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/84817/plakat_2017_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/b722dd1b2e5bde00c9706fb3bb19bd30/ebc34/plakat_2017_11.webp 750w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/0671f/plakat_2017_11.webp 1080w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/659f9/plakat_2017_11.webp 1366w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/e2c0d/plakat_2017_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt im Sessel mit seiner Lesebrille und liest ein Buch. Auf dem Buch ist der Neo4J-Schriftzug zu lesen und darunter der Titel 'Graf Datenbankula' als Anspielung auf Graf Drakula. Entsprechend sieht man bei Jurgen spitze Schneidezähne, wie bei einem Vampir."}}},{"node":{"id":"fd607630-d7dd-503a-8da0-25a963df4df3","fields":{"slug":"/talks/2017-10-25-serverless/"},"frontmatter":{"title":"Serverless Application - Who the heck needs a Server?","speaker":["lars_roewekamp"],"poster":{"childImageSharp":{"id":"754076b2-57c3-5796-89f2-711200e78c58","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#389858","images":{"fallback":{"src":"/static/2d68f12104a5e2d317ff8ac24a6467cc/b2ce9/plakat_2017_10.png","srcSet":"/static/2d68f12104a5e2d317ff8ac24a6467cc/b2ce9/plakat_2017_10.png 661w","sizes":"100vw"},"sources":[{"srcSet":"/static/2d68f12104a5e2d317ff8ac24a6467cc/fa5c8/plakat_2017_10.webp 661w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145234493192134}}},"poster_alt":"Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand."}}},{"node":{"id":"29eb8b61-615f-5f82-afc0-25abdc540af7","fields":{"slug":"/talks/2017-08-30-alexa/"},"frontmatter":{"title":"Spracherkennung mit Amazon Alexa","speaker":["andre_tepper","maik_wagner"],"poster":null,"poster_alt":null}}},{"node":{"id":"5992b283-78cd-5625-9878-de0f4300018d","fields":{"slug":"/posts/2017-07-21-grillen/"},"frontmatter":{"title":"JUG Sommerpause: Grillen","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"935f30df-c07e-5cfa-9188-3564b4e0fab7","fields":{"slug":"/talks/2017-05-31-react/"},"frontmatter":{"title":"React und React-Native: Functional UI Development für Browser und mobile Endgeräte","speaker":["manuel_mauky"],"poster":{"childImageSharp":{"id":"6b8717ce-a995-58f6-82e5-62fb5ef3cca9","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#58c8d8","images":{"fallback":{"src":"/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/a2ae3/plakat_2017_05.png","srcSet":"/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/f1722/plakat_2017_05.png 750w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/3e58d/plakat_2017_05.png 1080w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/8b6fa/plakat_2017_05.png 1366w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/a2ae3/plakat_2017_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/55786/plakat_2017_05.webp 750w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/8631a/plakat_2017_05.webp 1080w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/9b1f9/plakat_2017_05.webp 1366w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/fc882/plakat_2017_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4119791666666668}}},"poster_alt":"Poster: Jürgen hält einen Kasten in der Hand, welcher oben und unten Trichter-Öffnungen besitzt. In den oberen Trichter gibt er zwei Dokumente hinein, während beim unteren Trichter das Bild einer Webseite herausfällt. Auf der Box ist das Logo von React zu sehen."}}},{"node":{"id":"9ba71f6c-f0dd-5c4e-b70f-3d7ac1ec19ca","fields":{"slug":"/talks/2017-04-26-jdk9/"},"frontmatter":{"title":"JDK 9","speaker":["wolfgang_weigend"],"poster":{"childImageSharp":{"id":"2573407c-9387-55d4-81ac-f02dffdbfe14","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#38a838","images":{"fallback":{"src":"/static/68885bd1bc71b7c02926be143e289b72/84817/plakat_2017_04.png","srcSet":"/static/68885bd1bc71b7c02926be143e289b72/0e3b9/plakat_2017_04.png 750w,\n/static/68885bd1bc71b7c02926be143e289b72/e5839/plakat_2017_04.png 1080w,\n/static/68885bd1bc71b7c02926be143e289b72/006ba/plakat_2017_04.png 1366w,\n/static/68885bd1bc71b7c02926be143e289b72/84817/plakat_2017_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/68885bd1bc71b7c02926be143e289b72/ebc34/plakat_2017_04.webp 750w,\n/static/68885bd1bc71b7c02926be143e289b72/0671f/plakat_2017_04.webp 1080w,\n/static/68885bd1bc71b7c02926be143e289b72/659f9/plakat_2017_04.webp 1366w,\n/static/68885bd1bc71b7c02926be143e289b72/e2c0d/plakat_2017_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt am Tisch vor einem Puzzle. Er überlegt, wo er das nächste Puzzle-Teil einsetzen soll. Man erkennt bereits, dass das Puzzle ein Java-Duke darstellt, das Maskottchen von Java."}}},{"node":{"id":"d7528a15-3b10-587c-9543-5c372945763a","fields":{"slug":"/talks/2017-03-22-angular/"},"frontmatter":{"title":"Angular 2 für Java Entwickler","speaker":["sven_hoffmann"],"poster":{"childImageSharp":{"id":"eddd4dc5-4156-509b-bf5c-e09b0c5c330e","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#084858","images":{"fallback":{"src":"/static/402904640aadf345c0f4e136c31ec42a/84817/plakat_2017_03.png","srcSet":"/static/402904640aadf345c0f4e136c31ec42a/0e3b9/plakat_2017_03.png 750w,\n/static/402904640aadf345c0f4e136c31ec42a/e5839/plakat_2017_03.png 1080w,\n/static/402904640aadf345c0f4e136c31ec42a/006ba/plakat_2017_03.png 1366w,\n/static/402904640aadf345c0f4e136c31ec42a/84817/plakat_2017_03.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/402904640aadf345c0f4e136c31ec42a/ebc34/plakat_2017_03.webp 750w,\n/static/402904640aadf345c0f4e136c31ec42a/0671f/plakat_2017_03.webp 1080w,\n/static/402904640aadf345c0f4e136c31ec42a/659f9/plakat_2017_03.webp 1366w,\n/static/402904640aadf345c0f4e136c31ec42a/e2c0d/plakat_2017_03.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen schaut ernst. Er trägt ein Schwert in der Hand und ein Schild mit dem einem großen A darauf. Das Schild ist eine Referenz auf das Angular-Logo, welches ebenfalls wie ein Schild aussieht."}}},{"node":{"id":"f009504d-3327-52e9-8948-6cd4d3ba952e","fields":{"slug":"/talks/2017-02-22-css/"},"frontmatter":{"title":"CSS, Aha-Effekte und Perspektiven","speaker":["uwe_manteuffel"],"poster":{"childImageSharp":{"id":"f98f07d3-05f0-5b44-a8c4-f59df52e978d","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#087868","images":{"fallback":{"src":"/static/17a163b60d0c34cbe1f0cc72f8380225/84817/plakat_2017_02.png","srcSet":"/static/17a163b60d0c34cbe1f0cc72f8380225/0e3b9/plakat_2017_02.png 750w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/e5839/plakat_2017_02.png 1080w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/006ba/plakat_2017_02.png 1366w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/84817/plakat_2017_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/17a163b60d0c34cbe1f0cc72f8380225/ebc34/plakat_2017_02.webp 750w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/0671f/plakat_2017_02.webp 1080w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/659f9/plakat_2017_02.webp 1366w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/e2c0d/plakat_2017_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt eine Künstler-Mütze zu seinem Anzug. In der Hand hält er eine Maler-Palette und einen Pinsel."}}},{"node":{"id":"cf0f1947-1449-5df5-b546-aa31d25046a7","fields":{"slug":"/talks/2017-01-25-junit5/"},"frontmatter":{"title":"JUnit 5","speaker":["stefan_bley"],"poster":{"childImageSharp":{"id":"389f1a05-558e-58a8-a8f2-8f0f783fbb5f","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#3868c8","images":{"fallback":{"src":"/static/c46109cdd380f6d96989746b9b268b59/84817/plakat_2017_01.png","srcSet":"/static/c46109cdd380f6d96989746b9b268b59/0e3b9/plakat_2017_01.png 750w,\n/static/c46109cdd380f6d96989746b9b268b59/e5839/plakat_2017_01.png 1080w,\n/static/c46109cdd380f6d96989746b9b268b59/006ba/plakat_2017_01.png 1366w,\n/static/c46109cdd380f6d96989746b9b268b59/84817/plakat_2017_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/c46109cdd380f6d96989746b9b268b59/ebc34/plakat_2017_01.webp 750w,\n/static/c46109cdd380f6d96989746b9b268b59/0671f/plakat_2017_01.webp 1080w,\n/static/c46109cdd380f6d96989746b9b268b59/659f9/plakat_2017_01.webp 1366w,\n/static/c46109cdd380f6d96989746b9b268b59/e2c0d/plakat_2017_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt einen roten Bauarbeiter-Helm zu seinem Anzug. In der Hand hält er ein Klemmbrett mit dem Logo von JUnit 5 darauf"}}},{"node":{"id":"c67796c2-6477-5658-a163-1de4870f548e","fields":{"slug":"/talks/2016-11-30-inside_jvm/"},"frontmatter":{"title":"Inside JVM","speaker":["michael_wiedeking"],"poster":{"childImageSharp":{"id":"d5ac0466-71cb-5950-ad4c-692645dec780","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#185818","images":{"fallback":{"src":"/static/df12c15a6674e50adc8ef8427b49c6e7/84817/plakat_2016_11.png","srcSet":"/static/df12c15a6674e50adc8ef8427b49c6e7/0e3b9/plakat_2016_11.png 750w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/e5839/plakat_2016_11.png 1080w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/006ba/plakat_2016_11.png 1366w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/84817/plakat_2016_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/df12c15a6674e50adc8ef8427b49c6e7/ebc34/plakat_2016_11.webp 750w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/0671f/plakat_2016_11.webp 1080w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/659f9/plakat_2016_11.webp 1366w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/e2c0d/plakat_2016_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und trägt eine Weihnachtsmütze zu seinem üblichen Anzug. Er hält einen Teller mit Keksen vor sich."}}},{"node":{"id":"a4cfc466-b5f6-5b10-be7e-13c92d3ab2f7","fields":{"slug":"/talks/2016-09-21-kommunikationskultur/"},"frontmatter":{"title":"Kommunikationskultur im Softwareentwicklungsprozess","speaker":["daniel_sernow"],"poster":{"childImageSharp":{"id":"d76f475f-a8c8-5319-96d2-a1474885f516","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#788818","images":{"fallback":{"src":"/static/614b8174b903933ed9c7392c29039be7/b6707/plakat_2016_09.png","srcSet":"/static/614b8174b903933ed9c7392c29039be7/0e3b9/plakat_2016_09.png 750w,\n/static/614b8174b903933ed9c7392c29039be7/7aaf4/plakat_2016_09.png 1080w,\n/static/614b8174b903933ed9c7392c29039be7/006ba/plakat_2016_09.png 1366w,\n/static/614b8174b903933ed9c7392c29039be7/b6707/plakat_2016_09.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/614b8174b903933ed9c7392c29039be7/ebc34/plakat_2016_09.webp 750w,\n/static/614b8174b903933ed9c7392c29039be7/47da9/plakat_2016_09.webp 1080w,\n/static/614b8174b903933ed9c7392c29039be7/659f9/plakat_2016_09.webp 1366w,\n/static/614b8174b903933ed9c7392c29039be7/c86cf/plakat_2016_09.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen benutzt ein uraltes Telefon mit separatem Hörer und Mikrofon. Er hält sich den kabelgebundenen Hörer ans Ohr und hält das Mikrofon vor sich in der Hand"}}},{"node":{"id":"e14cd50a-435a-5855-ae06-c0d1eb30d8af","fields":{"slug":"/talks/2016-07-27-testwerkzeuge_javafx/"},"frontmatter":{"title":"Testwerkzeuge für JavaFX","speaker":["kay_grebenstein"],"poster":null,"poster_alt":null}}},{"node":{"id":"4dc84ec4-23f6-5438-a2e6-b5944dc868c9","fields":{"slug":"/talks/2016-05-25-performance-analyse-inspectit/"},"frontmatter":{"title":"Performance-Analyse mit inspectIT","speaker":["mario_mann"],"poster":{"childImageSharp":{"id":"34708531-529f-5d8b-9a4f-7e69705d60db","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#880818","images":{"fallback":{"src":"/static/db7f178be40d0c331569338538d31bac/5ffd7/plakat_2016_05.png","srcSet":"/static/db7f178be40d0c331569338538d31bac/5ffd7/plakat_2016_05.png 744w","sizes":"100vw"},"sources":[{"srcSet":"/static/db7f178be40d0c331569338538d31bac/874d1/plakat_2016_05.webp 744w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4139784946236558}}},"poster_alt":"Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert."}}},{"node":{"id":"7d996009-4040-5330-a46c-5877cc5668af","fields":{"slug":"/talks/2016-03-30-haskell_frege/"},"frontmatter":{"title":"Haskell und Frege","speaker":["manuel_mauky"],"poster":{"childImageSharp":{"id":"5c9d56a7-72a3-5960-83a9-42dc599be063","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#588888","images":{"fallback":{"src":"/static/64acc764c3779735c4ad382e9f9c0e6e/5ffd7/plakat_2016_03.png","srcSet":"/static/64acc764c3779735c4ad382e9f9c0e6e/5ffd7/plakat_2016_03.png 744w","sizes":"100vw"},"sources":[{"srcSet":"/static/64acc764c3779735c4ad382e9f9c0e6e/874d1/plakat_2016_03.webp 744w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4139784946236558}}},"poster_alt":"Poster: Jürgen sitzt auf einem Sessel und liest ein Buch. Er trägt eine Lese-Brille und schaut konzentriert aus. Auf dem Buch ist das Haskell-Logo, ein Lambda-Symbol, zusehen"}}},{"node":{"id":"79835d68-651b-57a2-8c75-042baeba5b30","fields":{"slug":"/talks/2016-01-27-functional_java/"},"frontmatter":{"title":"Funktionale Programmierung mit Java","speaker":["manuel_mauky","max_wielsch"],"poster":{"childImageSharp":{"id":"627917ce-c50f-59e9-98d8-4897b4f220c5","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d86838","images":{"fallback":{"src":"/static/1c76b19b6896e55dd13bb48cd2313b20/b6707/plakat_2016_01.png","srcSet":"/static/1c76b19b6896e55dd13bb48cd2313b20/0e3b9/plakat_2016_01.png 750w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/7aaf4/plakat_2016_01.png 1080w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/006ba/plakat_2016_01.png 1366w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/b6707/plakat_2016_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/1c76b19b6896e55dd13bb48cd2313b20/ebc34/plakat_2016_01.webp 750w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/47da9/plakat_2016_01.webp 1080w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/659f9/plakat_2016_01.webp 1366w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/c86cf/plakat_2016_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen trägt einen Anzug und grinst. Er hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das griechische Zeichen Lambda zu sehen."}}},{"node":{"id":"43538367-514c-5009-b9eb-0f730f52bfd9","fields":{"slug":"/talks/2015-11-25-javafx-mobile/"},"frontmatter":{"title":"JavaFX auf Mobile","speaker":["stefan_heinze","stefan_barth"],"poster":null,"poster_alt":null}}},{"node":{"id":"eff228ab-8f49-5773-905c-fee144de429f","fields":{"slug":"/talks/2015-09-30-guava/"},"frontmatter":{"title":"Guava","speaker":["steffen_seidler"],"poster":null,"poster_alt":null}}},{"node":{"id":"a3c8bbba-0df8-503b-a702-21589e288614","fields":{"slug":"/talks/2015-07-29-drools/"},"frontmatter":{"title":"Regelbasierte Systeme mit JBoss Drools","speaker":["paul_weinhold"],"poster":null,"poster_alt":null}}},{"node":{"id":"1faa8cf7-10f9-54d5-a480-6d2e44896011","fields":{"slug":"/talks/2015-05-27-advanced-android/"},"frontmatter":{"title":"Fortgeschrittene Android-Entwicklung","speaker":["max_wielsch"],"poster":null,"poster_alt":null}}},{"node":{"id":"d853656a-6dac-5d38-b25a-c241c13cbadb","fields":{"slug":"/talks/2015-03-25-android/"},"frontmatter":{"title":"Einstieg in die Android-App-Entwicklung","speaker":["max_wielsch"],"poster":null,"poster_alt":null}}},{"node":{"id":"d88d92c2-cf39-5768-b424-1b211f08c8e8","fields":{"slug":"/talks/2015-01-28-moskito/"},"frontmatter":{"title":"MoSKito - Monitoring Framework","speaker":["steffen_seidler"],"poster":null,"poster_alt":null}}},{"node":{"id":"2fdb9675-dfcf-55b8-899d-8e6d04242b4a","fields":{"slug":"/talks/2014-12-03-model-view-star/"},"frontmatter":{"title":"Model-View-*: UI-Design-Patterns im Detail","speaker":["manuel_mauky"],"poster":null,"poster_alt":null}}},{"node":{"id":"5840ef2b-08af-57a6-81b0-7a69c1d1beb0","fields":{"slug":"/talks/2014-10-29-infrastructure_as_code/"},"frontmatter":{"title":"Infrastructure as Code","speaker":["bruno_devic"],"poster":null,"poster_alt":null}}},{"node":{"id":"ded25abd-db1f-5b9b-9cd2-8c905bc15ab0","fields":{"slug":"/talks/2014-09-24-solr/"},"frontmatter":{"title":"Solr - Eine Enterprise-Suchmaschine","speaker":["steffen_seidler"],"poster":null,"poster_alt":null}}},{"node":{"id":"bd5b8775-c069-521b-803e-4a62493c8247","fields":{"slug":"/talks/2014-07-30-java8-streams/"},"frontmatter":{"title":"Java8 - Streams und Lambdas","speaker":["paul_weinhold"],"poster":null,"poster_alt":null}}},{"node":{"id":"09dfae71-65f1-52de-81a7-e0746238f502","fields":{"slug":"/talks/2014-05-28-hazelcast/"},"frontmatter":{"title":"Hazelcast - Synchronisation von In-Memory-Daten","speaker":["steffen_seidler"],"poster":null,"poster_alt":null}}},{"node":{"id":"27050ce5-4d13-504b-90e0-8a4c3f2e6514","fields":{"slug":"/talks/2014-04-02-assertj/"},"frontmatter":{"title":"Besser lesbare Unittests mit AssertJ","speaker":["manuel_mauky"],"poster":null,"poster_alt":null}}},{"node":{"id":"f39e922a-28fe-514b-838c-4b89e4ec981e","fields":{"slug":"/talks/2014-01-29-opendip/"},"frontmatter":{"title":"Tool-Integration im Softwareentwicklungsprozess","speaker":["max_wielsch"],"poster":null,"poster_alt":null}}},{"node":{"id":"a8a6dc9d-ed19-56f9-9fd3-8c83531f61d0","fields":{"slug":"/talks/2013-11-27-web-performance/"},"frontmatter":{"title":"Performance-Optimierung im Web","speaker":["maik_wagner"],"poster":null,"poster_alt":null}}},{"node":{"id":"02896017-da1f-5c03-b52f-41790bbfe7e7","fields":{"slug":"/posts/2013-10-30-poster/"},"frontmatter":{"title":"JUG-GR Poster","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"fb329b7c-5599-55bf-85c5-54a1a6b821bb","fields":{"slug":"/talks/2013-10-30-app-design/"},"frontmatter":{"title":"Modernes App-Design am Beispiel von Android","speaker":["max_wielsch"],"poster":null,"poster_alt":null}}},{"node":{"id":"6cde30c0-930e-5a8f-9a80-e0bfc34878a6","fields":{"slug":"/talks/2013-07-31-persona/"},"frontmatter":{"title":"Persona - Werkzeug für die GUI-Entwicklung","speaker":["marlene_knoche"],"poster":null,"poster_alt":null}}},{"node":{"id":"df78a5f7-4e2e-5f4d-83dd-6ad6432ef93e","fields":{"slug":"/talks/2013-05-29-jruby/"},"frontmatter":{"title":"JRuby - Ruby auf der Java VM","speaker":["sebastian_schmeck"],"poster":null,"poster_alt":null}}},{"node":{"id":"a13fb811-969f-5eb3-91f8-c71970bff046","fields":{"slug":"/talks/2013-03-27-nxt_lego/"},"frontmatter":{"title":"Lego NXT-Roboter mit Java programmieren","speaker":["erik_jaehne"],"poster":null,"poster_alt":null}}},{"node":{"id":"90157438-0e03-57ef-870f-701aac0b6210","fields":{"slug":"/talks/2012-11-28-javafx2/"},"frontmatter":{"title":"JavaFX 2","speaker":["alexander_casall","michael_thiele"],"poster":null,"poster_alt":null}}},{"node":{"id":"c044b319-accb-5fca-8339-9f01293583e6","fields":{"slug":"/talks/2012-09-26-bean_validation/"},"frontmatter":{"title":"JSR-303 BeanValidation","speaker":["manuel_mauky"],"poster":null,"poster_alt":null}}},{"node":{"id":"09982d70-f13f-5626-8a14-2d8d92abf724","fields":{"slug":"/talks/2012-07-25-selenium_praxis/"},"frontmatter":{"title":"Selenium/Webdriver in der Praxis","speaker":["maik_wagner"],"poster":null,"poster_alt":null}}},{"node":{"id":"5e4ab94f-157d-5292-864d-57606942e1ff","fields":{"slug":"/talks/2012-06-27-gridgain/"},"frontmatter":{"title":"GridGain - Parallel Computing und Data Grid Anwendungen","speaker":["mario_reichel"],"poster":null,"poster_alt":null}}},{"node":{"id":"88119287-b9a3-5745-bd33-a7735cb39b4b","fields":{"slug":"/talks/2012-05-30-jmonkey-engine3/"},"frontmatter":{"title":"JMonkeyEngine 3 - 3D-Applikationen in Java","speaker":["hans_markwart"],"poster":null,"poster_alt":null}}},{"node":{"id":"fa3c70d9-f376-541d-be0b-ca24e0ac6b89","fields":{"slug":"/talks/2012-04-25-maven/"},"frontmatter":{"title":"Maven","speaker":["thomas_storch"],"poster":null,"poster_alt":null}}},{"node":{"id":"bd3b256f-6609-52bb-9d05-5a57482e4f42","fields":{"slug":"/talks/2012-03-28-webtests/"},"frontmatter":{"title":"Webtests mit Selenium","speaker":["marcus_doering"],"poster":null,"poster_alt":null}}},{"node":{"id":"7881a4dc-ab76-5124-b9b1-dc13c982a250","fields":{"slug":"/talks/2012-02-29-scala_webapps/"},"frontmatter":{"title":"Webentwicklung mit Scala","speaker":["stefan_bradl"],"poster":null,"poster_alt":null}}},{"node":{"id":"67e2091a-15eb-56f9-bb65-586c4b2a809d","fields":{"slug":"/talks/2012-01-25-jsf_cdi_advanced/"},"frontmatter":{"title":"Advanced JSF und CDI","speaker":["manuel_mauky"],"poster":null,"poster_alt":null}}},{"node":{"id":"e3831714-860d-5867-9952-89ecfe8b81dd","fields":{"slug":"/talks/2012-01-01-hibernate/"},"frontmatter":{"title":"JPA - Hibernate","speaker":["marko_modsching"],"poster":null,"poster_alt":null}}},{"node":{"id":"11771522-730a-5373-b0f8-585c9c4f52c1","fields":{"slug":"/talks/2011-11-30-jsf-cdi/"},"frontmatter":{"title":"JavaServer Faces 2 und CDI","speaker":["manuel_mauky"],"poster":null,"poster_alt":null}}},{"node":{"id":"c40cc73f-d2be-5960-b15f-87e4b39429c8","fields":{"slug":"/talks/2011-10-26-android/"},"frontmatter":{"title":"Android","speaker":["max_wielsch"],"poster":null,"poster_alt":null}}},{"node":{"id":"9bcc98b0-826d-5513-b828-008dbf11c915","fields":{"slug":"/talks/2011-09-28-jdom/"},"frontmatter":{"title":"JDOM","speaker":["mark_ziener"],"poster":null,"poster_alt":null}}},{"node":{"id":"6cca53f4-9edd-55ac-a225-75c94aa0dd8b","fields":{"slug":"/talks/2011-09-28-single-sign-on/"},"frontmatter":{"title":"Single Sign-On mit JAAS und JGSS","speaker":["mario_reichel"],"poster":null,"poster_alt":null}}},{"node":{"id":"67828855-f7d8-5d6d-9d90-7c3760bb7705","fields":{"slug":"/talks/2011-08-31-testen/"},"frontmatter":{"title":"Testen - Patterns und Best Practices","speaker":["marko_modsching"],"poster":null,"poster_alt":null}}},{"node":{"id":"603cc23a-9840-5867-b78d-99fbd489d472","fields":{"slug":"/talks/2011-07-27-scala/"},"frontmatter":{"title":"Scala","speaker":["stefan_bradl"],"poster":null,"poster_alt":null}}},{"node":{"id":"4bb73d33-af61-5eac-a5fa-d075fa8660f5","fields":{"slug":"/talks/2011-07-27-testng/"},"frontmatter":{"title":"TestNG","speaker":["marcus_doering"],"poster":null,"poster_alt":null}}},{"node":{"id":"5c110017-4815-5ac0-a4e3-a75e759080ac","fields":{"slug":"/talks/2011-06-29-javaee_jboss/"},"frontmatter":{"title":"JavaEE und JBoss","speaker":["michael_foerster"],"poster":null,"poster_alt":null}}},{"node":{"id":"54c98b64-64a8-515b-a02c-8a54c51dcca1","fields":{"slug":"/talks/2011-05-27-guice/"},"frontmatter":{"title":"Google Guice","speaker":["robert_wirbs"],"poster":null,"poster_alt":null}}},{"node":{"id":"6d1edf0b-d32b-5274-baa2-34c7f27786b8","fields":{"slug":"/talks/2011-04-27-gwt/"},"frontmatter":{"title":"GWT - Google Web Toolkit","speaker":["ingo_koerner"],"poster":null,"poster_alt":null}}},{"node":{"id":"2d5fb6de-57a5-54c0-9485-b2ea5bb67a81","fields":{"slug":"/talks/2011-04-27-osgi_springdm/"},"frontmatter":{"title":"OSGi mit SpringDM","speaker":["manuel_mauky"],"poster":null,"poster_alt":null}}},{"node":{"id":"b0252f0d-2a16-5085-913a-7fb7bf5364a6","fields":{"slug":"/talks/2011-03-22-easymock/"},"frontmatter":{"title":"EasyMock","speaker":["richard_hauswald"],"poster":null,"poster_alt":null}}},{"node":{"id":"c92b2d55-0d33-50f7-a73c-de8f55b7d75e","fields":{"slug":"/talks/2011-03-22-jenkins/"},"frontmatter":{"title":"Jenkins/Hudson","speaker":["stefan_scheumann"],"poster":null,"poster_alt":null}}}]}},"pageContext":{}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-posters-tsx","path":"/posters/","result":{"data":{"talks":{"edges":[{"node":{"id":"4036ceaf-9643-59e0-af12-2faa665cd0d6","fields":{"slug":"/posts/2023-12-01-javaland/"},"frontmatter":{"title":"","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"56c1a59c-f16a-5f43-aa33-412cf06ee342","fields":{"slug":"/talks/2024-04-24-rust2/"},"frontmatter":{"title":"Rust (Teil 2)","speaker":["konstantin_eger"],"poster":null,"poster_alt":null}}},{"node":{"id":"97f4123c-3293-532b-8ea6-6b81b355fd92","fields":{"slug":"/talks/2024-03-20-rust/"},"frontmatter":{"title":"Rust (Teil 1): Einführung in die Sprache","speaker":["manuel_mauky"],"poster":null,"poster_alt":null}}},{"node":{"id":"fafd1d08-20ad-5b94-8837-fc066b152f0d","fields":{"slug":"/talks/2024-02-28-architektur-reviews/"},"frontmatter":{"title":"Schlanke Architektur-Reviews","speaker":["stefan_zoerner_2"],"poster":null,"poster_alt":null}}},{"node":{"id":"cafdb0d7-7218-5608-bd6f-c033864617fe","fields":{"slug":"/talks/2024-01-31-flutter/"},"frontmatter":{"title":"Flutter, der heilige Gral der Cross-Plattform-Entwicklung?!","speaker":["christoph_menzel"],"poster":{"childImageSharp":{"id":"6540f80b-99c8-5564-862b-6fa611e899df","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#c8a858","images":{"fallback":{"src":"/static/1d7a6f48e70fdbaa09372642cdcfc472/84817/plakat_2024_01.png","srcSet":"/static/1d7a6f48e70fdbaa09372642cdcfc472/b8e70/plakat_2024_01.png 750w,\n/static/1d7a6f48e70fdbaa09372642cdcfc472/e5839/plakat_2024_01.png 1080w,\n/static/1d7a6f48e70fdbaa09372642cdcfc472/f51d5/plakat_2024_01.png 1366w,\n/static/1d7a6f48e70fdbaa09372642cdcfc472/84817/plakat_2024_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/1d7a6f48e70fdbaa09372642cdcfc472/e5d6f/plakat_2024_01.webp 750w,\n/static/1d7a6f48e70fdbaa09372642cdcfc472/0671f/plakat_2024_01.webp 1080w,\n/static/1d7a6f48e70fdbaa09372642cdcfc472/7e884/plakat_2024_01.webp 1366w,\n/static/1d7a6f48e70fdbaa09372642cdcfc472/e2c0d/plakat_2024_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt einen Hut und eine Umhängetasche und hat eine Peitsche in der linken Hand. In der rechten Hand hat er einen Gral mit Flügeln, den er begeistert ansieht."}}},{"node":{"id":"e583793f-bcc5-5f78-8931-3357be0f0ba5","fields":{"slug":"/talks/2023-11-29-crac/"},"frontmatter":{"title":"What the CRaC - Superfast JVM startup","speaker":["gerrit_grunwald"],"poster":{"childImageSharp":{"id":"83946b5b-e38c-5b7d-ac9b-81ea660c5ee7","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e85848","images":{"fallback":{"src":"/static/44456e47b4e2d92792552c2d411e2518/84817/plakat_2023_11.png","srcSet":"/static/44456e47b4e2d92792552c2d411e2518/b8e70/plakat_2023_11.png 750w,\n/static/44456e47b4e2d92792552c2d411e2518/e5839/plakat_2023_11.png 1080w,\n/static/44456e47b4e2d92792552c2d411e2518/f51d5/plakat_2023_11.png 1366w,\n/static/44456e47b4e2d92792552c2d411e2518/84817/plakat_2023_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/44456e47b4e2d92792552c2d411e2518/e5d6f/plakat_2023_11.webp 750w,\n/static/44456e47b4e2d92792552c2d411e2518/0671f/plakat_2023_11.webp 1080w,\n/static/44456e47b4e2d92792552c2d411e2518/7e884/plakat_2023_11.webp 1366w,\n/static/44456e47b4e2d92792552c2d411e2518/e2c0d/plakat_2023_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen ist auf einem Fahrrad und hat einen alten Helm mit Fliegerbrille auf. Man sieht, dass er ziemlich schnell fährt."}}},{"node":{"id":"34d30efa-4f03-53e5-8043-fa73d75cbd58","fields":{"slug":"/talks/2023-10-25-aws_cdk_in_action/"},"frontmatter":{"title":"AWS-Infrastruktur mit Java erstellen - CDK in Action","speaker":["pawel_adaszewski","damian_dudziec"],"poster":{"childImageSharp":{"id":"322b1b28-3c01-54d5-88d6-d64abf4078e4","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d89878","images":{"fallback":{"src":"/static/434d9c3e2846cfe979a57d975235808c/84817/plakat_2023_10.png","srcSet":"/static/434d9c3e2846cfe979a57d975235808c/b8e70/plakat_2023_10.png 750w,\n/static/434d9c3e2846cfe979a57d975235808c/e5839/plakat_2023_10.png 1080w,\n/static/434d9c3e2846cfe979a57d975235808c/f51d5/plakat_2023_10.png 1366w,\n/static/434d9c3e2846cfe979a57d975235808c/84817/plakat_2023_10.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/434d9c3e2846cfe979a57d975235808c/e5d6f/plakat_2023_10.webp 750w,\n/static/434d9c3e2846cfe979a57d975235808c/0671f/plakat_2023_10.webp 1080w,\n/static/434d9c3e2846cfe979a57d975235808c/7e884/plakat_2023_10.webp 1366w,\n/static/434d9c3e2846cfe979a57d975235808c/e2c0d/plakat_2023_10.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und grinst verschmitzt Auf der Wolke ist ein Baukran zu sehen. Am Baukran hängt eine kleine Wolke und zusätzlich fliegen noch Wolken umher."}}},{"node":{"id":"4f2a426a-5b98-5f61-8750-46aac0c6c9f3","fields":{"slug":"/talks/2023-09-27-virtual-threads/"},"frontmatter":{"title":"Java 21: Virtuelle Threads","speaker":["patryk_lewandowski"],"poster":{"childImageSharp":{"id":"c6ed33d8-5c5c-5ba5-bf35-c5d30ff717b8","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#289898","images":{"fallback":{"src":"/static/7809ea1a362146b531abece65510447f/84817/plakat_2023_09.png","srcSet":"/static/7809ea1a362146b531abece65510447f/b8e70/plakat_2023_09.png 750w,\n/static/7809ea1a362146b531abece65510447f/e5839/plakat_2023_09.png 1080w,\n/static/7809ea1a362146b531abece65510447f/f51d5/plakat_2023_09.png 1366w,\n/static/7809ea1a362146b531abece65510447f/84817/plakat_2023_09.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/7809ea1a362146b531abece65510447f/e5d6f/plakat_2023_09.webp 750w,\n/static/7809ea1a362146b531abece65510447f/0671f/plakat_2023_09.webp 1080w,\n/static/7809ea1a362146b531abece65510447f/7e884/plakat_2023_09.webp 1366w,\n/static/7809ea1a362146b531abece65510447f/e2c0d/plakat_2023_09.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hat sich in einem virtuellen Faden verheddert und schaut etwas verzweifelt."}}},{"node":{"id":"8a2e331b-0f3c-52b6-823e-852ecfff1ba4","fields":{"slug":"/talks/2023-06-28-graalvm_23/"},"frontmatter":{"title":"GraalVM 23 – Konzepte und Features","speaker":["wolfgang_weigend"],"poster":{"childImageSharp":{"id":"61b0d0a8-fa3a-58b5-b6f0-eef9f3716b60","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#b878a8","images":{"fallback":{"src":"/static/d62e1742243833e9e67ff3a5e8ba41e0/84817/plakat_2023_06.png","srcSet":"/static/d62e1742243833e9e67ff3a5e8ba41e0/b8e70/plakat_2023_06.png 750w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/e5839/plakat_2023_06.png 1080w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/f51d5/plakat_2023_06.png 1366w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/84817/plakat_2023_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/d62e1742243833e9e67ff3a5e8ba41e0/e5d6f/plakat_2023_06.webp 750w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/0671f/plakat_2023_06.webp 1080w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/7e884/plakat_2023_06.webp 1366w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/e2c0d/plakat_2023_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hat ein Prisma in der Hand aus dem ein regenbogenfarbener Lichtstrahl ausdringt. Er schaut erstaunt auf das Prisma."}}},{"node":{"id":"d1758688-b708-5de7-8e59-5646800cc19a","fields":{"slug":"/talks/2023-05-31-accessibility_in_the_wild/"},"frontmatter":{"title":"Accessibility in the Wild","speaker":["daniel_sulyok"],"poster":{"childImageSharp":{"id":"2289c524-859b-5899-a8d7-b9ae17afcad5","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e85888","images":{"fallback":{"src":"/static/4d37935c5d380cb8d64e34d12cbd80d2/84817/plakat_2023_05.png","srcSet":"/static/4d37935c5d380cb8d64e34d12cbd80d2/b8e70/plakat_2023_05.png 750w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/e5839/plakat_2023_05.png 1080w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/f51d5/plakat_2023_05.png 1366w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/84817/plakat_2023_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/4d37935c5d380cb8d64e34d12cbd80d2/e5d6f/plakat_2023_05.webp 750w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/0671f/plakat_2023_05.webp 1080w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/7e884/plakat_2023_05.webp 1366w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/e2c0d/plakat_2023_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hat einen Baseballschläger in den Händen und zerstört damit eine Verkehrsbake."}}},{"node":{"id":"79b0298f-b45a-5707-a02c-37ea990349ee","fields":{"slug":"/talks/2023-04-26-archunit_unit_tests_java_architektur/"},"frontmatter":{"title":"ArchUnit: Unit-Tests für deine Java-Architektur","speaker":["roland_weisleder"],"poster":{"childImageSharp":{"id":"197c670b-992f-54d0-9a49-0aac78c4b5e4","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#58a848","images":{"fallback":{"src":"/static/3783aca0b180d59828528ae2e9f37788/84817/plakat_2023_04.png","srcSet":"/static/3783aca0b180d59828528ae2e9f37788/b8e70/plakat_2023_04.png 750w,\n/static/3783aca0b180d59828528ae2e9f37788/e5839/plakat_2023_04.png 1080w,\n/static/3783aca0b180d59828528ae2e9f37788/f51d5/plakat_2023_04.png 1366w,\n/static/3783aca0b180d59828528ae2e9f37788/84817/plakat_2023_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/3783aca0b180d59828528ae2e9f37788/e5d6f/plakat_2023_04.webp 750w,\n/static/3783aca0b180d59828528ae2e9f37788/0671f/plakat_2023_04.webp 1080w,\n/static/3783aca0b180d59828528ae2e9f37788/7e884/plakat_2023_04.webp 1366w,\n/static/3783aca0b180d59828528ae2e9f37788/e2c0d/plakat_2023_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgens trägt ein grünes Cape und einen Hut mit einer Feder. Er sieht aus wie Robin Hood. In den Händen hat er Pfeil und Bogen parat, am Rücken trägt er einen Köcher mit weiteren Pfeilen."}}},{"node":{"id":"f5233192-6039-5c35-9957-b7023ed9e701","fields":{"slug":"/talks/2023-03-29-spring_fuer_architekturinteressierte_entwickler_innen/"},"frontmatter":{"title":"Spring für architekturinteressierte Entwickler:innen","speaker":["oliver_drotbohm"],"poster":{"childImageSharp":{"id":"ab1c70db-cea4-586b-be81-643ef56fc65a","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8a808","images":{"fallback":{"src":"/static/bd3df371bc1bfedf9acf732740ac6b34/84817/plakat_2023_03.png","srcSet":"/static/bd3df371bc1bfedf9acf732740ac6b34/b8e70/plakat_2023_03.png 750w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/e5839/plakat_2023_03.png 1080w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/f51d5/plakat_2023_03.png 1366w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/84817/plakat_2023_03.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/bd3df371bc1bfedf9acf732740ac6b34/e5d6f/plakat_2023_03.webp 750w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/0671f/plakat_2023_03.webp 1080w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/7e884/plakat_2023_03.webp 1366w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/e2c0d/plakat_2023_03.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgens Kopf ist auf einer Sprungfeder in einer Box, die wie ein Springteufel herausragt."}}},{"node":{"id":"8fa19a6d-7e84-5d43-a513-0644ddb362d6","fields":{"slug":"/talks/2023-02-22-exception_first/"},"frontmatter":{"title":"Exception First – Stabilisiere deinen Code mit mehr Exceptions","speaker":["sergej_tihonov"],"poster":{"childImageSharp":{"id":"85b5c33a-1b3d-5625-8375-408b5c1f84bf","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e88838","images":{"fallback":{"src":"/static/69a227ac221f5d70680e1772e2b66652/84817/plakat_2023_02.png","srcSet":"/static/69a227ac221f5d70680e1772e2b66652/b8e70/plakat_2023_02.png 750w,\n/static/69a227ac221f5d70680e1772e2b66652/e5839/plakat_2023_02.png 1080w,\n/static/69a227ac221f5d70680e1772e2b66652/f51d5/plakat_2023_02.png 1366w,\n/static/69a227ac221f5d70680e1772e2b66652/84817/plakat_2023_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/69a227ac221f5d70680e1772e2b66652/e5d6f/plakat_2023_02.webp 750w,\n/static/69a227ac221f5d70680e1772e2b66652/0671f/plakat_2023_02.webp 1080w,\n/static/69a227ac221f5d70680e1772e2b66652/7e884/plakat_2023_02.webp 1366w,\n/static/69a227ac221f5d70680e1772e2b66652/e2c0d/plakat_2023_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert."}}},{"node":{"id":"5d96ee33-16f6-5b4c-aca8-557c4c24c14e","fields":{"slug":"/talks/2023-01-25-contentlab/"},"frontmatter":{"title":"Content Management neu gedacht mit Contentlab","speaker":["markus_weiland"],"poster":{"childImageSharp":{"id":"86c1c8d2-94ea-5866-bbdb-3ac21398dcc3","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#9868a8","images":{"fallback":{"src":"/static/8f15082e67d772dd339121432ea649d9/84817/plakat_2023_01.png","srcSet":"/static/8f15082e67d772dd339121432ea649d9/b8e70/plakat_2023_01.png 750w,\n/static/8f15082e67d772dd339121432ea649d9/e5839/plakat_2023_01.png 1080w,\n/static/8f15082e67d772dd339121432ea649d9/f51d5/plakat_2023_01.png 1366w,\n/static/8f15082e67d772dd339121432ea649d9/84817/plakat_2023_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/8f15082e67d772dd339121432ea649d9/e5d6f/plakat_2023_01.webp 750w,\n/static/8f15082e67d772dd339121432ea649d9/0671f/plakat_2023_01.webp 1080w,\n/static/8f15082e67d772dd339121432ea649d9/7e884/plakat_2023_01.webp 1366w,\n/static/8f15082e67d772dd339121432ea649d9/e2c0d/plakat_2023_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt einen Laborkittel und eine Schutzbrille. In der Hand trägt er zwei Reagenzgläser. Scheinbar ist bei seinem Experiment etwas explodiert denn über Jürgen und den Gläsern ziehen Rauchschwaden auf, Jürgen ist komplett grau vom Explosionsstaub."}}},{"node":{"id":"a0820bff-9a0d-5989-b837-8f769fcc2ba6","fields":{"slug":"/talks/2022-11-30-iam-keycloak/"},"frontmatter":{"title":"Kundenspezifisches IAM mit Keycloak","speaker":["daniel_fesenmeyer"],"poster":{"childImageSharp":{"id":"0b48a461-1420-5309-b315-926387e3fc44","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/4313899aa2d31ed4b1e24d7d91e8c20a/84817/plakat_2022_11.png","srcSet":"/static/4313899aa2d31ed4b1e24d7d91e8c20a/b8e70/plakat_2022_11.png 750w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/e5839/plakat_2022_11.png 1080w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/f51d5/plakat_2022_11.png 1366w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/84817/plakat_2022_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/4313899aa2d31ed4b1e24d7d91e8c20a/e5d6f/plakat_2022_11.webp 750w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/0671f/plakat_2022_11.webp 1080w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/7e884/plakat_2022_11.webp 1366w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/e2c0d/plakat_2022_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten."}}},{"node":{"id":"2b8e8a71-59c4-53fb-baa2-5b6136f7efe8","fields":{"slug":"/talks/2022-10-12-indistrie_4.0/"},"frontmatter":{"title":"Industrie 4.0? Das JUGt mich!","speaker":["marco_gotthans"],"poster":{"childImageSharp":{"id":"1a0dbc74-dd80-5566-aa7d-5a4aac2ba518","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#28b898","images":{"fallback":{"src":"/static/f522849df2b2b8add5330999b1f5a484/84817/plakat_2022_10.png","srcSet":"/static/f522849df2b2b8add5330999b1f5a484/b8e70/plakat_2022_10.png 750w,\n/static/f522849df2b2b8add5330999b1f5a484/e5839/plakat_2022_10.png 1080w,\n/static/f522849df2b2b8add5330999b1f5a484/f51d5/plakat_2022_10.png 1366w,\n/static/f522849df2b2b8add5330999b1f5a484/84817/plakat_2022_10.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/f522849df2b2b8add5330999b1f5a484/e5d6f/plakat_2022_10.webp 750w,\n/static/f522849df2b2b8add5330999b1f5a484/0671f/plakat_2022_10.webp 1080w,\n/static/f522849df2b2b8add5330999b1f5a484/7e884/plakat_2022_10.webp 1366w,\n/static/f522849df2b2b8add5330999b1f5a484/e2c0d/plakat_2022_10.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und auf der Wolke ist ein Baukran zusehen."}}},{"node":{"id":"2e3945a5-7de9-5188-b447-47134c218967","fields":{"slug":"/talks/2022-06-22-iot-infrastruktur-serverless/"},"frontmatter":{"title":"Hebe deine IoT-Infrastruktur auf das Serverless-Level an","speaker":["pawel_adaszewski"],"poster":{"childImageSharp":{"id":"fff1b9ff-e9ff-5fc3-ac26-c00c71f16bde","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8b838","images":{"fallback":{"src":"/static/16e022022a45fa9f5687edc16e865aec/84817/plakat_2022_06.png","srcSet":"/static/16e022022a45fa9f5687edc16e865aec/b8e70/plakat_2022_06.png 750w,\n/static/16e022022a45fa9f5687edc16e865aec/e5839/plakat_2022_06.png 1080w,\n/static/16e022022a45fa9f5687edc16e865aec/f51d5/plakat_2022_06.png 1366w,\n/static/16e022022a45fa9f5687edc16e865aec/84817/plakat_2022_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/16e022022a45fa9f5687edc16e865aec/e5d6f/plakat_2022_06.webp 750w,\n/static/16e022022a45fa9f5687edc16e865aec/0671f/plakat_2022_06.webp 1080w,\n/static/16e022022a45fa9f5687edc16e865aec/7e884/plakat_2022_06.webp 1366w,\n/static/16e022022a45fa9f5687edc16e865aec/e2c0d/plakat_2022_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen spielt eine Flöte. Hinter ihm sieht man einen Weg auf dem Jürgen gelaufen kommt. Hinter ihm ist ein Smartphone und eine Waschmaschine, jeweils mit Armen, Beinen und Gesicht. Die Gesichter der Geräte sehen aus wie paralysiert und sie halten ihre Arme wie Zombies nach Vorn. Sie folgen Jürgen, so als wäre er der Rattenfänger von Hameln."}}},{"node":{"id":"e11f95ba-4519-56e7-a60e-e066c5379738","fields":{"slug":"/posts/2022-01-07-javaland/"},"frontmatter":{"title":"","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"1249d4ab-1401-5936-92b8-3d6dee7f14bb","fields":{"slug":"/talks/2021-06-30-microstream/"},"frontmatter":{"title":"Ultraschnelle Java In-Memory Datenbank-Anwendungen & Microservices mit MicroStream","speaker":["markus_kett","christian_kuemmel"],"poster":{"childImageSharp":{"id":"1567f34a-c228-511c-a368-2041cf79e3fa","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f85838","images":{"fallback":{"src":"/static/8f427a4552cb3ca64fe96511228f5a57/84817/plakat_2021_06.png","srcSet":"/static/8f427a4552cb3ca64fe96511228f5a57/b8e70/plakat_2021_06.png 750w,\n/static/8f427a4552cb3ca64fe96511228f5a57/e5839/plakat_2021_06.png 1080w,\n/static/8f427a4552cb3ca64fe96511228f5a57/f51d5/plakat_2021_06.png 1366w,\n/static/8f427a4552cb3ca64fe96511228f5a57/84817/plakat_2021_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/8f427a4552cb3ca64fe96511228f5a57/e5d6f/plakat_2021_06.webp 750w,\n/static/8f427a4552cb3ca64fe96511228f5a57/0671f/plakat_2021_06.webp 1080w,\n/static/8f427a4552cb3ca64fe96511228f5a57/7e884/plakat_2021_06.webp 1366w,\n/static/8f427a4552cb3ca64fe96511228f5a57/e2c0d/plakat_2021_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt am Tisch und überlegt. Er spielt Memory und hat gerade eine aufgedeckte Memory-Karte mit dem Java-Duke darauf in der Hand. Auf dem Tisch sind die anderen Karten zugedeckt, bis auf eine offene Karte. Auf dieser ist ein Datenbank-Symbol zu sehen."}}},{"node":{"id":"3c969ad0-d843-57d0-92c4-91340d71851d","fields":{"slug":"/talks/2021-01-27-webcomponents/"},"frontmatter":{"title":"Web Components","speaker":["manuel_mauky"],"poster":{"childImageSharp":{"id":"9bba5bef-9d0e-50c8-b451-ffed64ad6bd4","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#981848","images":{"fallback":{"src":"/static/540abccd98049d14ae192d2ada3cbcc3/84817/plakat_2021_01.png","srcSet":"/static/540abccd98049d14ae192d2ada3cbcc3/b8e70/plakat_2021_01.png 750w,\n/static/540abccd98049d14ae192d2ada3cbcc3/e5839/plakat_2021_01.png 1080w,\n/static/540abccd98049d14ae192d2ada3cbcc3/f51d5/plakat_2021_01.png 1366w,\n/static/540abccd98049d14ae192d2ada3cbcc3/84817/plakat_2021_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/540abccd98049d14ae192d2ada3cbcc3/e5d6f/plakat_2021_01.webp 750w,\n/static/540abccd98049d14ae192d2ada3cbcc3/0671f/plakat_2021_01.webp 1080w,\n/static/540abccd98049d14ae192d2ada3cbcc3/7e884/plakat_2021_01.webp 1366w,\n/static/540abccd98049d14ae192d2ada3cbcc3/e2c0d/plakat_2021_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Wir sehen ein großes Spinnennetz, in dem Jürgen gefangen ist. Er hängt verkehrt herum im Netz und sieht ziemlich erschrocken aus."}}},{"node":{"id":"fee8a0ec-6360-5446-9bb0-9ecbe5695536","fields":{"slug":"/talks/2020-11-25-secure_coding/"},"frontmatter":{"title":"Java Secure Coding in der Praxis","speaker":["nico_foerster"],"poster":{"childImageSharp":{"id":"b5a8cec9-632e-5d2d-acc3-45cfdedb6dfa","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#182838","images":{"fallback":{"src":"/static/c2b6e13c2719de1c7a0da2b790067455/84817/plakat_2020_11.png","srcSet":"/static/c2b6e13c2719de1c7a0da2b790067455/b8e70/plakat_2020_11.png 750w,\n/static/c2b6e13c2719de1c7a0da2b790067455/e5839/plakat_2020_11.png 1080w,\n/static/c2b6e13c2719de1c7a0da2b790067455/f51d5/plakat_2020_11.png 1366w,\n/static/c2b6e13c2719de1c7a0da2b790067455/84817/plakat_2020_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/c2b6e13c2719de1c7a0da2b790067455/e5d6f/plakat_2020_11.webp 750w,\n/static/c2b6e13c2719de1c7a0da2b790067455/0671f/plakat_2020_11.webp 1080w,\n/static/c2b6e13c2719de1c7a0da2b790067455/7e884/plakat_2020_11.webp 1366w,\n/static/c2b6e13c2719de1c7a0da2b790067455/e2c0d/plakat_2020_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt eine schwarze Woll-Mütze und eine schwarze Maske. Er trägt Handschuhe und sieht aus wie ein Einbrecher. Im Hintergrund sieht man eine Wohnungstür, vor der Jürgen kniet. Er hat einen Dietrich in der Hand und versucht gerade, dass Schloß zu knacken. Wir sehen Jürgens Rücken und er schaut zu uns über die Schulter. Seinem Blick zu urteilen, ist er überrascht weil wir ihn beim Einbrechen erwischt haben."}}},{"node":{"id":"0ebf9412-38af-5831-82e8-2b0aa744f924","fields":{"slug":"/talks/2020-07-22-branching_modelle/"},"frontmatter":{"title":"Branching-Modelle","speaker":["hannes_kretschmer"],"poster":{"childImageSharp":{"id":"1908832c-2f77-598f-a24b-2bcdee954b3a","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d86838","images":{"fallback":{"src":"/static/595b224b634a1c6694d94578a61bc06c/84817/plakat_2020_07.png","srcSet":"/static/595b224b634a1c6694d94578a61bc06c/b8e70/plakat_2020_07.png 750w,\n/static/595b224b634a1c6694d94578a61bc06c/e5839/plakat_2020_07.png 1080w,\n/static/595b224b634a1c6694d94578a61bc06c/f51d5/plakat_2020_07.png 1366w,\n/static/595b224b634a1c6694d94578a61bc06c/84817/plakat_2020_07.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/595b224b634a1c6694d94578a61bc06c/e5d6f/plakat_2020_07.webp 750w,\n/static/595b224b634a1c6694d94578a61bc06c/0671f/plakat_2020_07.webp 1080w,\n/static/595b224b634a1c6694d94578a61bc06c/7e884/plakat_2020_07.webp 1366w,\n/static/595b224b634a1c6694d94578a61bc06c/e2c0d/plakat_2020_07.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hat einen Schaffner-Hut auf dem Kopf. Er hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier mit der Überschrift 'Fahrplan' geheftet ist. Unter der Überschrift ist ein Streckenplan mit Verzweigungen angedeutet."}}},{"node":{"id":"92ec8c3c-c428-5ca1-bb98-7b8ebac5cdfb","fields":{"slug":"/talks/2020-04-29-jdk14_graalvm/"},"frontmatter":{"title":"JDK 14 und GraalVM im Java Ökosystem","speaker":["wolfgang_weigend"],"poster":{"childImageSharp":{"id":"59ef0a09-a854-5bc5-a122-2d35ddcf6987","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#486888","images":{"fallback":{"src":"/static/1b5849494114993b21e29316b4af1f35/84817/plakat_2020_04.png","srcSet":"/static/1b5849494114993b21e29316b4af1f35/b8e70/plakat_2020_04.png 750w,\n/static/1b5849494114993b21e29316b4af1f35/e5839/plakat_2020_04.png 1080w,\n/static/1b5849494114993b21e29316b4af1f35/f51d5/plakat_2020_04.png 1366w,\n/static/1b5849494114993b21e29316b4af1f35/84817/plakat_2020_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/1b5849494114993b21e29316b4af1f35/e5d6f/plakat_2020_04.webp 750w,\n/static/1b5849494114993b21e29316b4af1f35/0671f/plakat_2020_04.webp 1080w,\n/static/1b5849494114993b21e29316b4af1f35/7e884/plakat_2020_04.webp 1366w,\n/static/1b5849494114993b21e29316b4af1f35/e2c0d/plakat_2020_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt in seinem Sessel. Er trägt sein übliches Jacket, eine Schlafanzug-Hose und Latschen. Neben dem Sessel sieht man seine üblichen schicken Schnürschuhe herumliegen. Er hat ein Headset aufgesetzt und seinen Laptop im Schoß. Jürgen verfolgt den Vortrag aus dem Home-Office. Auf dem Laptop-Deckel ist eine angebissene Banane zusehen."}}},{"node":{"id":"b4f5ca9b-9c1d-5041-ac18-4e371787ac48","fields":{"slug":"/posts/2020-03-24-corona/"},"frontmatter":{"title":"","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"c7067e06-b5be-50ec-83d2-9ea30dc14640","fields":{"slug":"/talks/2020-01-27-cloud-foundry/"},"frontmatter":{"title":"Innovationsmotor Cloud Foundry!?","speaker":["simon_roloff"],"poster":{"childImageSharp":{"id":"abe046a7-29a3-5710-9b2b-cf4a5ff0c1a2","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#583898","images":{"fallback":{"src":"/static/5ef746b99e05db0762f96d0a28f278da/84817/plakat_2020-01.png","srcSet":"/static/5ef746b99e05db0762f96d0a28f278da/b8e70/plakat_2020-01.png 750w,\n/static/5ef746b99e05db0762f96d0a28f278da/e5839/plakat_2020-01.png 1080w,\n/static/5ef746b99e05db0762f96d0a28f278da/f51d5/plakat_2020-01.png 1366w,\n/static/5ef746b99e05db0762f96d0a28f278da/84817/plakat_2020-01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/5ef746b99e05db0762f96d0a28f278da/e5d6f/plakat_2020-01.webp 750w,\n/static/5ef746b99e05db0762f96d0a28f278da/0671f/plakat_2020-01.webp 1080w,\n/static/5ef746b99e05db0762f96d0a28f278da/7e884/plakat_2020-01.webp 1366w,\n/static/5ef746b99e05db0762f96d0a28f278da/e2c0d/plakat_2020-01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Wir sehen das typische Cloud-Symbol einer Wolke im Vordergrund. Jürgen stützt sich auf die Wolke, so als wäre es ein Kopfkissen. Er stützt seinen Kopf mit einem Arm ab und schaut ein bisschen verträumt. Er wirkt wie in Gedanken versunken."}}},{"node":{"id":"a0f32bfb-f9fa-5c9c-a70d-ffd93be7d859","fields":{"slug":"/talks/2019-11-28-advanced-bdd-tests/"},"frontmatter":{"title":"Advanced BDD Tests","speaker":["maik_wagner"],"poster":{"childImageSharp":{"id":"6f443280-7e6e-5951-ab2a-0815064e81b4","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d86868","images":{"fallback":{"src":"/static/c5e4690e979964e9c44af61d883856f8/b6707/plakat_2019_11.png","srcSet":"/static/c5e4690e979964e9c44af61d883856f8/0e3b9/plakat_2019_11.png 750w,\n/static/c5e4690e979964e9c44af61d883856f8/7aaf4/plakat_2019_11.png 1080w,\n/static/c5e4690e979964e9c44af61d883856f8/006ba/plakat_2019_11.png 1366w,\n/static/c5e4690e979964e9c44af61d883856f8/b6707/plakat_2019_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/c5e4690e979964e9c44af61d883856f8/ebc34/plakat_2019_11.webp 750w,\n/static/c5e4690e979964e9c44af61d883856f8/47da9/plakat_2019_11.webp 1080w,\n/static/c5e4690e979964e9c44af61d883856f8/659f9/plakat_2019_11.webp 1366w,\n/static/c5e4690e979964e9c44af61d883856f8/c86cf/plakat_2019_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier zusehen ist. Auf dem Blatt steht 'Testplan' oben und darunter sind drei Checkboxen mit angedeuteten Textzeilen daneben."}}},{"node":{"id":"1e8e7717-76b0-59ff-b867-620afdfc1cd7","fields":{"slug":"/posts/2019-08-16-grillen/"},"frontmatter":{"title":"JUG Sommerpause: Grillen","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"6895717e-291c-581d-8fef-3b5e73bc8369","fields":{"slug":"/talks/2019-06-26-collection-framework/"},"frontmatter":{"title":"Wie gut kennst Du das Collections Framework?","speaker":["thilo_frotscher"],"poster":{"childImageSharp":{"id":"ecc9b098-2be1-50e1-87d8-48488a256061","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#389838","images":{"fallback":{"src":"/static/359c95f2d624a1b8d7167b6ff2c5340c/b6707/plakat_2019_06.png","srcSet":"/static/359c95f2d624a1b8d7167b6ff2c5340c/0e3b9/plakat_2019_06.png 750w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/7aaf4/plakat_2019_06.png 1080w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/006ba/plakat_2019_06.png 1366w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/b6707/plakat_2019_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/359c95f2d624a1b8d7167b6ff2c5340c/ebc34/plakat_2019_06.webp 750w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/47da9/plakat_2019_06.webp 1080w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/659f9/plakat_2019_06.webp 1366w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/c86cf/plakat_2019_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen trägt eine Sonnenbrille und ein buntes Hemd mit Blumen darauf. Er hält sich die Hand ans Kinn und grinst, so als würde er gerade einen Plan schmieden. An seinem Hemd hängt ein Schild mit der Aufschrift 'Sommer Collection'."}}},{"node":{"id":"a5f7b4d5-03e6-588d-9778-62b4b8c44286","fields":{"slug":"/talks/2019-05-29-oauth/"},"frontmatter":{"title":"OAuth 2.0/OpenIDConnect mit Keycloak","speaker":["denny_israel"],"poster":{"childImageSharp":{"id":"cb4beaed-8514-5a8a-8dfe-7bec12fbdd27","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#386898","images":{"fallback":{"src":"/static/eaf6c5845a5ab5a40e0dd634a7eaed23/b6707/plakat_2019_05.png","srcSet":"/static/eaf6c5845a5ab5a40e0dd634a7eaed23/0e3b9/plakat_2019_05.png 750w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/7aaf4/plakat_2019_05.png 1080w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/006ba/plakat_2019_05.png 1366w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/b6707/plakat_2019_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/eaf6c5845a5ab5a40e0dd634a7eaed23/ebc34/plakat_2019_05.webp 750w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/47da9/plakat_2019_05.webp 1080w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/659f9/plakat_2019_05.webp 1366w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/c86cf/plakat_2019_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten."}}},{"node":{"id":"9a7e9567-b7fe-59cd-90fe-aec93c90f2af","fields":{"slug":"/talks/2019-04-24_jdk_jungle/"},"frontmatter":{"title":"It's a JDK jungle out there - oder wie es mit den neuen Java-Versionen geordnet weitergeht","speaker":["wolfgang_weigend"],"poster":{"childImageSharp":{"id":"e335d1a1-3789-5e42-9670-a3e1c361eadc","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/32de550f9e63747cb85192fa0598ae2c/b6707/plakat_2019_04.png","srcSet":"/static/32de550f9e63747cb85192fa0598ae2c/0e3b9/plakat_2019_04.png 750w,\n/static/32de550f9e63747cb85192fa0598ae2c/7aaf4/plakat_2019_04.png 1080w,\n/static/32de550f9e63747cb85192fa0598ae2c/006ba/plakat_2019_04.png 1366w,\n/static/32de550f9e63747cb85192fa0598ae2c/b6707/plakat_2019_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/32de550f9e63747cb85192fa0598ae2c/ebc34/plakat_2019_04.webp 750w,\n/static/32de550f9e63747cb85192fa0598ae2c/47da9/plakat_2019_04.webp 1080w,\n/static/32de550f9e63747cb85192fa0598ae2c/659f9/plakat_2019_04.webp 1366w,\n/static/32de550f9e63747cb85192fa0598ae2c/c86cf/plakat_2019_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen hält eine Schriftrolle mit offiziellen Siegel in der Hand und liest wie ein mittelalterlicher Herold daraus vor. Wir sehen leider nicht den Text auf der Schriftrolle."}}},{"node":{"id":"dd2fc902-b2b3-5256-b24b-e09f17f45415","fields":{"slug":"/talks/2019-03-27-static-site-generators/"},"frontmatter":{"title":"Static-Site-Generators","speaker":["manuel_mauky"],"poster":{"childImageSharp":{"id":"bffb7b05-0e58-5922-92df-21ce241ccd84","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#a8c868","images":{"fallback":{"src":"/static/a69cadfbb400620dadfb89d178c1c8db/a6b6d/plakat_2019_03.png","srcSet":"/static/a69cadfbb400620dadfb89d178c1c8db/0e3b9/plakat_2019_03.png 750w,\n/static/a69cadfbb400620dadfb89d178c1c8db/7aaf4/plakat_2019_03.png 1080w,\n/static/a69cadfbb400620dadfb89d178c1c8db/a6b6d/plakat_2019_03.png 1240w","sizes":"100vw"},"sources":[{"srcSet":"/static/a69cadfbb400620dadfb89d178c1c8db/ebc34/plakat_2019_03.webp 750w,\n/static/a69cadfbb400620dadfb89d178c1c8db/47da9/plakat_2019_03.webp 1080w,\n/static/a69cadfbb400620dadfb89d178c1c8db/5c55f/plakat_2019_03.webp 1240w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.414516129032258}}},"poster_alt":"Poster: Jürgen hält einen Kasten in der Hand mit jeweils einem Trichter oben und unten. Oben gibt er zwei Dokumente hinein und unten fällt das Bild einer Webseite heraus. Auf dem Kasten ist das Logo von Gatsbyjs zu sehen."}}},{"node":{"id":"f37a3185-cf74-5401-9461-328751a5a63e","fields":{"slug":"/talks/2019-02-27_reflection/"},"frontmatter":{"title":"Java Reflection: Classes behind the scenes","speaker":["erik_jaehne"],"poster":{"childImageSharp":{"id":"b2cb5256-0c61-5e8b-8a34-23f74562f16f","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#78b8b8","images":{"fallback":{"src":"/static/15923e5b77de857597a70091dfe03bd5/84817/plakat_2019_02.png","srcSet":"/static/15923e5b77de857597a70091dfe03bd5/b8e70/plakat_2019_02.png 750w,\n/static/15923e5b77de857597a70091dfe03bd5/e5839/plakat_2019_02.png 1080w,\n/static/15923e5b77de857597a70091dfe03bd5/f51d5/plakat_2019_02.png 1366w,\n/static/15923e5b77de857597a70091dfe03bd5/84817/plakat_2019_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/15923e5b77de857597a70091dfe03bd5/e5d6f/plakat_2019_02.webp 750w,\n/static/15923e5b77de857597a70091dfe03bd5/0671f/plakat_2019_02.webp 1080w,\n/static/15923e5b77de857597a70091dfe03bd5/7e884/plakat_2019_02.webp 1366w,\n/static/15923e5b77de857597a70091dfe03bd5/e2c0d/plakat_2019_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand."}}},{"node":{"id":"6c6f82f3-26da-59ee-a8b6-8c178256b6b7","fields":{"slug":"/talks/2019-01-31_java_apis_missing_manual/"},"frontmatter":{"title":"Java APIs - the missing manual","speaker":["hendrik_ebbers"],"poster":{"childImageSharp":{"id":"8509bc59-0ad5-5d24-87e3-f253d53d68b2","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#3858b8","images":{"fallback":{"src":"/static/8c4759d0cca5ff005992863b4cbbfd0c/84817/plakat_2019_01.png","srcSet":"/static/8c4759d0cca5ff005992863b4cbbfd0c/b8e70/plakat_2019_01.png 750w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/e5839/plakat_2019_01.png 1080w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/f51d5/plakat_2019_01.png 1366w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/84817/plakat_2019_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/8c4759d0cca5ff005992863b4cbbfd0c/e5d6f/plakat_2019_01.webp 750w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/0671f/plakat_2019_01.webp 1080w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/7e884/plakat_2019_01.webp 1366w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/e2c0d/plakat_2019_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt mit seiner Lesebrille in seinem Sessel und liest ein Buch. Auf dem Buchrücken steht 'Javadoc'"}}},{"node":{"id":"2a012a23-7791-512a-af55-7a5d72c7b67d","fields":{"slug":"/posts/2018-12-30-congress-everywhere/"},"frontmatter":{"title":"Congress Everywhere - 35C3@Görlitz","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"f3a5b0e9-0351-58c1-a827-a5f39196ddee","fields":{"slug":"/talks/2018-11-23-monadische_transaktionen/"},"frontmatter":{"title":"Monadische Transaktionen","speaker":["gregor_trefs"],"poster":{"childImageSharp":{"id":"918002c9-e393-5b8d-a2d6-ee73c1735383","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#680838","images":{"fallback":{"src":"/static/d29473cce93e3ade3231fd7ea7b0188e/84817/plakat_2018_11.png","srcSet":"/static/d29473cce93e3ade3231fd7ea7b0188e/b8e70/plakat_2018_11.png 750w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/e5839/plakat_2018_11.png 1080w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/f51d5/plakat_2018_11.png 1366w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/84817/plakat_2018_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/d29473cce93e3ade3231fd7ea7b0188e/e5d6f/plakat_2018_11.webp 750w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/0671f/plakat_2018_11.webp 1080w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/7e884/plakat_2018_11.webp 1366w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/e2c0d/plakat_2018_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und hält ein Tablett in der Hand. Auf dem Tablett steht eine durchsichtige Flasche mit gelber Limo darin. Auf dem Etikett steht 'Li-Monade' geschrieben."}}},{"node":{"id":"fafec1ba-0938-562d-9926-409d1d341c50","fields":{"slug":"/posts/2018-09-26-coding-dojo/"},"frontmatter":{"title":"Vortrag entfällt. Stattdessen Coding-Dojo","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"bb4a6f0c-58fc-590e-9a58-f1ea08fc6cad","fields":{"slug":"/posts/2018-07-31-grillabend/"},"frontmatter":{"title":"JUG Sommerpause: Grillen","speaker":null,"poster":{"childImageSharp":{"id":"f72f3e37-dad2-51b5-9e2a-b6413a70715c","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d88828","images":{"fallback":{"src":"/static/ef0ba78d7c603390b50fd5bee9599b5a/84817/plakat_2017_07.png","srcSet":"/static/ef0ba78d7c603390b50fd5bee9599b5a/b8e70/plakat_2017_07.png 750w,\n/static/ef0ba78d7c603390b50fd5bee9599b5a/e5839/plakat_2017_07.png 1080w,\n/static/ef0ba78d7c603390b50fd5bee9599b5a/f51d5/plakat_2017_07.png 1366w,\n/static/ef0ba78d7c603390b50fd5bee9599b5a/84817/plakat_2017_07.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/ef0ba78d7c603390b50fd5bee9599b5a/e5d6f/plakat_2017_07.webp 750w,\n/static/ef0ba78d7c603390b50fd5bee9599b5a/0671f/plakat_2017_07.webp 1080w,\n/static/ef0ba78d7c603390b50fd5bee9599b5a/7e884/plakat_2017_07.webp 1366w,\n/static/ef0ba78d7c603390b50fd5bee9599b5a/e2c0d/plakat_2017_07.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und hält einen Teller mit Bratwürsten in der Hand"}}},{"node":{"id":"f17a3451-b9a5-5b42-b740-3c15fe9268f5","fields":{"slug":"/talks/2018-06-27-immutable-data/"},"frontmatter":{"title":"Immutable Data - Unveränderliche Daten im Griff","speaker":["manuel_mauky"],"poster":{"childImageSharp":{"id":"314ba704-f1f4-5d2c-8535-b32da028a3c9","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#780838","images":{"fallback":{"src":"/static/1fae33eb72f57d492a22e010e53219f1/84817/plakat_2018_06.png","srcSet":"/static/1fae33eb72f57d492a22e010e53219f1/b8e70/plakat_2018_06.png 750w,\n/static/1fae33eb72f57d492a22e010e53219f1/e5839/plakat_2018_06.png 1080w,\n/static/1fae33eb72f57d492a22e010e53219f1/f51d5/plakat_2018_06.png 1366w,\n/static/1fae33eb72f57d492a22e010e53219f1/84817/plakat_2018_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/1fae33eb72f57d492a22e010e53219f1/e5d6f/plakat_2018_06.webp 750w,\n/static/1fae33eb72f57d492a22e010e53219f1/0671f/plakat_2018_06.webp 1080w,\n/static/1fae33eb72f57d492a22e010e53219f1/7e884/plakat_2018_06.webp 1366w,\n/static/1fae33eb72f57d492a22e010e53219f1/e2c0d/plakat_2018_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen steht vor einem großen Steinblock, der fast aussieht wie ein Grabstein. Auf dem Stein sind lauter Nullen und Einsen eingraviert. Er hält einen Hammer und Meißel in der Hand."}}},{"node":{"id":"bba11502-e73b-5c5e-9ce7-f4102b1daed5","fields":{"slug":"/talks/2018-05-30-graphql/"},"frontmatter":{"title":"GraphQL","speaker":["stephan_strehler"],"poster":{"childImageSharp":{"id":"90e1be0b-07fd-5977-ad85-c716671424c1","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e838a8","images":{"fallback":{"src":"/static/70801d1cf0778b63b022c58e167483bf/84817/plakat_2018_05.png","srcSet":"/static/70801d1cf0778b63b022c58e167483bf/b8e70/plakat_2018_05.png 750w,\n/static/70801d1cf0778b63b022c58e167483bf/e5839/plakat_2018_05.png 1080w,\n/static/70801d1cf0778b63b022c58e167483bf/f51d5/plakat_2018_05.png 1366w,\n/static/70801d1cf0778b63b022c58e167483bf/84817/plakat_2018_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/70801d1cf0778b63b022c58e167483bf/e5d6f/plakat_2018_05.webp 750w,\n/static/70801d1cf0778b63b022c58e167483bf/0671f/plakat_2018_05.webp 1080w,\n/static/70801d1cf0778b63b022c58e167483bf/7e884/plakat_2018_05.webp 1366w,\n/static/70801d1cf0778b63b022c58e167483bf/e2c0d/plakat_2018_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das GraphQL-Logo zu sehen."}}},{"node":{"id":"1b2f3079-33fa-52a7-8f63-17ed40feb17e","fields":{"slug":"/talks/2018-04-25-kotlin/"},"frontmatter":{"title":"Kotlin","speaker":["tobias_blaschke"],"poster":{"childImageSharp":{"id":"1a259f6b-01d1-58d9-9813-e4fb56a34153","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d8b808","images":{"fallback":{"src":"/static/7425eb2154d8ac0def6b6a91b1bc7b2d/84817/plakat_2018_04.png","srcSet":"/static/7425eb2154d8ac0def6b6a91b1bc7b2d/0e3b9/plakat_2018_04.png 750w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/e5839/plakat_2018_04.png 1080w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/006ba/plakat_2018_04.png 1366w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/84817/plakat_2018_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/7425eb2154d8ac0def6b6a91b1bc7b2d/ebc34/plakat_2018_04.webp 750w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/0671f/plakat_2018_04.webp 1080w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/659f9/plakat_2018_04.webp 1366w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/e2c0d/plakat_2018_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hält einen Globus in der Hand und platziert eine kleine Fahne an die Stelle der russischen Insel 'Kotlin'. Er trägt eine russische Fell-Mütze"}}},{"node":{"id":"dad0ee9f-ea34-5ce1-b7fe-a0e45b09e845","fields":{"slug":"/talks/2018-03-20-mikro_vs_makroarchitektur/"},"frontmatter":{"title":"Mikro- vs. Makroarchitektur – Spielraum und Spielregeln","speaker":["stefan_zoerner"],"poster":{"childImageSharp":{"id":"96d1873a-e218-5bea-9d77-8dc2e42dbbc6","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#082868","images":{"fallback":{"src":"/static/6067d1db118af9c9218894cda3ecec37/84817/plakat_2018_03.png","srcSet":"/static/6067d1db118af9c9218894cda3ecec37/0e3b9/plakat_2018_03.png 750w,\n/static/6067d1db118af9c9218894cda3ecec37/e5839/plakat_2018_03.png 1080w,\n/static/6067d1db118af9c9218894cda3ecec37/006ba/plakat_2018_03.png 1366w,\n/static/6067d1db118af9c9218894cda3ecec37/84817/plakat_2018_03.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/6067d1db118af9c9218894cda3ecec37/ebc34/plakat_2018_03.webp 750w,\n/static/6067d1db118af9c9218894cda3ecec37/0671f/plakat_2018_03.webp 1080w,\n/static/6067d1db118af9c9218894cda3ecec37/659f9/plakat_2018_03.webp 1366w,\n/static/6067d1db118af9c9218894cda3ecec37/e2c0d/plakat_2018_03.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen freut sich und hält einen Bauplan in der Hand."}}},{"node":{"id":"67f5c805-4443-51af-9f87-0a9aff577dce","fields":{"slug":"/talks/2018-02-28-java_auf_sap_cloud/"},"frontmatter":{"title":"Entwicklung von Java Applikationen auf der SAP Cloud Platform","speaker":["jens_leuschner","mariusz_zienkiewicz"],"poster":{"childImageSharp":{"id":"65d7329c-3fb6-5a77-8b25-3984a599f9e8","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#78b8b8","images":{"fallback":{"src":"/static/55c9a31f3c453bcd2592f54f307655df/84817/plakat_2018_02.png","srcSet":"/static/55c9a31f3c453bcd2592f54f307655df/0e3b9/plakat_2018_02.png 750w,\n/static/55c9a31f3c453bcd2592f54f307655df/e5839/plakat_2018_02.png 1080w,\n/static/55c9a31f3c453bcd2592f54f307655df/006ba/plakat_2018_02.png 1366w,\n/static/55c9a31f3c453bcd2592f54f307655df/84817/plakat_2018_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/55c9a31f3c453bcd2592f54f307655df/ebc34/plakat_2018_02.webp 750w,\n/static/55c9a31f3c453bcd2592f54f307655df/0671f/plakat_2018_02.webp 1080w,\n/static/55c9a31f3c453bcd2592f54f307655df/659f9/plakat_2018_02.webp 1366w,\n/static/55c9a31f3c453bcd2592f54f307655df/e2c0d/plakat_2018_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hält einige kleine Programm-Fenster in der Hand. Er hebt die Programme in eine Wolke, die sich hinter ihm befindet. Die Wolke sieht aus wie das Cloud-Symbol."}}},{"node":{"id":"259289d0-862c-5044-bdb1-38c8d853780d","fields":{"slug":"/talks/2018-01-31-system_of_systems/"},"frontmatter":{"title":"Refactoring to a System of Systems","speaker":["oliver_drotbohm"],"poster":{"childImageSharp":{"id":"9685adbf-d27b-5f98-934a-54d7dc3fcdb8","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#383898","images":{"fallback":{"src":"/static/88afeee4b9b4d069f5896633d252a8d6/242cd/plakat_2018_01.png","srcSet":"/static/88afeee4b9b4d069f5896633d252a8d6/0e3b9/plakat_2018_01.png 750w,\n/static/88afeee4b9b4d069f5896633d252a8d6/e5839/plakat_2018_01.png 1080w,\n/static/88afeee4b9b4d069f5896633d252a8d6/242cd/plakat_2018_01.png 1241w","sizes":"100vw"},"sources":[{"srcSet":"/static/88afeee4b9b4d069f5896633d252a8d6/ebc34/plakat_2018_01.webp 750w,\n/static/88afeee4b9b4d069f5896633d252a8d6/0671f/plakat_2018_01.webp 1080w,\n/static/88afeee4b9b4d069f5896633d252a8d6/cbc2f/plakat_2018_01.webp 1241w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4141821112006447}}},"poster_alt":"Poster: Wir sehen Jürgen über die Schulter, wie er einen Bauplan in der Hand hält und mit einer Schere in kleinere Stücke zerschneidet."}}},{"node":{"id":"92f30cfa-20d5-5aba-8db4-e6e1de091225","fields":{"slug":"/talks/2017-11-29-neo4j/"},"frontmatter":{"title":"Neo4j: Panama Papers","speaker":["michael_hunger"],"poster":{"childImageSharp":{"id":"0d8148d9-9587-5da3-aaf0-f92c5603d344","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#587828","images":{"fallback":{"src":"/static/b722dd1b2e5bde00c9706fb3bb19bd30/84817/plakat_2017_11.png","srcSet":"/static/b722dd1b2e5bde00c9706fb3bb19bd30/0e3b9/plakat_2017_11.png 750w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/e5839/plakat_2017_11.png 1080w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/006ba/plakat_2017_11.png 1366w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/84817/plakat_2017_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/b722dd1b2e5bde00c9706fb3bb19bd30/ebc34/plakat_2017_11.webp 750w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/0671f/plakat_2017_11.webp 1080w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/659f9/plakat_2017_11.webp 1366w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/e2c0d/plakat_2017_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt im Sessel mit seiner Lesebrille und liest ein Buch. Auf dem Buch ist der Neo4J-Schriftzug zu lesen und darunter der Titel 'Graf Datenbankula' als Anspielung auf Graf Drakula. Entsprechend sieht man bei Jurgen spitze Schneidezähne, wie bei einem Vampir."}}},{"node":{"id":"fd607630-d7dd-503a-8da0-25a963df4df3","fields":{"slug":"/talks/2017-10-25-serverless/"},"frontmatter":{"title":"Serverless Application - Who the heck needs a Server?","speaker":["lars_roewekamp"],"poster":{"childImageSharp":{"id":"754076b2-57c3-5796-89f2-711200e78c58","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#389858","images":{"fallback":{"src":"/static/2d68f12104a5e2d317ff8ac24a6467cc/b2ce9/plakat_2017_10.png","srcSet":"/static/2d68f12104a5e2d317ff8ac24a6467cc/b2ce9/plakat_2017_10.png 661w","sizes":"100vw"},"sources":[{"srcSet":"/static/2d68f12104a5e2d317ff8ac24a6467cc/fa5c8/plakat_2017_10.webp 661w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145234493192134}}},"poster_alt":"Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand."}}},{"node":{"id":"29eb8b61-615f-5f82-afc0-25abdc540af7","fields":{"slug":"/talks/2017-08-30-alexa/"},"frontmatter":{"title":"Spracherkennung mit Amazon Alexa","speaker":["andre_tepper","maik_wagner"],"poster":null,"poster_alt":null}}},{"node":{"id":"5992b283-78cd-5625-9878-de0f4300018d","fields":{"slug":"/posts/2017-07-21-grillen/"},"frontmatter":{"title":"JUG Sommerpause: Grillen","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"935f30df-c07e-5cfa-9188-3564b4e0fab7","fields":{"slug":"/talks/2017-05-31-react/"},"frontmatter":{"title":"React und React-Native: Functional UI Development für Browser und mobile Endgeräte","speaker":["manuel_mauky"],"poster":{"childImageSharp":{"id":"6b8717ce-a995-58f6-82e5-62fb5ef3cca9","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#58c8d8","images":{"fallback":{"src":"/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/a2ae3/plakat_2017_05.png","srcSet":"/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/f1722/plakat_2017_05.png 750w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/3e58d/plakat_2017_05.png 1080w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/8b6fa/plakat_2017_05.png 1366w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/a2ae3/plakat_2017_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/55786/plakat_2017_05.webp 750w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/8631a/plakat_2017_05.webp 1080w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/9b1f9/plakat_2017_05.webp 1366w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/fc882/plakat_2017_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4119791666666668}}},"poster_alt":"Poster: Jürgen hält einen Kasten in der Hand, welcher oben und unten Trichter-Öffnungen besitzt. In den oberen Trichter gibt er zwei Dokumente hinein, während beim unteren Trichter das Bild einer Webseite herausfällt. Auf der Box ist das Logo von React zu sehen."}}},{"node":{"id":"9ba71f6c-f0dd-5c4e-b70f-3d7ac1ec19ca","fields":{"slug":"/talks/2017-04-26-jdk9/"},"frontmatter":{"title":"JDK 9","speaker":["wolfgang_weigend"],"poster":{"childImageSharp":{"id":"2573407c-9387-55d4-81ac-f02dffdbfe14","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#38a838","images":{"fallback":{"src":"/static/68885bd1bc71b7c02926be143e289b72/84817/plakat_2017_04.png","srcSet":"/static/68885bd1bc71b7c02926be143e289b72/0e3b9/plakat_2017_04.png 750w,\n/static/68885bd1bc71b7c02926be143e289b72/e5839/plakat_2017_04.png 1080w,\n/static/68885bd1bc71b7c02926be143e289b72/006ba/plakat_2017_04.png 1366w,\n/static/68885bd1bc71b7c02926be143e289b72/84817/plakat_2017_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/68885bd1bc71b7c02926be143e289b72/ebc34/plakat_2017_04.webp 750w,\n/static/68885bd1bc71b7c02926be143e289b72/0671f/plakat_2017_04.webp 1080w,\n/static/68885bd1bc71b7c02926be143e289b72/659f9/plakat_2017_04.webp 1366w,\n/static/68885bd1bc71b7c02926be143e289b72/e2c0d/plakat_2017_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt am Tisch vor einem Puzzle. Er überlegt, wo er das nächste Puzzle-Teil einsetzen soll. Man erkennt bereits, dass das Puzzle ein Java-Duke darstellt, das Maskottchen von Java."}}},{"node":{"id":"d7528a15-3b10-587c-9543-5c372945763a","fields":{"slug":"/talks/2017-03-22-angular/"},"frontmatter":{"title":"Angular 2 für Java Entwickler","speaker":["sven_hoffmann"],"poster":{"childImageSharp":{"id":"eddd4dc5-4156-509b-bf5c-e09b0c5c330e","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#084858","images":{"fallback":{"src":"/static/402904640aadf345c0f4e136c31ec42a/84817/plakat_2017_03.png","srcSet":"/static/402904640aadf345c0f4e136c31ec42a/0e3b9/plakat_2017_03.png 750w,\n/static/402904640aadf345c0f4e136c31ec42a/e5839/plakat_2017_03.png 1080w,\n/static/402904640aadf345c0f4e136c31ec42a/006ba/plakat_2017_03.png 1366w,\n/static/402904640aadf345c0f4e136c31ec42a/84817/plakat_2017_03.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/402904640aadf345c0f4e136c31ec42a/ebc34/plakat_2017_03.webp 750w,\n/static/402904640aadf345c0f4e136c31ec42a/0671f/plakat_2017_03.webp 1080w,\n/static/402904640aadf345c0f4e136c31ec42a/659f9/plakat_2017_03.webp 1366w,\n/static/402904640aadf345c0f4e136c31ec42a/e2c0d/plakat_2017_03.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen schaut ernst. Er trägt ein Schwert in der Hand und ein Schild mit dem einem großen A darauf. Das Schild ist eine Referenz auf das Angular-Logo, welches ebenfalls wie ein Schild aussieht."}}},{"node":{"id":"f009504d-3327-52e9-8948-6cd4d3ba952e","fields":{"slug":"/talks/2017-02-22-css/"},"frontmatter":{"title":"CSS, Aha-Effekte und Perspektiven","speaker":["uwe_manteuffel"],"poster":{"childImageSharp":{"id":"f98f07d3-05f0-5b44-a8c4-f59df52e978d","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#087868","images":{"fallback":{"src":"/static/17a163b60d0c34cbe1f0cc72f8380225/84817/plakat_2017_02.png","srcSet":"/static/17a163b60d0c34cbe1f0cc72f8380225/0e3b9/plakat_2017_02.png 750w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/e5839/plakat_2017_02.png 1080w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/006ba/plakat_2017_02.png 1366w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/84817/plakat_2017_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/17a163b60d0c34cbe1f0cc72f8380225/ebc34/plakat_2017_02.webp 750w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/0671f/plakat_2017_02.webp 1080w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/659f9/plakat_2017_02.webp 1366w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/e2c0d/plakat_2017_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt eine Künstler-Mütze zu seinem Anzug. In der Hand hält er eine Maler-Palette und einen Pinsel."}}},{"node":{"id":"cf0f1947-1449-5df5-b546-aa31d25046a7","fields":{"slug":"/talks/2017-01-25-junit5/"},"frontmatter":{"title":"JUnit 5","speaker":["stefan_bley"],"poster":{"childImageSharp":{"id":"389f1a05-558e-58a8-a8f2-8f0f783fbb5f","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#3868c8","images":{"fallback":{"src":"/static/c46109cdd380f6d96989746b9b268b59/84817/plakat_2017_01.png","srcSet":"/static/c46109cdd380f6d96989746b9b268b59/0e3b9/plakat_2017_01.png 750w,\n/static/c46109cdd380f6d96989746b9b268b59/e5839/plakat_2017_01.png 1080w,\n/static/c46109cdd380f6d96989746b9b268b59/006ba/plakat_2017_01.png 1366w,\n/static/c46109cdd380f6d96989746b9b268b59/84817/plakat_2017_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/c46109cdd380f6d96989746b9b268b59/ebc34/plakat_2017_01.webp 750w,\n/static/c46109cdd380f6d96989746b9b268b59/0671f/plakat_2017_01.webp 1080w,\n/static/c46109cdd380f6d96989746b9b268b59/659f9/plakat_2017_01.webp 1366w,\n/static/c46109cdd380f6d96989746b9b268b59/e2c0d/plakat_2017_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt einen roten Bauarbeiter-Helm zu seinem Anzug. In der Hand hält er ein Klemmbrett mit dem Logo von JUnit 5 darauf"}}},{"node":{"id":"c67796c2-6477-5658-a163-1de4870f548e","fields":{"slug":"/talks/2016-11-30-inside_jvm/"},"frontmatter":{"title":"Inside JVM","speaker":["michael_wiedeking"],"poster":{"childImageSharp":{"id":"d5ac0466-71cb-5950-ad4c-692645dec780","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#185818","images":{"fallback":{"src":"/static/df12c15a6674e50adc8ef8427b49c6e7/84817/plakat_2016_11.png","srcSet":"/static/df12c15a6674e50adc8ef8427b49c6e7/0e3b9/plakat_2016_11.png 750w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/e5839/plakat_2016_11.png 1080w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/006ba/plakat_2016_11.png 1366w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/84817/plakat_2016_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/df12c15a6674e50adc8ef8427b49c6e7/ebc34/plakat_2016_11.webp 750w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/0671f/plakat_2016_11.webp 1080w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/659f9/plakat_2016_11.webp 1366w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/e2c0d/plakat_2016_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und trägt eine Weihnachtsmütze zu seinem üblichen Anzug. Er hält einen Teller mit Keksen vor sich."}}},{"node":{"id":"a4cfc466-b5f6-5b10-be7e-13c92d3ab2f7","fields":{"slug":"/talks/2016-09-21-kommunikationskultur/"},"frontmatter":{"title":"Kommunikationskultur im Softwareentwicklungsprozess","speaker":["daniel_sernow"],"poster":{"childImageSharp":{"id":"d76f475f-a8c8-5319-96d2-a1474885f516","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#788818","images":{"fallback":{"src":"/static/614b8174b903933ed9c7392c29039be7/b6707/plakat_2016_09.png","srcSet":"/static/614b8174b903933ed9c7392c29039be7/0e3b9/plakat_2016_09.png 750w,\n/static/614b8174b903933ed9c7392c29039be7/7aaf4/plakat_2016_09.png 1080w,\n/static/614b8174b903933ed9c7392c29039be7/006ba/plakat_2016_09.png 1366w,\n/static/614b8174b903933ed9c7392c29039be7/b6707/plakat_2016_09.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/614b8174b903933ed9c7392c29039be7/ebc34/plakat_2016_09.webp 750w,\n/static/614b8174b903933ed9c7392c29039be7/47da9/plakat_2016_09.webp 1080w,\n/static/614b8174b903933ed9c7392c29039be7/659f9/plakat_2016_09.webp 1366w,\n/static/614b8174b903933ed9c7392c29039be7/c86cf/plakat_2016_09.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen benutzt ein uraltes Telefon mit separatem Hörer und Mikrofon. Er hält sich den kabelgebundenen Hörer ans Ohr und hält das Mikrofon vor sich in der Hand"}}},{"node":{"id":"e14cd50a-435a-5855-ae06-c0d1eb30d8af","fields":{"slug":"/talks/2016-07-27-testwerkzeuge_javafx/"},"frontmatter":{"title":"Testwerkzeuge für JavaFX","speaker":["kay_grebenstein"],"poster":null,"poster_alt":null}}},{"node":{"id":"4dc84ec4-23f6-5438-a2e6-b5944dc868c9","fields":{"slug":"/talks/2016-05-25-performance-analyse-inspectit/"},"frontmatter":{"title":"Performance-Analyse mit inspectIT","speaker":["mario_mann"],"poster":{"childImageSharp":{"id":"34708531-529f-5d8b-9a4f-7e69705d60db","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#880818","images":{"fallback":{"src":"/static/db7f178be40d0c331569338538d31bac/5ffd7/plakat_2016_05.png","srcSet":"/static/db7f178be40d0c331569338538d31bac/5ffd7/plakat_2016_05.png 744w","sizes":"100vw"},"sources":[{"srcSet":"/static/db7f178be40d0c331569338538d31bac/874d1/plakat_2016_05.webp 744w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4139784946236558}}},"poster_alt":"Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert."}}},{"node":{"id":"7d996009-4040-5330-a46c-5877cc5668af","fields":{"slug":"/talks/2016-03-30-haskell_frege/"},"frontmatter":{"title":"Haskell und Frege","speaker":["manuel_mauky"],"poster":{"childImageSharp":{"id":"5c9d56a7-72a3-5960-83a9-42dc599be063","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#588888","images":{"fallback":{"src":"/static/64acc764c3779735c4ad382e9f9c0e6e/5ffd7/plakat_2016_03.png","srcSet":"/static/64acc764c3779735c4ad382e9f9c0e6e/5ffd7/plakat_2016_03.png 744w","sizes":"100vw"},"sources":[{"srcSet":"/static/64acc764c3779735c4ad382e9f9c0e6e/874d1/plakat_2016_03.webp 744w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4139784946236558}}},"poster_alt":"Poster: Jürgen sitzt auf einem Sessel und liest ein Buch. Er trägt eine Lese-Brille und schaut konzentriert aus. Auf dem Buch ist das Haskell-Logo, ein Lambda-Symbol, zusehen"}}},{"node":{"id":"79835d68-651b-57a2-8c75-042baeba5b30","fields":{"slug":"/talks/2016-01-27-functional_java/"},"frontmatter":{"title":"Funktionale Programmierung mit Java","speaker":["manuel_mauky","max_wielsch"],"poster":{"childImageSharp":{"id":"627917ce-c50f-59e9-98d8-4897b4f220c5","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d86838","images":{"fallback":{"src":"/static/1c76b19b6896e55dd13bb48cd2313b20/b6707/plakat_2016_01.png","srcSet":"/static/1c76b19b6896e55dd13bb48cd2313b20/0e3b9/plakat_2016_01.png 750w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/7aaf4/plakat_2016_01.png 1080w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/006ba/plakat_2016_01.png 1366w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/b6707/plakat_2016_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/1c76b19b6896e55dd13bb48cd2313b20/ebc34/plakat_2016_01.webp 750w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/47da9/plakat_2016_01.webp 1080w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/659f9/plakat_2016_01.webp 1366w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/c86cf/plakat_2016_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen trägt einen Anzug und grinst. Er hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das griechische Zeichen Lambda zu sehen."}}},{"node":{"id":"43538367-514c-5009-b9eb-0f730f52bfd9","fields":{"slug":"/talks/2015-11-25-javafx-mobile/"},"frontmatter":{"title":"JavaFX auf Mobile","speaker":["stefan_heinze","stefan_barth"],"poster":null,"poster_alt":null}}},{"node":{"id":"eff228ab-8f49-5773-905c-fee144de429f","fields":{"slug":"/talks/2015-09-30-guava/"},"frontmatter":{"title":"Guava","speaker":["steffen_seidler"],"poster":null,"poster_alt":null}}},{"node":{"id":"a3c8bbba-0df8-503b-a702-21589e288614","fields":{"slug":"/talks/2015-07-29-drools/"},"frontmatter":{"title":"Regelbasierte Systeme mit JBoss Drools","speaker":["paul_weinhold"],"poster":null,"poster_alt":null}}},{"node":{"id":"1faa8cf7-10f9-54d5-a480-6d2e44896011","fields":{"slug":"/talks/2015-05-27-advanced-android/"},"frontmatter":{"title":"Fortgeschrittene Android-Entwicklung","speaker":["max_wielsch"],"poster":null,"poster_alt":null}}},{"node":{"id":"d853656a-6dac-5d38-b25a-c241c13cbadb","fields":{"slug":"/talks/2015-03-25-android/"},"frontmatter":{"title":"Einstieg in die Android-App-Entwicklung","speaker":["max_wielsch"],"poster":null,"poster_alt":null}}},{"node":{"id":"d88d92c2-cf39-5768-b424-1b211f08c8e8","fields":{"slug":"/talks/2015-01-28-moskito/"},"frontmatter":{"title":"MoSKito - Monitoring Framework","speaker":["steffen_seidler"],"poster":null,"poster_alt":null}}},{"node":{"id":"2fdb9675-dfcf-55b8-899d-8e6d04242b4a","fields":{"slug":"/talks/2014-12-03-model-view-star/"},"frontmatter":{"title":"Model-View-*: UI-Design-Patterns im Detail","speaker":["manuel_mauky"],"poster":null,"poster_alt":null}}},{"node":{"id":"5840ef2b-08af-57a6-81b0-7a69c1d1beb0","fields":{"slug":"/talks/2014-10-29-infrastructure_as_code/"},"frontmatter":{"title":"Infrastructure as Code","speaker":["bruno_devic"],"poster":null,"poster_alt":null}}},{"node":{"id":"ded25abd-db1f-5b9b-9cd2-8c905bc15ab0","fields":{"slug":"/talks/2014-09-24-solr/"},"frontmatter":{"title":"Solr - Eine Enterprise-Suchmaschine","speaker":["steffen_seidler"],"poster":null,"poster_alt":null}}},{"node":{"id":"bd5b8775-c069-521b-803e-4a62493c8247","fields":{"slug":"/talks/2014-07-30-java8-streams/"},"frontmatter":{"title":"Java8 - Streams und Lambdas","speaker":["paul_weinhold"],"poster":null,"poster_alt":null}}},{"node":{"id":"09dfae71-65f1-52de-81a7-e0746238f502","fields":{"slug":"/talks/2014-05-28-hazelcast/"},"frontmatter":{"title":"Hazelcast - Synchronisation von In-Memory-Daten","speaker":["steffen_seidler"],"poster":null,"poster_alt":null}}},{"node":{"id":"27050ce5-4d13-504b-90e0-8a4c3f2e6514","fields":{"slug":"/talks/2014-04-02-assertj/"},"frontmatter":{"title":"Besser lesbare Unittests mit AssertJ","speaker":["manuel_mauky"],"poster":null,"poster_alt":null}}},{"node":{"id":"f39e922a-28fe-514b-838c-4b89e4ec981e","fields":{"slug":"/talks/2014-01-29-opendip/"},"frontmatter":{"title":"Tool-Integration im Softwareentwicklungsprozess","speaker":["max_wielsch"],"poster":null,"poster_alt":null}}},{"node":{"id":"a8a6dc9d-ed19-56f9-9fd3-8c83531f61d0","fields":{"slug":"/talks/2013-11-27-web-performance/"},"frontmatter":{"title":"Performance-Optimierung im Web","speaker":["maik_wagner"],"poster":null,"poster_alt":null}}},{"node":{"id":"02896017-da1f-5c03-b52f-41790bbfe7e7","fields":{"slug":"/posts/2013-10-30-poster/"},"frontmatter":{"title":"JUG-GR Poster","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"fb329b7c-5599-55bf-85c5-54a1a6b821bb","fields":{"slug":"/talks/2013-10-30-app-design/"},"frontmatter":{"title":"Modernes App-Design am Beispiel von Android","speaker":["max_wielsch"],"poster":null,"poster_alt":null}}},{"node":{"id":"6cde30c0-930e-5a8f-9a80-e0bfc34878a6","fields":{"slug":"/talks/2013-07-31-persona/"},"frontmatter":{"title":"Persona - Werkzeug für die GUI-Entwicklung","speaker":["marlene_knoche"],"poster":null,"poster_alt":null}}},{"node":{"id":"df78a5f7-4e2e-5f4d-83dd-6ad6432ef93e","fields":{"slug":"/talks/2013-05-29-jruby/"},"frontmatter":{"title":"JRuby - Ruby auf der Java VM","speaker":["sebastian_schmeck"],"poster":null,"poster_alt":null}}},{"node":{"id":"a13fb811-969f-5eb3-91f8-c71970bff046","fields":{"slug":"/talks/2013-03-27-nxt_lego/"},"frontmatter":{"title":"Lego NXT-Roboter mit Java programmieren","speaker":["erik_jaehne"],"poster":null,"poster_alt":null}}},{"node":{"id":"90157438-0e03-57ef-870f-701aac0b6210","fields":{"slug":"/talks/2012-11-28-javafx2/"},"frontmatter":{"title":"JavaFX 2","speaker":["alexander_casall","michael_thiele"],"poster":null,"poster_alt":null}}},{"node":{"id":"c044b319-accb-5fca-8339-9f01293583e6","fields":{"slug":"/talks/2012-09-26-bean_validation/"},"frontmatter":{"title":"JSR-303 BeanValidation","speaker":["manuel_mauky"],"poster":null,"poster_alt":null}}},{"node":{"id":"09982d70-f13f-5626-8a14-2d8d92abf724","fields":{"slug":"/talks/2012-07-25-selenium_praxis/"},"frontmatter":{"title":"Selenium/Webdriver in der Praxis","speaker":["maik_wagner"],"poster":null,"poster_alt":null}}},{"node":{"id":"5e4ab94f-157d-5292-864d-57606942e1ff","fields":{"slug":"/talks/2012-06-27-gridgain/"},"frontmatter":{"title":"GridGain - Parallel Computing und Data Grid Anwendungen","speaker":["mario_reichel"],"poster":null,"poster_alt":null}}},{"node":{"id":"88119287-b9a3-5745-bd33-a7735cb39b4b","fields":{"slug":"/talks/2012-05-30-jmonkey-engine3/"},"frontmatter":{"title":"JMonkeyEngine 3 - 3D-Applikationen in Java","speaker":["hans_markwart"],"poster":null,"poster_alt":null}}},{"node":{"id":"fa3c70d9-f376-541d-be0b-ca24e0ac6b89","fields":{"slug":"/talks/2012-04-25-maven/"},"frontmatter":{"title":"Maven","speaker":["thomas_storch"],"poster":null,"poster_alt":null}}},{"node":{"id":"bd3b256f-6609-52bb-9d05-5a57482e4f42","fields":{"slug":"/talks/2012-03-28-webtests/"},"frontmatter":{"title":"Webtests mit Selenium","speaker":["marcus_doering"],"poster":null,"poster_alt":null}}},{"node":{"id":"7881a4dc-ab76-5124-b9b1-dc13c982a250","fields":{"slug":"/talks/2012-02-29-scala_webapps/"},"frontmatter":{"title":"Webentwicklung mit Scala","speaker":["stefan_bradl"],"poster":null,"poster_alt":null}}},{"node":{"id":"67e2091a-15eb-56f9-bb65-586c4b2a809d","fields":{"slug":"/talks/2012-01-25-jsf_cdi_advanced/"},"frontmatter":{"title":"Advanced JSF und CDI","speaker":["manuel_mauky"],"poster":null,"poster_alt":null}}},{"node":{"id":"e3831714-860d-5867-9952-89ecfe8b81dd","fields":{"slug":"/talks/2012-01-01-hibernate/"},"frontmatter":{"title":"JPA - Hibernate","speaker":["marko_modsching"],"poster":null,"poster_alt":null}}},{"node":{"id":"11771522-730a-5373-b0f8-585c9c4f52c1","fields":{"slug":"/talks/2011-11-30-jsf-cdi/"},"frontmatter":{"title":"JavaServer Faces 2 und CDI","speaker":["manuel_mauky"],"poster":null,"poster_alt":null}}},{"node":{"id":"c40cc73f-d2be-5960-b15f-87e4b39429c8","fields":{"slug":"/talks/2011-10-26-android/"},"frontmatter":{"title":"Android","speaker":["max_wielsch"],"poster":null,"poster_alt":null}}},{"node":{"id":"9bcc98b0-826d-5513-b828-008dbf11c915","fields":{"slug":"/talks/2011-09-28-jdom/"},"frontmatter":{"title":"JDOM","speaker":["mark_ziener"],"poster":null,"poster_alt":null}}},{"node":{"id":"6cca53f4-9edd-55ac-a225-75c94aa0dd8b","fields":{"slug":"/talks/2011-09-28-single-sign-on/"},"frontmatter":{"title":"Single Sign-On mit JAAS und JGSS","speaker":["mario_reichel"],"poster":null,"poster_alt":null}}},{"node":{"id":"67828855-f7d8-5d6d-9d90-7c3760bb7705","fields":{"slug":"/talks/2011-08-31-testen/"},"frontmatter":{"title":"Testen - Patterns und Best Practices","speaker":["marko_modsching"],"poster":null,"poster_alt":null}}},{"node":{"id":"603cc23a-9840-5867-b78d-99fbd489d472","fields":{"slug":"/talks/2011-07-27-scala/"},"frontmatter":{"title":"Scala","speaker":["stefan_bradl"],"poster":null,"poster_alt":null}}},{"node":{"id":"4bb73d33-af61-5eac-a5fa-d075fa8660f5","fields":{"slug":"/talks/2011-07-27-testng/"},"frontmatter":{"title":"TestNG","speaker":["marcus_doering"],"poster":null,"poster_alt":null}}},{"node":{"id":"5c110017-4815-5ac0-a4e3-a75e759080ac","fields":{"slug":"/talks/2011-06-29-javaee_jboss/"},"frontmatter":{"title":"JavaEE und JBoss","speaker":["michael_foerster"],"poster":null,"poster_alt":null}}},{"node":{"id":"54c98b64-64a8-515b-a02c-8a54c51dcca1","fields":{"slug":"/talks/2011-05-27-guice/"},"frontmatter":{"title":"Google Guice","speaker":["robert_wirbs"],"poster":null,"poster_alt":null}}},{"node":{"id":"6d1edf0b-d32b-5274-baa2-34c7f27786b8","fields":{"slug":"/talks/2011-04-27-gwt/"},"frontmatter":{"title":"GWT - Google Web Toolkit","speaker":["ingo_koerner"],"poster":null,"poster_alt":null}}},{"node":{"id":"2d5fb6de-57a5-54c0-9485-b2ea5bb67a81","fields":{"slug":"/talks/2011-04-27-osgi_springdm/"},"frontmatter":{"title":"OSGi mit SpringDM","speaker":["manuel_mauky"],"poster":null,"poster_alt":null}}},{"node":{"id":"b0252f0d-2a16-5085-913a-7fb7bf5364a6","fields":{"slug":"/talks/2011-03-22-easymock/"},"frontmatter":{"title":"EasyMock","speaker":["richard_hauswald"],"poster":null,"poster_alt":null}}},{"node":{"id":"c92b2d55-0d33-50f7-a73c-de8f55b7d75e","fields":{"slug":"/talks/2011-03-22-jenkins/"},"frontmatter":{"title":"Jenkins/Hudson","speaker":["stefan_scheumann"],"poster":null,"poster_alt":null}}}]}},"pageContext":{}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/speakers/page-data.json b/page-data/speakers/page-data.json index f83e520a5..dc2741764 100644 --- a/page-data/speakers/page-data.json +++ b/page-data/speakers/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-speakers-tsx","path":"/speakers/","result":{"data":{"speakers":{"edges":[{"node":{"fields":{"slug":"/speakers/alexander_casall/","speakerId":"alexander_casall"},"frontmatter":{"name":"Alexander Casall"}}},{"node":{"fields":{"slug":"/speakers/andre_tepper/","speakerId":"andre_tepper"},"frontmatter":{"name":"Andre Tepper"}}},{"node":{"fields":{"slug":"/speakers/bruno_devic/","speakerId":"bruno_devic"},"frontmatter":{"name":"Bruno Devic"}}},{"node":{"fields":{"slug":"/speakers/christian_kuemmel/","speakerId":"christian_kuemmel"},"frontmatter":{"name":"Christian Kümmel"}}},{"node":{"fields":{"slug":"/speakers/christoph_menzel/","speakerId":"christoph_menzel"},"frontmatter":{"name":"Christoph Menzel"}}},{"node":{"fields":{"slug":"/speakers/damian_dudziec/","speakerId":"damian_dudziec"},"frontmatter":{"name":"Damian Dudziec"}}},{"node":{"fields":{"slug":"/speakers/daniel_fesenmeyer/","speakerId":"daniel_fesenmeyer"},"frontmatter":{"name":"Daniel Fesenmeyer"}}},{"node":{"fields":{"slug":"/speakers/daniel_sernow/","speakerId":"daniel_sernow"},"frontmatter":{"name":"Daniel Sernow"}}},{"node":{"fields":{"slug":"/speakers/daniel_sulyok/","speakerId":"daniel_sulyok"},"frontmatter":{"name":"Dániel Sulyok"}}},{"node":{"fields":{"slug":"/speakers/denny_israel/","speakerId":"denny_israel"},"frontmatter":{"name":"Denny Israel"}}},{"node":{"fields":{"slug":"/speakers/erik_jaehne/","speakerId":"erik_jaehne"},"frontmatter":{"name":"Erik Jähne"}}},{"node":{"fields":{"slug":"/speakers/gerrit_grunwald/","speakerId":"gerrit_grunwald"},"frontmatter":{"name":"Gerrit Grunwald"}}},{"node":{"fields":{"slug":"/speakers/gregor_trefs/","speakerId":"gregor_trefs"},"frontmatter":{"name":"Gregor Trefs"}}},{"node":{"fields":{"slug":"/speakers/hannes_kretschmer/","speakerId":"hannes_kretschmer"},"frontmatter":{"name":"Hannes Kretschmer"}}},{"node":{"fields":{"slug":"/speakers/hans_markwart/","speakerId":"hans_markwart"},"frontmatter":{"name":"Hans Markwart"}}},{"node":{"fields":{"slug":"/speakers/hendrik_ebbers/","speakerId":"hendrik_ebbers"},"frontmatter":{"name":"Hendrik Ebbers"}}},{"node":{"fields":{"slug":"/speakers/jens_leuschner/","speakerId":"jens_leuschner"},"frontmatter":{"name":"Jens Leuschner"}}},{"node":{"fields":{"slug":"/speakers/ingo_koerner/","speakerId":"ingo_koerner"},"frontmatter":{"name":"Ingo Körner"}}},{"node":{"fields":{"slug":"/speakers/kay_grebenstein/","speakerId":"kay_grebenstein"},"frontmatter":{"name":"Kay Grebenstein"}}},{"node":{"fields":{"slug":"/speakers/konstantin_eger/","speakerId":"konstantin_eger"},"frontmatter":{"name":"Konstantin Eger"}}},{"node":{"fields":{"slug":"/speakers/lars_roewekamp/","speakerId":"lars_roewekamp"},"frontmatter":{"name":"Lars Röwekamp"}}},{"node":{"fields":{"slug":"/speakers/maik_wagner/","speakerId":"maik_wagner"},"frontmatter":{"name":"Maik Wagner"}}},{"node":{"fields":{"slug":"/speakers/manuel_mauky/","speakerId":"manuel_mauky"},"frontmatter":{"name":"Manuel Mauky"}}},{"node":{"fields":{"slug":"/speakers/marco_gotthans/","speakerId":"marco_gotthans"},"frontmatter":{"name":"Marco Gotthans"}}},{"node":{"fields":{"slug":"/speakers/marcus_doering/","speakerId":"marcus_doering"},"frontmatter":{"name":"Marcus Döring"}}},{"node":{"fields":{"slug":"/speakers/mario_mann/","speakerId":"mario_mann"},"frontmatter":{"name":"Mario Mann"}}},{"node":{"fields":{"slug":"/speakers/mario_reichel/","speakerId":"mario_reichel"},"frontmatter":{"name":"Mario Reichel"}}},{"node":{"fields":{"slug":"/speakers/mariusz_zienkiewicz/","speakerId":"mariusz_zienkiewicz"},"frontmatter":{"name":"Mariusz Zienkiewicz"}}},{"node":{"fields":{"slug":"/speakers/mark_ziener/","speakerId":"mark_ziener"},"frontmatter":{"name":"Mark Ziener"}}},{"node":{"fields":{"slug":"/speakers/marko_modsching/","speakerId":"marko_modsching"},"frontmatter":{"name":"Marko Modsching"}}},{"node":{"fields":{"slug":"/speakers/markus_kett/","speakerId":"markus_kett"},"frontmatter":{"name":"Markus Kett"}}},{"node":{"fields":{"slug":"/speakers/markus_weiland/","speakerId":"markus_weiland"},"frontmatter":{"name":"Markus Weiland"}}},{"node":{"fields":{"slug":"/speakers/marlene_knoche/","speakerId":"marlene_knoche"},"frontmatter":{"name":"Marlene Knoche"}}},{"node":{"fields":{"slug":"/speakers/max_wielsch/","speakerId":"max_wielsch"},"frontmatter":{"name":"Max Wielsch"}}},{"node":{"fields":{"slug":"/speakers/michael_foerster/","speakerId":"michael_foerster"},"frontmatter":{"name":"Michael Förster"}}},{"node":{"fields":{"slug":"/speakers/michael_hunger/","speakerId":"michael_hunger"},"frontmatter":{"name":"Michael Hunger"}}},{"node":{"fields":{"slug":"/speakers/michael_thiele/","speakerId":"michael_thiele"},"frontmatter":{"name":"Michael Thiele"}}},{"node":{"fields":{"slug":"/speakers/michael_wiedeking/","speakerId":"michael_wiedeking"},"frontmatter":{"name":"Michael Wiedeking"}}},{"node":{"fields":{"slug":"/speakers/nico_foerster/","speakerId":"nico_foerster"},"frontmatter":{"name":"Nico Förster"}}},{"node":{"fields":{"slug":"/speakers/oliver_drotbohm/","speakerId":"oliver_drotbohm"},"frontmatter":{"name":"Oliver Drotbohm"}}},{"node":{"fields":{"slug":"/speakers/patryk_lewandowski/","speakerId":"patryk_lewandowski"},"frontmatter":{"name":"Patryk Lewandowski"}}},{"node":{"fields":{"slug":"/speakers/paul_weinhold/","speakerId":"paul_weinhold"},"frontmatter":{"name":"Paul Weinhold"}}},{"node":{"fields":{"slug":"/speakers/pawel_adaszewski/","speakerId":"pawel_adaszewski"},"frontmatter":{"name":"Pawel Adaszewski"}}},{"node":{"fields":{"slug":"/speakers/richard_hauswald/","speakerId":"richard_hauswald"},"frontmatter":{"name":"Richard Hauswald"}}},{"node":{"fields":{"slug":"/speakers/robert_wirbs/","speakerId":"robert_wirbs"},"frontmatter":{"name":"Robert Wirbs"}}},{"node":{"fields":{"slug":"/speakers/roland_weisleder/","speakerId":"roland_weisleder"},"frontmatter":{"name":"Roland Weisleder"}}},{"node":{"fields":{"slug":"/speakers/sebastian_schmeck/","speakerId":"sebastian_schmeck"},"frontmatter":{"name":"Sebastian Schmeck"}}},{"node":{"fields":{"slug":"/speakers/sergej_tihonov/","speakerId":"sergej_tihonov"},"frontmatter":{"name":"Sergej Tihonov"}}},{"node":{"fields":{"slug":"/speakers/simon_roloff/","speakerId":"simon_roloff"},"frontmatter":{"name":"Simon Roloff"}}},{"node":{"fields":{"slug":"/speakers/stefan_barth/","speakerId":"stefan_barth"},"frontmatter":{"name":"Stefan Barth"}}},{"node":{"fields":{"slug":"/speakers/stefan_bley/","speakerId":"stefan_bley"},"frontmatter":{"name":"Stefan Bley"}}},{"node":{"fields":{"slug":"/speakers/stefan_bradl/","speakerId":"stefan_bradl"},"frontmatter":{"name":"Stefan Bradl"}}},{"node":{"fields":{"slug":"/speakers/stefan_heinze/","speakerId":"stefan_heinze"},"frontmatter":{"name":"Stefan Heinze"}}},{"node":{"fields":{"slug":"/speakers/stefan_scheumann/","speakerId":"stefan_scheumann"},"frontmatter":{"name":"Stefan Scheumann"}}},{"node":{"fields":{"slug":"/speakers/stefan_zoerner/","speakerId":"stefan_zoerner"},"frontmatter":{"name":"Stefan Zörner"}}},{"node":{"fields":{"slug":"/speakers/stefan_zoerner_2/","speakerId":"stefan_zoerner_2"},"frontmatter":{"name":"Stefan Zörner"}}},{"node":{"fields":{"slug":"/speakers/steffen_seidler/","speakerId":"steffen_seidler"},"frontmatter":{"name":"Steffen Seidler"}}},{"node":{"fields":{"slug":"/speakers/stephan_strehler/","speakerId":"stephan_strehler"},"frontmatter":{"name":"Stephan Strehler"}}},{"node":{"fields":{"slug":"/speakers/thilo_frotscher/","speakerId":"thilo_frotscher"},"frontmatter":{"name":"Thilo Frotscher"}}},{"node":{"fields":{"slug":"/speakers/sven_hoffmann/","speakerId":"sven_hoffmann"},"frontmatter":{"name":"Sven Hoffmann"}}},{"node":{"fields":{"slug":"/speakers/thomas_storch/","speakerId":"thomas_storch"},"frontmatter":{"name":"Thomas Storch"}}},{"node":{"fields":{"slug":"/speakers/tobias_blaschke/","speakerId":"tobias_blaschke"},"frontmatter":{"name":"Tobias Blaschke"}}},{"node":{"fields":{"slug":"/speakers/uwe_manteuffel/","speakerId":"uwe_manteuffel"},"frontmatter":{"name":"Uwe Manteuffel"}}},{"node":{"fields":{"slug":"/speakers/wolfgang_weigend/","speakerId":"wolfgang_weigend"},"frontmatter":{"name":"Wolfgang Weigend"}}}]},"talks":{"edges":[{"node":{"id":"b0252f0d-2a16-5085-913a-7fb7bf5364a6","frontmatter":{"speaker":["richard_hauswald"]}}},{"node":{"id":"c92b2d55-0d33-50f7-a73c-de8f55b7d75e","frontmatter":{"speaker":["stefan_scheumann"]}}},{"node":{"id":"6d1edf0b-d32b-5274-baa2-34c7f27786b8","frontmatter":{"speaker":["ingo_koerner"]}}},{"node":{"id":"2d5fb6de-57a5-54c0-9485-b2ea5bb67a81","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"54c98b64-64a8-515b-a02c-8a54c51dcca1","frontmatter":{"speaker":["robert_wirbs"]}}},{"node":{"id":"5c110017-4815-5ac0-a4e3-a75e759080ac","frontmatter":{"speaker":["michael_foerster"]}}},{"node":{"id":"603cc23a-9840-5867-b78d-99fbd489d472","frontmatter":{"speaker":["stefan_bradl"]}}},{"node":{"id":"4bb73d33-af61-5eac-a5fa-d075fa8660f5","frontmatter":{"speaker":["marcus_doering"]}}},{"node":{"id":"67828855-f7d8-5d6d-9d90-7c3760bb7705","frontmatter":{"speaker":["marko_modsching"]}}},{"node":{"id":"9bcc98b0-826d-5513-b828-008dbf11c915","frontmatter":{"speaker":["mark_ziener"]}}},{"node":{"id":"6cca53f4-9edd-55ac-a225-75c94aa0dd8b","frontmatter":{"speaker":["mario_reichel"]}}},{"node":{"id":"c40cc73f-d2be-5960-b15f-87e4b39429c8","frontmatter":{"speaker":["max_wielsch"]}}},{"node":{"id":"11771522-730a-5373-b0f8-585c9c4f52c1","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"e3831714-860d-5867-9952-89ecfe8b81dd","frontmatter":{"speaker":["marko_modsching"]}}},{"node":{"id":"67e2091a-15eb-56f9-bb65-586c4b2a809d","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"7881a4dc-ab76-5124-b9b1-dc13c982a250","frontmatter":{"speaker":["stefan_bradl"]}}},{"node":{"id":"bd3b256f-6609-52bb-9d05-5a57482e4f42","frontmatter":{"speaker":["marcus_doering"]}}},{"node":{"id":"fa3c70d9-f376-541d-be0b-ca24e0ac6b89","frontmatter":{"speaker":["thomas_storch"]}}},{"node":{"id":"88119287-b9a3-5745-bd33-a7735cb39b4b","frontmatter":{"speaker":["hans_markwart"]}}},{"node":{"id":"5e4ab94f-157d-5292-864d-57606942e1ff","frontmatter":{"speaker":["mario_reichel"]}}},{"node":{"id":"09982d70-f13f-5626-8a14-2d8d92abf724","frontmatter":{"speaker":["maik_wagner"]}}},{"node":{"id":"c044b319-accb-5fca-8339-9f01293583e6","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"90157438-0e03-57ef-870f-701aac0b6210","frontmatter":{"speaker":["alexander_casall","michael_thiele"]}}},{"node":{"id":"a13fb811-969f-5eb3-91f8-c71970bff046","frontmatter":{"speaker":["erik_jaehne"]}}},{"node":{"id":"df78a5f7-4e2e-5f4d-83dd-6ad6432ef93e","frontmatter":{"speaker":["sebastian_schmeck"]}}},{"node":{"id":"6cde30c0-930e-5a8f-9a80-e0bfc34878a6","frontmatter":{"speaker":["marlene_knoche"]}}},{"node":{"id":"fb329b7c-5599-55bf-85c5-54a1a6b821bb","frontmatter":{"speaker":["max_wielsch"]}}},{"node":{"id":"a8a6dc9d-ed19-56f9-9fd3-8c83531f61d0","frontmatter":{"speaker":["maik_wagner"]}}},{"node":{"id":"f39e922a-28fe-514b-838c-4b89e4ec981e","frontmatter":{"speaker":["max_wielsch"]}}},{"node":{"id":"27050ce5-4d13-504b-90e0-8a4c3f2e6514","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"09dfae71-65f1-52de-81a7-e0746238f502","frontmatter":{"speaker":["steffen_seidler"]}}},{"node":{"id":"bd5b8775-c069-521b-803e-4a62493c8247","frontmatter":{"speaker":["paul_weinhold"]}}},{"node":{"id":"ded25abd-db1f-5b9b-9cd2-8c905bc15ab0","frontmatter":{"speaker":["steffen_seidler"]}}},{"node":{"id":"5840ef2b-08af-57a6-81b0-7a69c1d1beb0","frontmatter":{"speaker":["bruno_devic"]}}},{"node":{"id":"2fdb9675-dfcf-55b8-899d-8e6d04242b4a","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"d88d92c2-cf39-5768-b424-1b211f08c8e8","frontmatter":{"speaker":["steffen_seidler"]}}},{"node":{"id":"d853656a-6dac-5d38-b25a-c241c13cbadb","frontmatter":{"speaker":["max_wielsch"]}}},{"node":{"id":"1faa8cf7-10f9-54d5-a480-6d2e44896011","frontmatter":{"speaker":["max_wielsch"]}}},{"node":{"id":"a3c8bbba-0df8-503b-a702-21589e288614","frontmatter":{"speaker":["paul_weinhold"]}}},{"node":{"id":"eff228ab-8f49-5773-905c-fee144de429f","frontmatter":{"speaker":["steffen_seidler"]}}},{"node":{"id":"43538367-514c-5009-b9eb-0f730f52bfd9","frontmatter":{"speaker":["stefan_heinze","stefan_barth"]}}},{"node":{"id":"79835d68-651b-57a2-8c75-042baeba5b30","frontmatter":{"speaker":["manuel_mauky","max_wielsch"]}}},{"node":{"id":"7d996009-4040-5330-a46c-5877cc5668af","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"4dc84ec4-23f6-5438-a2e6-b5944dc868c9","frontmatter":{"speaker":["mario_mann"]}}},{"node":{"id":"e14cd50a-435a-5855-ae06-c0d1eb30d8af","frontmatter":{"speaker":["kay_grebenstein"]}}},{"node":{"id":"a4cfc466-b5f6-5b10-be7e-13c92d3ab2f7","frontmatter":{"speaker":["daniel_sernow"]}}},{"node":{"id":"c67796c2-6477-5658-a163-1de4870f548e","frontmatter":{"speaker":["michael_wiedeking"]}}},{"node":{"id":"cf0f1947-1449-5df5-b546-aa31d25046a7","frontmatter":{"speaker":["stefan_bley"]}}},{"node":{"id":"f009504d-3327-52e9-8948-6cd4d3ba952e","frontmatter":{"speaker":["uwe_manteuffel"]}}},{"node":{"id":"d7528a15-3b10-587c-9543-5c372945763a","frontmatter":{"speaker":["sven_hoffmann"]}}},{"node":{"id":"9ba71f6c-f0dd-5c4e-b70f-3d7ac1ec19ca","frontmatter":{"speaker":["wolfgang_weigend"]}}},{"node":{"id":"935f30df-c07e-5cfa-9188-3564b4e0fab7","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"29eb8b61-615f-5f82-afc0-25abdc540af7","frontmatter":{"speaker":["andre_tepper","maik_wagner"]}}},{"node":{"id":"fd607630-d7dd-503a-8da0-25a963df4df3","frontmatter":{"speaker":["lars_roewekamp"]}}},{"node":{"id":"92f30cfa-20d5-5aba-8db4-e6e1de091225","frontmatter":{"speaker":["michael_hunger"]}}},{"node":{"id":"259289d0-862c-5044-bdb1-38c8d853780d","frontmatter":{"speaker":["oliver_drotbohm"]}}},{"node":{"id":"67f5c805-4443-51af-9f87-0a9aff577dce","frontmatter":{"speaker":["jens_leuschner","mariusz_zienkiewicz"]}}},{"node":{"id":"dad0ee9f-ea34-5ce1-b7fe-a0e45b09e845","frontmatter":{"speaker":["stefan_zoerner"]}}},{"node":{"id":"1b2f3079-33fa-52a7-8f63-17ed40feb17e","frontmatter":{"speaker":["tobias_blaschke"]}}},{"node":{"id":"bba11502-e73b-5c5e-9ce7-f4102b1daed5","frontmatter":{"speaker":["stephan_strehler"]}}},{"node":{"id":"f17a3451-b9a5-5b42-b740-3c15fe9268f5","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"f3a5b0e9-0351-58c1-a827-a5f39196ddee","frontmatter":{"speaker":["gregor_trefs"]}}},{"node":{"id":"6c6f82f3-26da-59ee-a8b6-8c178256b6b7","frontmatter":{"speaker":["hendrik_ebbers"]}}},{"node":{"id":"f37a3185-cf74-5401-9461-328751a5a63e","frontmatter":{"speaker":["erik_jaehne"]}}},{"node":{"id":"dd2fc902-b2b3-5256-b24b-e09f17f45415","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"9a7e9567-b7fe-59cd-90fe-aec93c90f2af","frontmatter":{"speaker":["wolfgang_weigend"]}}},{"node":{"id":"a5f7b4d5-03e6-588d-9778-62b4b8c44286","frontmatter":{"speaker":["denny_israel"]}}},{"node":{"id":"6895717e-291c-581d-8fef-3b5e73bc8369","frontmatter":{"speaker":["thilo_frotscher"]}}},{"node":{"id":"a0f32bfb-f9fa-5c9c-a70d-ffd93be7d859","frontmatter":{"speaker":["maik_wagner"]}}},{"node":{"id":"c7067e06-b5be-50ec-83d2-9ea30dc14640","frontmatter":{"speaker":["simon_roloff"]}}},{"node":{"id":"92ec8c3c-c428-5ca1-bb98-7b8ebac5cdfb","frontmatter":{"speaker":["wolfgang_weigend"]}}},{"node":{"id":"0ebf9412-38af-5831-82e8-2b0aa744f924","frontmatter":{"speaker":["hannes_kretschmer"]}}},{"node":{"id":"fee8a0ec-6360-5446-9bb0-9ecbe5695536","frontmatter":{"speaker":["nico_foerster"]}}},{"node":{"id":"3c969ad0-d843-57d0-92c4-91340d71851d","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"1249d4ab-1401-5936-92b8-3d6dee7f14bb","frontmatter":{"speaker":["markus_kett","christian_kuemmel"]}}},{"node":{"id":"2e3945a5-7de9-5188-b447-47134c218967","frontmatter":{"speaker":["pawel_adaszewski"]}}},{"node":{"id":"2b8e8a71-59c4-53fb-baa2-5b6136f7efe8","frontmatter":{"speaker":["marco_gotthans"]}}},{"node":{"id":"a0820bff-9a0d-5989-b837-8f769fcc2ba6","frontmatter":{"speaker":["daniel_fesenmeyer"]}}},{"node":{"id":"5d96ee33-16f6-5b4c-aca8-557c4c24c14e","frontmatter":{"speaker":["markus_weiland"]}}},{"node":{"id":"8fa19a6d-7e84-5d43-a513-0644ddb362d6","frontmatter":{"speaker":["sergej_tihonov"]}}},{"node":{"id":"f5233192-6039-5c35-9957-b7023ed9e701","frontmatter":{"speaker":["oliver_drotbohm"]}}},{"node":{"id":"79b0298f-b45a-5707-a02c-37ea990349ee","frontmatter":{"speaker":["roland_weisleder"]}}},{"node":{"id":"d1758688-b708-5de7-8e59-5646800cc19a","frontmatter":{"speaker":["daniel_sulyok"]}}},{"node":{"id":"8a2e331b-0f3c-52b6-823e-852ecfff1ba4","frontmatter":{"speaker":["wolfgang_weigend"]}}},{"node":{"id":"4f2a426a-5b98-5f61-8750-46aac0c6c9f3","frontmatter":{"speaker":["patryk_lewandowski"]}}},{"node":{"id":"34d30efa-4f03-53e5-8043-fa73d75cbd58","frontmatter":{"speaker":["pawel_adaszewski","damian_dudziec"]}}},{"node":{"id":"e583793f-bcc5-5f78-8931-3357be0f0ba5","frontmatter":{"speaker":["gerrit_grunwald"]}}},{"node":{"id":"cafdb0d7-7218-5608-bd6f-c033864617fe","frontmatter":{"speaker":["christoph_menzel"]}}},{"node":{"id":"fafd1d08-20ad-5b94-8837-fc066b152f0d","frontmatter":{"speaker":["stefan_zoerner_2"]}}},{"node":{"id":"97f4123c-3293-532b-8ea6-6b81b355fd92","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"56c1a59c-f16a-5f43-aa33-412cf06ee342","frontmatter":{"speaker":["konstantin_eger"]}}}]}},"pageContext":{}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-speakers-tsx","path":"/speakers/","result":{"data":{"speakers":{"edges":[{"node":{"fields":{"slug":"/speakers/alexander_casall/","speakerId":"alexander_casall"},"frontmatter":{"name":"Alexander Casall"}}},{"node":{"fields":{"slug":"/speakers/andre_tepper/","speakerId":"andre_tepper"},"frontmatter":{"name":"Andre Tepper"}}},{"node":{"fields":{"slug":"/speakers/bruno_devic/","speakerId":"bruno_devic"},"frontmatter":{"name":"Bruno Devic"}}},{"node":{"fields":{"slug":"/speakers/christian_kuemmel/","speakerId":"christian_kuemmel"},"frontmatter":{"name":"Christian Kümmel"}}},{"node":{"fields":{"slug":"/speakers/christoph_menzel/","speakerId":"christoph_menzel"},"frontmatter":{"name":"Christoph Menzel"}}},{"node":{"fields":{"slug":"/speakers/damian_dudziec/","speakerId":"damian_dudziec"},"frontmatter":{"name":"Damian Dudziec"}}},{"node":{"fields":{"slug":"/speakers/daniel_fesenmeyer/","speakerId":"daniel_fesenmeyer"},"frontmatter":{"name":"Daniel Fesenmeyer"}}},{"node":{"fields":{"slug":"/speakers/daniel_sernow/","speakerId":"daniel_sernow"},"frontmatter":{"name":"Daniel Sernow"}}},{"node":{"fields":{"slug":"/speakers/daniel_sulyok/","speakerId":"daniel_sulyok"},"frontmatter":{"name":"Dániel Sulyok"}}},{"node":{"fields":{"slug":"/speakers/denny_israel/","speakerId":"denny_israel"},"frontmatter":{"name":"Denny Israel"}}},{"node":{"fields":{"slug":"/speakers/erik_jaehne/","speakerId":"erik_jaehne"},"frontmatter":{"name":"Erik Jähne"}}},{"node":{"fields":{"slug":"/speakers/gerrit_grunwald/","speakerId":"gerrit_grunwald"},"frontmatter":{"name":"Gerrit Grunwald"}}},{"node":{"fields":{"slug":"/speakers/gregor_trefs/","speakerId":"gregor_trefs"},"frontmatter":{"name":"Gregor Trefs"}}},{"node":{"fields":{"slug":"/speakers/hannes_kretschmer/","speakerId":"hannes_kretschmer"},"frontmatter":{"name":"Hannes Kretschmer"}}},{"node":{"fields":{"slug":"/speakers/hans_markwart/","speakerId":"hans_markwart"},"frontmatter":{"name":"Hans Markwart"}}},{"node":{"fields":{"slug":"/speakers/hendrik_ebbers/","speakerId":"hendrik_ebbers"},"frontmatter":{"name":"Hendrik Ebbers"}}},{"node":{"fields":{"slug":"/speakers/ingo_koerner/","speakerId":"ingo_koerner"},"frontmatter":{"name":"Ingo Körner"}}},{"node":{"fields":{"slug":"/speakers/jens_leuschner/","speakerId":"jens_leuschner"},"frontmatter":{"name":"Jens Leuschner"}}},{"node":{"fields":{"slug":"/speakers/kay_grebenstein/","speakerId":"kay_grebenstein"},"frontmatter":{"name":"Kay Grebenstein"}}},{"node":{"fields":{"slug":"/speakers/konstantin_eger/","speakerId":"konstantin_eger"},"frontmatter":{"name":"Konstantin Eger"}}},{"node":{"fields":{"slug":"/speakers/lars_roewekamp/","speakerId":"lars_roewekamp"},"frontmatter":{"name":"Lars Röwekamp"}}},{"node":{"fields":{"slug":"/speakers/maik_wagner/","speakerId":"maik_wagner"},"frontmatter":{"name":"Maik Wagner"}}},{"node":{"fields":{"slug":"/speakers/manuel_mauky/","speakerId":"manuel_mauky"},"frontmatter":{"name":"Manuel Mauky"}}},{"node":{"fields":{"slug":"/speakers/marco_gotthans/","speakerId":"marco_gotthans"},"frontmatter":{"name":"Marco Gotthans"}}},{"node":{"fields":{"slug":"/speakers/marcus_doering/","speakerId":"marcus_doering"},"frontmatter":{"name":"Marcus Döring"}}},{"node":{"fields":{"slug":"/speakers/mario_mann/","speakerId":"mario_mann"},"frontmatter":{"name":"Mario Mann"}}},{"node":{"fields":{"slug":"/speakers/mario_reichel/","speakerId":"mario_reichel"},"frontmatter":{"name":"Mario Reichel"}}},{"node":{"fields":{"slug":"/speakers/mariusz_zienkiewicz/","speakerId":"mariusz_zienkiewicz"},"frontmatter":{"name":"Mariusz Zienkiewicz"}}},{"node":{"fields":{"slug":"/speakers/mark_ziener/","speakerId":"mark_ziener"},"frontmatter":{"name":"Mark Ziener"}}},{"node":{"fields":{"slug":"/speakers/marko_modsching/","speakerId":"marko_modsching"},"frontmatter":{"name":"Marko Modsching"}}},{"node":{"fields":{"slug":"/speakers/markus_kett/","speakerId":"markus_kett"},"frontmatter":{"name":"Markus Kett"}}},{"node":{"fields":{"slug":"/speakers/markus_weiland/","speakerId":"markus_weiland"},"frontmatter":{"name":"Markus Weiland"}}},{"node":{"fields":{"slug":"/speakers/marlene_knoche/","speakerId":"marlene_knoche"},"frontmatter":{"name":"Marlene Knoche"}}},{"node":{"fields":{"slug":"/speakers/max_wielsch/","speakerId":"max_wielsch"},"frontmatter":{"name":"Max Wielsch"}}},{"node":{"fields":{"slug":"/speakers/michael_foerster/","speakerId":"michael_foerster"},"frontmatter":{"name":"Michael Förster"}}},{"node":{"fields":{"slug":"/speakers/michael_hunger/","speakerId":"michael_hunger"},"frontmatter":{"name":"Michael Hunger"}}},{"node":{"fields":{"slug":"/speakers/michael_thiele/","speakerId":"michael_thiele"},"frontmatter":{"name":"Michael Thiele"}}},{"node":{"fields":{"slug":"/speakers/michael_wiedeking/","speakerId":"michael_wiedeking"},"frontmatter":{"name":"Michael Wiedeking"}}},{"node":{"fields":{"slug":"/speakers/nico_foerster/","speakerId":"nico_foerster"},"frontmatter":{"name":"Nico Förster"}}},{"node":{"fields":{"slug":"/speakers/oliver_drotbohm/","speakerId":"oliver_drotbohm"},"frontmatter":{"name":"Oliver Drotbohm"}}},{"node":{"fields":{"slug":"/speakers/patryk_lewandowski/","speakerId":"patryk_lewandowski"},"frontmatter":{"name":"Patryk Lewandowski"}}},{"node":{"fields":{"slug":"/speakers/paul_weinhold/","speakerId":"paul_weinhold"},"frontmatter":{"name":"Paul Weinhold"}}},{"node":{"fields":{"slug":"/speakers/pawel_adaszewski/","speakerId":"pawel_adaszewski"},"frontmatter":{"name":"Pawel Adaszewski"}}},{"node":{"fields":{"slug":"/speakers/richard_hauswald/","speakerId":"richard_hauswald"},"frontmatter":{"name":"Richard Hauswald"}}},{"node":{"fields":{"slug":"/speakers/robert_wirbs/","speakerId":"robert_wirbs"},"frontmatter":{"name":"Robert Wirbs"}}},{"node":{"fields":{"slug":"/speakers/roland_weisleder/","speakerId":"roland_weisleder"},"frontmatter":{"name":"Roland Weisleder"}}},{"node":{"fields":{"slug":"/speakers/sebastian_schmeck/","speakerId":"sebastian_schmeck"},"frontmatter":{"name":"Sebastian Schmeck"}}},{"node":{"fields":{"slug":"/speakers/sergej_tihonov/","speakerId":"sergej_tihonov"},"frontmatter":{"name":"Sergej Tihonov"}}},{"node":{"fields":{"slug":"/speakers/simon_roloff/","speakerId":"simon_roloff"},"frontmatter":{"name":"Simon Roloff"}}},{"node":{"fields":{"slug":"/speakers/stefan_barth/","speakerId":"stefan_barth"},"frontmatter":{"name":"Stefan Barth"}}},{"node":{"fields":{"slug":"/speakers/stefan_bley/","speakerId":"stefan_bley"},"frontmatter":{"name":"Stefan Bley"}}},{"node":{"fields":{"slug":"/speakers/stefan_bradl/","speakerId":"stefan_bradl"},"frontmatter":{"name":"Stefan Bradl"}}},{"node":{"fields":{"slug":"/speakers/stefan_heinze/","speakerId":"stefan_heinze"},"frontmatter":{"name":"Stefan Heinze"}}},{"node":{"fields":{"slug":"/speakers/stefan_scheumann/","speakerId":"stefan_scheumann"},"frontmatter":{"name":"Stefan Scheumann"}}},{"node":{"fields":{"slug":"/speakers/stefan_zoerner/","speakerId":"stefan_zoerner"},"frontmatter":{"name":"Stefan Zörner"}}},{"node":{"fields":{"slug":"/speakers/stefan_zoerner_2/","speakerId":"stefan_zoerner_2"},"frontmatter":{"name":"Stefan Zörner"}}},{"node":{"fields":{"slug":"/speakers/steffen_seidler/","speakerId":"steffen_seidler"},"frontmatter":{"name":"Steffen Seidler"}}},{"node":{"fields":{"slug":"/speakers/stephan_strehler/","speakerId":"stephan_strehler"},"frontmatter":{"name":"Stephan Strehler"}}},{"node":{"fields":{"slug":"/speakers/sven_hoffmann/","speakerId":"sven_hoffmann"},"frontmatter":{"name":"Sven Hoffmann"}}},{"node":{"fields":{"slug":"/speakers/thilo_frotscher/","speakerId":"thilo_frotscher"},"frontmatter":{"name":"Thilo Frotscher"}}},{"node":{"fields":{"slug":"/speakers/thomas_storch/","speakerId":"thomas_storch"},"frontmatter":{"name":"Thomas Storch"}}},{"node":{"fields":{"slug":"/speakers/tobias_blaschke/","speakerId":"tobias_blaschke"},"frontmatter":{"name":"Tobias Blaschke"}}},{"node":{"fields":{"slug":"/speakers/uwe_manteuffel/","speakerId":"uwe_manteuffel"},"frontmatter":{"name":"Uwe Manteuffel"}}},{"node":{"fields":{"slug":"/speakers/wolfgang_weigend/","speakerId":"wolfgang_weigend"},"frontmatter":{"name":"Wolfgang Weigend"}}}]},"talks":{"edges":[{"node":{"id":"b0252f0d-2a16-5085-913a-7fb7bf5364a6","frontmatter":{"speaker":["richard_hauswald"]}}},{"node":{"id":"c92b2d55-0d33-50f7-a73c-de8f55b7d75e","frontmatter":{"speaker":["stefan_scheumann"]}}},{"node":{"id":"6d1edf0b-d32b-5274-baa2-34c7f27786b8","frontmatter":{"speaker":["ingo_koerner"]}}},{"node":{"id":"2d5fb6de-57a5-54c0-9485-b2ea5bb67a81","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"54c98b64-64a8-515b-a02c-8a54c51dcca1","frontmatter":{"speaker":["robert_wirbs"]}}},{"node":{"id":"5c110017-4815-5ac0-a4e3-a75e759080ac","frontmatter":{"speaker":["michael_foerster"]}}},{"node":{"id":"603cc23a-9840-5867-b78d-99fbd489d472","frontmatter":{"speaker":["stefan_bradl"]}}},{"node":{"id":"4bb73d33-af61-5eac-a5fa-d075fa8660f5","frontmatter":{"speaker":["marcus_doering"]}}},{"node":{"id":"67828855-f7d8-5d6d-9d90-7c3760bb7705","frontmatter":{"speaker":["marko_modsching"]}}},{"node":{"id":"9bcc98b0-826d-5513-b828-008dbf11c915","frontmatter":{"speaker":["mark_ziener"]}}},{"node":{"id":"6cca53f4-9edd-55ac-a225-75c94aa0dd8b","frontmatter":{"speaker":["mario_reichel"]}}},{"node":{"id":"c40cc73f-d2be-5960-b15f-87e4b39429c8","frontmatter":{"speaker":["max_wielsch"]}}},{"node":{"id":"11771522-730a-5373-b0f8-585c9c4f52c1","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"e3831714-860d-5867-9952-89ecfe8b81dd","frontmatter":{"speaker":["marko_modsching"]}}},{"node":{"id":"67e2091a-15eb-56f9-bb65-586c4b2a809d","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"7881a4dc-ab76-5124-b9b1-dc13c982a250","frontmatter":{"speaker":["stefan_bradl"]}}},{"node":{"id":"bd3b256f-6609-52bb-9d05-5a57482e4f42","frontmatter":{"speaker":["marcus_doering"]}}},{"node":{"id":"fa3c70d9-f376-541d-be0b-ca24e0ac6b89","frontmatter":{"speaker":["thomas_storch"]}}},{"node":{"id":"88119287-b9a3-5745-bd33-a7735cb39b4b","frontmatter":{"speaker":["hans_markwart"]}}},{"node":{"id":"5e4ab94f-157d-5292-864d-57606942e1ff","frontmatter":{"speaker":["mario_reichel"]}}},{"node":{"id":"09982d70-f13f-5626-8a14-2d8d92abf724","frontmatter":{"speaker":["maik_wagner"]}}},{"node":{"id":"c044b319-accb-5fca-8339-9f01293583e6","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"90157438-0e03-57ef-870f-701aac0b6210","frontmatter":{"speaker":["alexander_casall","michael_thiele"]}}},{"node":{"id":"a13fb811-969f-5eb3-91f8-c71970bff046","frontmatter":{"speaker":["erik_jaehne"]}}},{"node":{"id":"df78a5f7-4e2e-5f4d-83dd-6ad6432ef93e","frontmatter":{"speaker":["sebastian_schmeck"]}}},{"node":{"id":"6cde30c0-930e-5a8f-9a80-e0bfc34878a6","frontmatter":{"speaker":["marlene_knoche"]}}},{"node":{"id":"fb329b7c-5599-55bf-85c5-54a1a6b821bb","frontmatter":{"speaker":["max_wielsch"]}}},{"node":{"id":"a8a6dc9d-ed19-56f9-9fd3-8c83531f61d0","frontmatter":{"speaker":["maik_wagner"]}}},{"node":{"id":"f39e922a-28fe-514b-838c-4b89e4ec981e","frontmatter":{"speaker":["max_wielsch"]}}},{"node":{"id":"27050ce5-4d13-504b-90e0-8a4c3f2e6514","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"09dfae71-65f1-52de-81a7-e0746238f502","frontmatter":{"speaker":["steffen_seidler"]}}},{"node":{"id":"bd5b8775-c069-521b-803e-4a62493c8247","frontmatter":{"speaker":["paul_weinhold"]}}},{"node":{"id":"ded25abd-db1f-5b9b-9cd2-8c905bc15ab0","frontmatter":{"speaker":["steffen_seidler"]}}},{"node":{"id":"5840ef2b-08af-57a6-81b0-7a69c1d1beb0","frontmatter":{"speaker":["bruno_devic"]}}},{"node":{"id":"2fdb9675-dfcf-55b8-899d-8e6d04242b4a","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"d853656a-6dac-5d38-b25a-c241c13cbadb","frontmatter":{"speaker":["max_wielsch"]}}},{"node":{"id":"d88d92c2-cf39-5768-b424-1b211f08c8e8","frontmatter":{"speaker":["steffen_seidler"]}}},{"node":{"id":"1faa8cf7-10f9-54d5-a480-6d2e44896011","frontmatter":{"speaker":["max_wielsch"]}}},{"node":{"id":"a3c8bbba-0df8-503b-a702-21589e288614","frontmatter":{"speaker":["paul_weinhold"]}}},{"node":{"id":"eff228ab-8f49-5773-905c-fee144de429f","frontmatter":{"speaker":["steffen_seidler"]}}},{"node":{"id":"43538367-514c-5009-b9eb-0f730f52bfd9","frontmatter":{"speaker":["stefan_heinze","stefan_barth"]}}},{"node":{"id":"79835d68-651b-57a2-8c75-042baeba5b30","frontmatter":{"speaker":["manuel_mauky","max_wielsch"]}}},{"node":{"id":"7d996009-4040-5330-a46c-5877cc5668af","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"4dc84ec4-23f6-5438-a2e6-b5944dc868c9","frontmatter":{"speaker":["mario_mann"]}}},{"node":{"id":"e14cd50a-435a-5855-ae06-c0d1eb30d8af","frontmatter":{"speaker":["kay_grebenstein"]}}},{"node":{"id":"a4cfc466-b5f6-5b10-be7e-13c92d3ab2f7","frontmatter":{"speaker":["daniel_sernow"]}}},{"node":{"id":"c67796c2-6477-5658-a163-1de4870f548e","frontmatter":{"speaker":["michael_wiedeking"]}}},{"node":{"id":"cf0f1947-1449-5df5-b546-aa31d25046a7","frontmatter":{"speaker":["stefan_bley"]}}},{"node":{"id":"f009504d-3327-52e9-8948-6cd4d3ba952e","frontmatter":{"speaker":["uwe_manteuffel"]}}},{"node":{"id":"9ba71f6c-f0dd-5c4e-b70f-3d7ac1ec19ca","frontmatter":{"speaker":["wolfgang_weigend"]}}},{"node":{"id":"d7528a15-3b10-587c-9543-5c372945763a","frontmatter":{"speaker":["sven_hoffmann"]}}},{"node":{"id":"935f30df-c07e-5cfa-9188-3564b4e0fab7","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"29eb8b61-615f-5f82-afc0-25abdc540af7","frontmatter":{"speaker":["andre_tepper","maik_wagner"]}}},{"node":{"id":"fd607630-d7dd-503a-8da0-25a963df4df3","frontmatter":{"speaker":["lars_roewekamp"]}}},{"node":{"id":"92f30cfa-20d5-5aba-8db4-e6e1de091225","frontmatter":{"speaker":["michael_hunger"]}}},{"node":{"id":"259289d0-862c-5044-bdb1-38c8d853780d","frontmatter":{"speaker":["oliver_drotbohm"]}}},{"node":{"id":"67f5c805-4443-51af-9f87-0a9aff577dce","frontmatter":{"speaker":["jens_leuschner","mariusz_zienkiewicz"]}}},{"node":{"id":"dad0ee9f-ea34-5ce1-b7fe-a0e45b09e845","frontmatter":{"speaker":["stefan_zoerner"]}}},{"node":{"id":"bba11502-e73b-5c5e-9ce7-f4102b1daed5","frontmatter":{"speaker":["stephan_strehler"]}}},{"node":{"id":"f17a3451-b9a5-5b42-b740-3c15fe9268f5","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"1b2f3079-33fa-52a7-8f63-17ed40feb17e","frontmatter":{"speaker":["tobias_blaschke"]}}},{"node":{"id":"f3a5b0e9-0351-58c1-a827-a5f39196ddee","frontmatter":{"speaker":["gregor_trefs"]}}},{"node":{"id":"6c6f82f3-26da-59ee-a8b6-8c178256b6b7","frontmatter":{"speaker":["hendrik_ebbers"]}}},{"node":{"id":"f37a3185-cf74-5401-9461-328751a5a63e","frontmatter":{"speaker":["erik_jaehne"]}}},{"node":{"id":"dd2fc902-b2b3-5256-b24b-e09f17f45415","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"9a7e9567-b7fe-59cd-90fe-aec93c90f2af","frontmatter":{"speaker":["wolfgang_weigend"]}}},{"node":{"id":"a5f7b4d5-03e6-588d-9778-62b4b8c44286","frontmatter":{"speaker":["denny_israel"]}}},{"node":{"id":"6895717e-291c-581d-8fef-3b5e73bc8369","frontmatter":{"speaker":["thilo_frotscher"]}}},{"node":{"id":"a0f32bfb-f9fa-5c9c-a70d-ffd93be7d859","frontmatter":{"speaker":["maik_wagner"]}}},{"node":{"id":"c7067e06-b5be-50ec-83d2-9ea30dc14640","frontmatter":{"speaker":["simon_roloff"]}}},{"node":{"id":"92ec8c3c-c428-5ca1-bb98-7b8ebac5cdfb","frontmatter":{"speaker":["wolfgang_weigend"]}}},{"node":{"id":"0ebf9412-38af-5831-82e8-2b0aa744f924","frontmatter":{"speaker":["hannes_kretschmer"]}}},{"node":{"id":"fee8a0ec-6360-5446-9bb0-9ecbe5695536","frontmatter":{"speaker":["nico_foerster"]}}},{"node":{"id":"3c969ad0-d843-57d0-92c4-91340d71851d","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"1249d4ab-1401-5936-92b8-3d6dee7f14bb","frontmatter":{"speaker":["markus_kett","christian_kuemmel"]}}},{"node":{"id":"2e3945a5-7de9-5188-b447-47134c218967","frontmatter":{"speaker":["pawel_adaszewski"]}}},{"node":{"id":"2b8e8a71-59c4-53fb-baa2-5b6136f7efe8","frontmatter":{"speaker":["marco_gotthans"]}}},{"node":{"id":"a0820bff-9a0d-5989-b837-8f769fcc2ba6","frontmatter":{"speaker":["daniel_fesenmeyer"]}}},{"node":{"id":"5d96ee33-16f6-5b4c-aca8-557c4c24c14e","frontmatter":{"speaker":["markus_weiland"]}}},{"node":{"id":"8fa19a6d-7e84-5d43-a513-0644ddb362d6","frontmatter":{"speaker":["sergej_tihonov"]}}},{"node":{"id":"f5233192-6039-5c35-9957-b7023ed9e701","frontmatter":{"speaker":["oliver_drotbohm"]}}},{"node":{"id":"79b0298f-b45a-5707-a02c-37ea990349ee","frontmatter":{"speaker":["roland_weisleder"]}}},{"node":{"id":"d1758688-b708-5de7-8e59-5646800cc19a","frontmatter":{"speaker":["daniel_sulyok"]}}},{"node":{"id":"8a2e331b-0f3c-52b6-823e-852ecfff1ba4","frontmatter":{"speaker":["wolfgang_weigend"]}}},{"node":{"id":"4f2a426a-5b98-5f61-8750-46aac0c6c9f3","frontmatter":{"speaker":["patryk_lewandowski"]}}},{"node":{"id":"34d30efa-4f03-53e5-8043-fa73d75cbd58","frontmatter":{"speaker":["pawel_adaszewski","damian_dudziec"]}}},{"node":{"id":"e583793f-bcc5-5f78-8931-3357be0f0ba5","frontmatter":{"speaker":["gerrit_grunwald"]}}},{"node":{"id":"cafdb0d7-7218-5608-bd6f-c033864617fe","frontmatter":{"speaker":["christoph_menzel"]}}},{"node":{"id":"fafd1d08-20ad-5b94-8837-fc066b152f0d","frontmatter":{"speaker":["stefan_zoerner_2"]}}},{"node":{"id":"97f4123c-3293-532b-8ea6-6b81b355fd92","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"56c1a59c-f16a-5f43-aa33-412cf06ee342","frontmatter":{"speaker":["konstantin_eger"]}}}]}},"pageContext":{}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/tags/page-data.json b/page-data/tags/page-data.json index f5b8ab29a..bf2680639 100644 --- a/page-data/tags/page-data.json +++ b/page-data/tags/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-tags-tsx","path":"/tags/","result":{"data":{"talks":{"edges":[{"node":{"id":"b0252f0d-2a16-5085-913a-7fb7bf5364a6","frontmatter":{"title":"EasyMock","date":"2011-03-22T00:00:00.000Z","tags":["testen"],"speaker":["richard_hauswald"]},"fields":{"slug":"/talks/2011-03-22-easymock/"}}},{"node":{"id":"c92b2d55-0d33-50f7-a73c-de8f55b7d75e","frontmatter":{"title":"Jenkins/Hudson","date":"2011-03-22T00:00:00.000Z","tags":["build-management"],"speaker":["stefan_scheumann"]},"fields":{"slug":"/talks/2011-03-22-jenkins/"}}},{"node":{"id":"6d1edf0b-d32b-5274-baa2-34c7f27786b8","frontmatter":{"title":"GWT - Google Web Toolkit","date":"2011-04-27T00:00:00.000Z","tags":["web","frontend"],"speaker":["ingo_koerner"]},"fields":{"slug":"/talks/2011-04-27-gwt/"}}},{"node":{"id":"2d5fb6de-57a5-54c0-9485-b2ea5bb67a81","frontmatter":{"title":"OSGi mit SpringDM","date":"2011-04-27T00:00:00.000Z","tags":null,"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2011-04-27-osgi_springdm/"}}},{"node":{"id":"54c98b64-64a8-515b-a02c-8a54c51dcca1","frontmatter":{"title":"Google Guice","date":"2011-05-27T00:00:00.000Z","tags":["patterns"],"speaker":["robert_wirbs"]},"fields":{"slug":"/talks/2011-05-27-guice/"}}},{"node":{"id":"5c110017-4815-5ac0-a4e3-a75e759080ac","frontmatter":{"title":"JavaEE und JBoss","date":"2011-06-29T00:00:00.000Z","tags":["javaee"],"speaker":["michael_foerster"]},"fields":{"slug":"/talks/2011-06-29-javaee_jboss/"}}},{"node":{"id":"603cc23a-9840-5867-b78d-99fbd489d472","frontmatter":{"title":"Scala","date":"2011-07-27T00:00:00.000Z","tags":["programmiersprachen"],"speaker":["stefan_bradl"]},"fields":{"slug":"/talks/2011-07-27-scala/"}}},{"node":{"id":"4bb73d33-af61-5eac-a5fa-d075fa8660f5","frontmatter":{"title":"TestNG","date":"2011-07-27T00:00:00.000Z","tags":["testen"],"speaker":["marcus_doering"]},"fields":{"slug":"/talks/2011-07-27-testng/"}}},{"node":{"id":"67828855-f7d8-5d6d-9d90-7c3760bb7705","frontmatter":{"title":"Testen - Patterns und Best Practices","date":"2011-08-31T00:00:00.000Z","tags":["testen","patterns"],"speaker":["marko_modsching"]},"fields":{"slug":"/talks/2011-08-31-testen/"}}},{"node":{"id":"9bcc98b0-826d-5513-b828-008dbf11c915","frontmatter":{"title":"JDOM","date":"2011-09-28T00:00:00.000Z","tags":["xml"],"speaker":["mark_ziener"]},"fields":{"slug":"/talks/2011-09-28-jdom/"}}},{"node":{"id":"6cca53f4-9edd-55ac-a225-75c94aa0dd8b","frontmatter":{"title":"Single Sign-On mit JAAS und JGSS","date":"2011-09-28T00:00:00.000Z","tags":["security"],"speaker":["mario_reichel"]},"fields":{"slug":"/talks/2011-09-28-single-sign-on/"}}},{"node":{"id":"c40cc73f-d2be-5960-b15f-87e4b39429c8","frontmatter":{"title":"Android","date":"2011-10-26T00:00:00.000Z","tags":["mobile","android"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2011-10-26-android/"}}},{"node":{"id":"11771522-730a-5373-b0f8-585c9c4f52c1","frontmatter":{"title":"JavaServer Faces 2 und CDI","date":"2011-11-30T00:00:00.000Z","tags":["frontend","web","javaee","jsf"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2011-11-30-jsf-cdi/"}}},{"node":{"id":"e3831714-860d-5867-9952-89ecfe8b81dd","frontmatter":{"title":"JPA - Hibernate","date":"2012-01-04T00:00:00.000Z","tags":["database","javaee"],"speaker":["marko_modsching"]},"fields":{"slug":"/talks/2012-01-01-hibernate/"}}},{"node":{"id":"67e2091a-15eb-56f9-bb65-586c4b2a809d","frontmatter":{"title":"Advanced JSF und CDI","date":"2012-01-25T00:00:00.000Z","tags":["frontend","web","javaee","jsf"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2012-01-25-jsf_cdi_advanced/"}}},{"node":{"id":"7881a4dc-ab76-5124-b9b1-dc13c982a250","frontmatter":{"title":"Webentwicklung mit Scala","date":"2012-02-29T00:00:00.000Z","tags":["frontend","web","programmiersprachen"],"speaker":["stefan_bradl"]},"fields":{"slug":"/talks/2012-02-29-scala_webapps/"}}},{"node":{"id":"bd3b256f-6609-52bb-9d05-5a57482e4f42","frontmatter":{"title":"Webtests mit Selenium","date":"2012-03-28T00:00:00.000Z","tags":["frontend","web","testen"],"speaker":["marcus_doering"]},"fields":{"slug":"/talks/2012-03-28-webtests/"}}},{"node":{"id":"fa3c70d9-f376-541d-be0b-ca24e0ac6b89","frontmatter":{"title":"Maven","date":"2012-04-25T00:00:00.000Z","tags":["build-management"],"speaker":["thomas_storch"]},"fields":{"slug":"/talks/2012-04-25-maven/"}}},{"node":{"id":"88119287-b9a3-5745-bd33-a7735cb39b4b","frontmatter":{"title":"JMonkeyEngine 3 - 3D-Applikationen in Java","date":"2012-05-30T00:00:00.000Z","tags":["frontend"],"speaker":["hans_markwart"]},"fields":{"slug":"/talks/2012-05-30-jmonkey-engine3/"}}},{"node":{"id":"5e4ab94f-157d-5292-864d-57606942e1ff","frontmatter":{"title":"GridGain - Parallel Computing und Data Grid Anwendungen","date":"2012-06-27T00:00:00.000Z","tags":["cluster"],"speaker":["mario_reichel"]},"fields":{"slug":"/talks/2012-06-27-gridgain/"}}},{"node":{"id":"09982d70-f13f-5626-8a14-2d8d92abf724","frontmatter":{"title":"Selenium/Webdriver in der Praxis","date":"2012-07-25T00:00:00.000Z","tags":["web","frontend","testen"],"speaker":["maik_wagner"]},"fields":{"slug":"/talks/2012-07-25-selenium_praxis/"}}},{"node":{"id":"c044b319-accb-5fca-8339-9f01293583e6","frontmatter":{"title":"JSR-303 BeanValidation","date":"2012-09-26T00:00:00.000Z","tags":["javaee"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2012-09-26-bean_validation/"}}},{"node":{"id":"90157438-0e03-57ef-870f-701aac0b6210","frontmatter":{"title":"JavaFX 2","date":"2012-11-28T00:00:00.000Z","tags":["frontend","javafx"],"speaker":["alexander_casall","michael_thiele"]},"fields":{"slug":"/talks/2012-11-28-javafx2/"}}},{"node":{"id":"a13fb811-969f-5eb3-91f8-c71970bff046","frontmatter":{"title":"Lego NXT-Roboter mit Java programmieren","date":"2013-03-27T00:00:00.000Z","tags":["hardware","roboter"],"speaker":["erik_jaehne"]},"fields":{"slug":"/talks/2013-03-27-nxt_lego/"}}},{"node":{"id":"df78a5f7-4e2e-5f4d-83dd-6ad6432ef93e","frontmatter":{"title":"JRuby - Ruby auf der Java VM","date":"2013-05-29T00:00:00.000Z","tags":["programmiersprachen"],"speaker":["sebastian_schmeck"]},"fields":{"slug":"/talks/2013-05-29-jruby/"}}},{"node":{"id":"6cde30c0-930e-5a8f-9a80-e0bfc34878a6","frontmatter":{"title":"Persona - Werkzeug für die GUI-Entwicklung","date":"2013-07-31T00:00:00.000Z","tags":["frontend","softwareentwicklung"],"speaker":["marlene_knoche"]},"fields":{"slug":"/talks/2013-07-31-persona/"}}},{"node":{"id":"fb329b7c-5599-55bf-85c5-54a1a6b821bb","frontmatter":{"title":"Modernes App-Design am Beispiel von Android","date":"2013-10-30T00:00:00.000Z","tags":["frontend","mobile","android"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2013-10-30-app-design/"}}},{"node":{"id":"a8a6dc9d-ed19-56f9-9fd3-8c83531f61d0","frontmatter":{"title":"Performance-Optimierung im Web","date":"2013-11-27T00:00:00.000Z","tags":["web","performance"],"speaker":["maik_wagner"]},"fields":{"slug":"/talks/2013-11-27-web-performance/"}}},{"node":{"id":"f39e922a-28fe-514b-838c-4b89e4ec981e","frontmatter":{"title":"Tool-Integration im Softwareentwicklungsprozess","date":"2014-01-29T00:00:00.000Z","tags":["integration","platform","softwareentwicklung"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2014-01-29-opendip/"}}},{"node":{"id":"27050ce5-4d13-504b-90e0-8a4c3f2e6514","frontmatter":{"title":"Besser lesbare Unittests mit AssertJ","date":"2014-04-02T00:00:00.000Z","tags":["junit","testen"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2014-04-02-assertj/"}}},{"node":{"id":"09dfae71-65f1-52de-81a7-e0746238f502","frontmatter":{"title":"Hazelcast - Synchronisation von In-Memory-Daten","date":"2014-05-28T00:00:00.000Z","tags":["cluster"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2014-05-28-hazelcast/"}}},{"node":{"id":"bd5b8775-c069-521b-803e-4a62493c8247","frontmatter":{"title":"Java8 - Streams und Lambdas","date":"2014-07-30T00:00:00.000Z","tags":["java","functional-programming"],"speaker":["paul_weinhold"]},"fields":{"slug":"/talks/2014-07-30-java8-streams/"}}},{"node":{"id":"ded25abd-db1f-5b9b-9cd2-8c905bc15ab0","frontmatter":{"title":"Solr - Eine Enterprise-Suchmaschine","date":"2014-09-24T00:00:00.000Z","tags":["database"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2014-09-24-solr/"}}},{"node":{"id":"5840ef2b-08af-57a6-81b0-7a69c1d1beb0","frontmatter":{"title":"Infrastructure as Code","date":"2014-10-29T00:00:00.000Z","tags":["devops"],"speaker":["bruno_devic"]},"fields":{"slug":"/talks/2014-10-29-infrastructure_as_code/"}}},{"node":{"id":"2fdb9675-dfcf-55b8-899d-8e6d04242b4a","frontmatter":{"title":"Model-View-*: UI-Design-Patterns im Detail","date":"2014-12-03T00:00:00.000Z","tags":["frontend","patterns"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2014-12-03-model-view-star/"}}},{"node":{"id":"d88d92c2-cf39-5768-b424-1b211f08c8e8","frontmatter":{"title":"MoSKito - Monitoring Framework","date":"2015-01-28T00:00:00.000Z","tags":["web","monitoring"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2015-01-28-moskito/"}}},{"node":{"id":"d853656a-6dac-5d38-b25a-c241c13cbadb","frontmatter":{"title":"Einstieg in die Android-App-Entwicklung","date":"2015-03-25T00:00:00.000Z","tags":["android","mobile"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2015-03-25-android/"}}},{"node":{"id":"1faa8cf7-10f9-54d5-a480-6d2e44896011","frontmatter":{"title":"Fortgeschrittene Android-Entwicklung","date":"2015-05-27T00:00:00.000Z","tags":["mobile","android"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2015-05-27-advanced-android/"}}},{"node":{"id":"a3c8bbba-0df8-503b-a702-21589e288614","frontmatter":{"title":"Regelbasierte Systeme mit JBoss Drools","date":"2015-07-29T00:00:00.000Z","tags":["dsl"],"speaker":["paul_weinhold"]},"fields":{"slug":"/talks/2015-07-29-drools/"}}},{"node":{"id":"eff228ab-8f49-5773-905c-fee144de429f","frontmatter":{"title":"Guava","date":"2015-09-30T00:00:00.000Z","tags":["java"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2015-09-30-guava/"}}},{"node":{"id":"43538367-514c-5009-b9eb-0f730f52bfd9","frontmatter":{"title":"JavaFX auf Mobile","date":"2015-11-25T00:00:00.000Z","tags":["frontend","javafx","mobile","android"],"speaker":["stefan_heinze","stefan_barth"]},"fields":{"slug":"/talks/2015-11-25-javafx-mobile/"}}},{"node":{"id":"79835d68-651b-57a2-8c75-042baeba5b30","frontmatter":{"title":"Funktionale Programmierung mit Java","date":"2016-01-27T00:00:00.000Z","tags":["java","functional-programming"],"speaker":["manuel_mauky","max_wielsch"]},"fields":{"slug":"/talks/2016-01-27-functional_java/"}}},{"node":{"id":"7d996009-4040-5330-a46c-5877cc5668af","frontmatter":{"title":"Haskell und Frege","date":"2016-03-30T00:00:00.000Z","tags":["programmiersprachen","functional-programming","non-jvm-language"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2016-03-30-haskell_frege/"}}},{"node":{"id":"4dc84ec4-23f6-5438-a2e6-b5944dc868c9","frontmatter":{"title":"Performance-Analyse mit inspectIT","date":"2016-05-25T00:00:00.000Z","tags":["performance","monitoring"],"speaker":["mario_mann"]},"fields":{"slug":"/talks/2016-05-25-performance-analyse-inspectit/"}}},{"node":{"id":"e14cd50a-435a-5855-ae06-c0d1eb30d8af","frontmatter":{"title":"Testwerkzeuge für JavaFX","date":"2016-07-27T00:00:00.000Z","tags":["javafx","testen"],"speaker":["kay_grebenstein"]},"fields":{"slug":"/talks/2016-07-27-testwerkzeuge_javafx/"}}},{"node":{"id":"a4cfc466-b5f6-5b10-be7e-13c92d3ab2f7","frontmatter":{"title":"Kommunikationskultur im Softwareentwicklungsprozess","date":"2016-09-21T00:00:00.000Z","tags":["testen","softwareentwicklung"],"speaker":["daniel_sernow"]},"fields":{"slug":"/talks/2016-09-21-kommunikationskultur/"}}},{"node":{"id":"c67796c2-6477-5658-a163-1de4870f548e","frontmatter":{"title":"Inside JVM","date":"2016-11-30T00:00:00.000Z","tags":["java","jvm"],"speaker":["michael_wiedeking"]},"fields":{"slug":"/talks/2016-11-30-inside_jvm/"}}},{"node":{"id":"cf0f1947-1449-5df5-b546-aa31d25046a7","frontmatter":{"title":"JUnit 5","date":"2017-01-25T00:00:00.000Z","tags":["testen","junit"],"speaker":["stefan_bley"]},"fields":{"slug":"/talks/2017-01-25-junit5/"}}},{"node":{"id":"f009504d-3327-52e9-8948-6cd4d3ba952e","frontmatter":{"title":"CSS, Aha-Effekte und Perspektiven","date":"2017-02-22T00:00:00.000Z","tags":["frontend","web"],"speaker":["uwe_manteuffel"]},"fields":{"slug":"/talks/2017-02-22-css/"}}},{"node":{"id":"d7528a15-3b10-587c-9543-5c372945763a","frontmatter":{"title":"Angular 2 für Java Entwickler","date":"2017-03-22T00:00:00.000Z","tags":["frontend","web","javascript"],"speaker":["sven_hoffmann"]},"fields":{"slug":"/talks/2017-03-22-angular/"}}},{"node":{"id":"9ba71f6c-f0dd-5c4e-b70f-3d7ac1ec19ca","frontmatter":{"title":"JDK 9","date":"2017-04-25T00:00:00.000Z","tags":["java","jdk"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2017-04-26-jdk9/"}}},{"node":{"id":"935f30df-c07e-5cfa-9188-3564b4e0fab7","frontmatter":{"title":"React und React-Native: Functional UI Development für Browser und mobile Endgeräte","date":"2017-05-31T00:00:00.000Z","tags":["frontend","javascript","web","mobile","functional-programming"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2017-05-31-react/"}}},{"node":{"id":"29eb8b61-615f-5f82-afc0-25abdc540af7","frontmatter":{"title":"Spracherkennung mit Amazon Alexa","date":"2017-08-30T00:00:00.000Z","tags":["ki"],"speaker":["andre_tepper","maik_wagner"]},"fields":{"slug":"/talks/2017-08-30-alexa/"}}},{"node":{"id":"fd607630-d7dd-503a-8da0-25a963df4df3","frontmatter":{"title":"Serverless Application - Who the heck needs a Server?","date":"2017-10-25T00:00:00.000Z","tags":["architektur","serverless"],"speaker":["lars_roewekamp"]},"fields":{"slug":"/talks/2017-10-25-serverless/"}}},{"node":{"id":"92f30cfa-20d5-5aba-8db4-e6e1de091225","frontmatter":{"title":"Neo4j: Panama Papers","date":"2017-11-29T00:00:00.000Z","tags":["database"],"speaker":["michael_hunger"]},"fields":{"slug":"/talks/2017-11-29-neo4j/"}}},{"node":{"id":"259289d0-862c-5044-bdb1-38c8d853780d","frontmatter":{"title":"Refactoring to a System of Systems","date":"2018-01-31T00:00:00.000Z","tags":["architektur"],"speaker":["oliver_drotbohm"]},"fields":{"slug":"/talks/2018-01-31-system_of_systems/"}}},{"node":{"id":"67f5c805-4443-51af-9f87-0a9aff577dce","frontmatter":{"title":"Entwicklung von Java Applikationen auf der SAP Cloud Platform","date":"2018-02-28T00:00:00.000Z","tags":["cloud"],"speaker":["jens_leuschner","mariusz_zienkiewicz"]},"fields":{"slug":"/talks/2018-02-28-java_auf_sap_cloud/"}}},{"node":{"id":"dad0ee9f-ea34-5ce1-b7fe-a0e45b09e845","frontmatter":{"title":"Mikro- vs. Makroarchitektur – Spielraum und Spielregeln","date":"2018-03-20T00:00:00.000Z","tags":["architektur"],"speaker":["stefan_zoerner"]},"fields":{"slug":"/talks/2018-03-20-mikro_vs_makroarchitektur/"}}},{"node":{"id":"1b2f3079-33fa-52a7-8f63-17ed40feb17e","frontmatter":{"title":"Kotlin","date":"2018-04-25T00:00:00.000Z","tags":["programmiersprachen"],"speaker":["tobias_blaschke"]},"fields":{"slug":"/talks/2018-04-25-kotlin/"}}},{"node":{"id":"bba11502-e73b-5c5e-9ce7-f4102b1daed5","frontmatter":{"title":"GraphQL","date":"2018-05-30T00:00:00.000Z","tags":["programmiersprachen","web","architektur"],"speaker":["stephan_strehler"]},"fields":{"slug":"/talks/2018-05-30-graphql/"}}},{"node":{"id":"f17a3451-b9a5-5b42-b740-3c15fe9268f5","frontmatter":{"title":"Immutable Data - Unveränderliche Daten im Griff","date":"2018-06-27T00:00:00.000Z","tags":["programmiersprachen","functional-programming"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2018-06-27-immutable-data/"}}},{"node":{"id":"f3a5b0e9-0351-58c1-a827-a5f39196ddee","frontmatter":{"title":"Monadische Transaktionen","date":"2018-11-23T00:00:00.000Z","tags":["functional-programming"],"speaker":["gregor_trefs"]},"fields":{"slug":"/talks/2018-11-23-monadische_transaktionen/"}}},{"node":{"id":"6c6f82f3-26da-59ee-a8b6-8c178256b6b7","frontmatter":{"title":"Java APIs - the missing manual","date":"2019-01-31T00:00:00.000Z","tags":["java"],"speaker":["hendrik_ebbers"]},"fields":{"slug":"/talks/2019-01-31_java_apis_missing_manual/"}}},{"node":{"id":"f37a3185-cf74-5401-9461-328751a5a63e","frontmatter":{"title":"Java Reflection: Classes behind the scenes","date":"2019-02-27T00:00:00.000Z","tags":["java"],"speaker":["erik_jaehne"]},"fields":{"slug":"/talks/2019-02-27_reflection/"}}},{"node":{"id":"dd2fc902-b2b3-5256-b24b-e09f17f45415","frontmatter":{"title":"Static-Site-Generators","date":"2019-03-27T00:00:00.000Z","tags":["web","javascript"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2019-03-27-static-site-generators/"}}},{"node":{"id":"9a7e9567-b7fe-59cd-90fe-aec93c90f2af","frontmatter":{"title":"It's a JDK jungle out there - oder wie es mit den neuen Java-Versionen geordnet weitergeht","date":"2019-04-24T00:00:00.000Z","tags":["java","jdk"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2019-04-24_jdk_jungle/"}}},{"node":{"id":"a5f7b4d5-03e6-588d-9778-62b4b8c44286","frontmatter":{"title":"OAuth 2.0/OpenIDConnect mit Keycloak","date":"2019-05-29T00:00:00.000Z","tags":["java","security"],"speaker":["denny_israel"]},"fields":{"slug":"/talks/2019-05-29-oauth/"}}},{"node":{"id":"6895717e-291c-581d-8fef-3b5e73bc8369","frontmatter":{"title":"Wie gut kennst Du das Collections Framework?","date":"2019-06-26T00:00:00.000Z","tags":["java"],"speaker":["thilo_frotscher"]},"fields":{"slug":"/talks/2019-06-26-collection-framework/"}}},{"node":{"id":"a0f32bfb-f9fa-5c9c-a70d-ffd93be7d859","frontmatter":{"title":"Advanced BDD Tests","date":"2019-11-28T00:00:00.000Z","tags":["java","testen"],"speaker":["maik_wagner"]},"fields":{"slug":"/talks/2019-11-28-advanced-bdd-tests/"}}},{"node":{"id":"c7067e06-b5be-50ec-83d2-9ea30dc14640","frontmatter":{"title":"Innovationsmotor Cloud Foundry!?","date":"2020-01-29T00:00:00.000Z","tags":["cloud"],"speaker":["simon_roloff"]},"fields":{"slug":"/talks/2020-01-27-cloud-foundry/"}}},{"node":{"id":"92ec8c3c-c428-5ca1-bb98-7b8ebac5cdfb","frontmatter":{"title":"JDK 14 und GraalVM im Java Ökosystem","date":"2020-04-29T00:00:00.000Z","tags":["java","jdk","graalvm"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2020-04-29-jdk14_graalvm/"}}},{"node":{"id":"0ebf9412-38af-5831-82e8-2b0aa744f924","frontmatter":{"title":"Branching-Modelle","date":"2020-07-22T00:00:00.000Z","tags":["java","git"],"speaker":["hannes_kretschmer"]},"fields":{"slug":"/talks/2020-07-22-branching_modelle/"}}},{"node":{"id":"fee8a0ec-6360-5446-9bb0-9ecbe5695536","frontmatter":{"title":"Java Secure Coding in der Praxis","date":"2020-11-25T00:00:00.000Z","tags":["java","security"],"speaker":["nico_foerster"]},"fields":{"slug":"/talks/2020-11-25-secure_coding/"}}},{"node":{"id":"3c969ad0-d843-57d0-92c4-91340d71851d","frontmatter":{"title":"Web Components","date":"2021-01-27T00:00:00.000Z","tags":["web"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2021-01-27-webcomponents/"}}},{"node":{"id":"1249d4ab-1401-5936-92b8-3d6dee7f14bb","frontmatter":{"title":"Ultraschnelle Java In-Memory Datenbank-Anwendungen & Microservices mit MicroStream","date":"2021-06-30T00:00:00.000Z","tags":["database","java"],"speaker":["markus_kett","christian_kuemmel"]},"fields":{"slug":"/talks/2021-06-30-microstream/"}}},{"node":{"id":"2e3945a5-7de9-5188-b447-47134c218967","frontmatter":{"title":"Hebe deine IoT-Infrastruktur auf das Serverless-Level an","date":"2022-06-22T00:00:00.000Z","tags":["cloud","iot","serverless","infrastructure"],"speaker":["pawel_adaszewski"]},"fields":{"slug":"/talks/2022-06-22-iot-infrastruktur-serverless/"}}},{"node":{"id":"2b8e8a71-59c4-53fb-baa2-5b6136f7efe8","frontmatter":{"title":"Industrie 4.0? Das JUGt mich!","date":"2022-10-12T00:00:00.000Z","tags":["cloud","iot","industrie4.0","infrastructure"],"speaker":["marco_gotthans"]},"fields":{"slug":"/talks/2022-10-12-indistrie_4.0/"}}},{"node":{"id":"a0820bff-9a0d-5989-b837-8f769fcc2ba6","frontmatter":{"title":"Kundenspezifisches IAM mit Keycloak","date":"2022-11-30T00:00:00.000Z","tags":["security"],"speaker":["daniel_fesenmeyer"]},"fields":{"slug":"/talks/2022-11-30-iam-keycloak/"}}},{"node":{"id":"5d96ee33-16f6-5b4c-aca8-557c4c24c14e","frontmatter":{"title":"Content Management neu gedacht mit Contentlab","date":"2023-01-25T00:00:00.000Z","tags":["platform","web"],"speaker":["markus_weiland"]},"fields":{"slug":"/talks/2023-01-25-contentlab/"}}},{"node":{"id":"8fa19a6d-7e84-5d43-a513-0644ddb362d6","frontmatter":{"title":"Exception First – Stabilisiere deinen Code mit mehr Exceptions","date":"2023-02-22T00:00:00.000Z","tags":["architektur"],"speaker":["sergej_tihonov"]},"fields":{"slug":"/talks/2023-02-22-exception_first/"}}},{"node":{"id":"f5233192-6039-5c35-9957-b7023ed9e701","frontmatter":{"title":"Spring für architekturinteressierte Entwickler:innen","date":"2023-03-29T00:00:00.000Z","tags":["architektur","spring"],"speaker":["oliver_drotbohm"]},"fields":{"slug":"/talks/2023-03-29-spring_fuer_architekturinteressierte_entwickler_innen/"}}},{"node":{"id":"79b0298f-b45a-5707-a02c-37ea990349ee","frontmatter":{"title":"ArchUnit: Unit-Tests für deine Java-Architektur","date":"2023-04-26T00:00:00.000Z","tags":["architektur","testen"],"speaker":["roland_weisleder"]},"fields":{"slug":"/talks/2023-04-26-archunit_unit_tests_java_architektur/"}}},{"node":{"id":"d1758688-b708-5de7-8e59-5646800cc19a","frontmatter":{"title":"Accessibility in the Wild","date":"2023-05-31T00:00:00.000Z","tags":["java","a11y"],"speaker":["daniel_sulyok"]},"fields":{"slug":"/talks/2023-05-31-accessibility_in_the_wild/"}}},{"node":{"id":"8a2e331b-0f3c-52b6-823e-852ecfff1ba4","frontmatter":{"title":"GraalVM 23 – Konzepte und Features","date":"2023-06-28T00:00:00.000Z","tags":["java","jdk","graalvm"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2023-06-28-graalvm_23/"}}},{"node":{"id":"4f2a426a-5b98-5f61-8750-46aac0c6c9f3","frontmatter":{"title":"Java 21: Virtuelle Threads","date":"2023-09-27T00:00:00.000Z","tags":["java","performance"],"speaker":["patryk_lewandowski"]},"fields":{"slug":"/talks/2023-09-27-virtual-threads/"}}},{"node":{"id":"34d30efa-4f03-53e5-8043-fa73d75cbd58","frontmatter":{"title":"AWS-Infrastruktur mit Java erstellen - CDK in Action","date":"2023-10-25T00:00:00.000Z","tags":["java","cloud"],"speaker":["pawel_adaszewski","damian_dudziec"]},"fields":{"slug":"/talks/2023-10-25-aws_cdk_in_action/"}}},{"node":{"id":"e583793f-bcc5-5f78-8931-3357be0f0ba5","frontmatter":{"title":"What the CRaC - Superfast JVM startup","date":"2023-11-29T00:00:00.000Z","tags":["java","performance","jdk"],"speaker":["gerrit_grunwald"]},"fields":{"slug":"/talks/2023-11-29-crac/"}}},{"node":{"id":"cafdb0d7-7218-5608-bd6f-c033864617fe","frontmatter":{"title":"Flutter, der heilige Gral der Cross-Plattform-Entwicklung?!","date":"2024-01-31T00:00:00.000Z","tags":["mobile","frontend","non-jvm-language"],"speaker":["christoph_menzel"]},"fields":{"slug":"/talks/2024-01-31-flutter/"}}},{"node":{"id":"fafd1d08-20ad-5b94-8837-fc066b152f0d","frontmatter":{"title":"Schlanke Architektur-Reviews","date":"2024-02-28T00:00:00.000Z","tags":["architektur"],"speaker":["stefan_zoerner_2"]},"fields":{"slug":"/talks/2024-02-28-architektur-reviews/"}}},{"node":{"id":"97f4123c-3293-532b-8ea6-6b81b355fd92","frontmatter":{"title":"Rust (Teil 1): Einführung in die Sprache","date":"2024-03-20T00:00:00.000Z","tags":["programmiersprachen","performance","functional-programming","non-jvm-language","security"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2024-03-20-rust/"}}},{"node":{"id":"56c1a59c-f16a-5f43-aa33-412cf06ee342","frontmatter":{"title":"Rust (Teil 2)","date":"2024-04-24T00:00:00.000Z","tags":["programmiersprachen","performance","functional-programming","non-jvm-language","security"],"speaker":["konstantin_eger"]},"fields":{"slug":"/talks/2024-04-24-rust2/"}}}]},"speakers":{"edges":[{"node":{"id":"ff0ef063-2c62-5f5c-8e8a-3fea00727337","fields":{"slug":"/speakers/alexander_casall/"},"frontmatter":{"name":"Alexander Casall"}}},{"node":{"id":"2fce745c-9aae-524d-a24b-d39e282689b0","fields":{"slug":"/speakers/andre_tepper/"},"frontmatter":{"name":"Andre Tepper"}}},{"node":{"id":"83212ced-9134-55d1-bd90-46f149e95898","fields":{"slug":"/speakers/bruno_devic/"},"frontmatter":{"name":"Bruno Devic"}}},{"node":{"id":"02a5cfde-2b00-5350-a999-f314d4c0ee1e","fields":{"slug":"/speakers/christian_kuemmel/"},"frontmatter":{"name":"Christian Kümmel"}}},{"node":{"id":"78a4398b-6839-50d3-8f1e-5262def696d6","fields":{"slug":"/speakers/christoph_menzel/"},"frontmatter":{"name":"Christoph Menzel"}}},{"node":{"id":"7640e853-d184-5946-a052-be3b7deaa867","fields":{"slug":"/speakers/damian_dudziec/"},"frontmatter":{"name":"Damian Dudziec"}}},{"node":{"id":"2adfcaf8-baac-58d8-ac17-2e9e978bea1b","fields":{"slug":"/speakers/daniel_fesenmeyer/"},"frontmatter":{"name":"Daniel Fesenmeyer"}}},{"node":{"id":"2c287f6d-72f9-5142-8d7e-8cb0049f7898","fields":{"slug":"/speakers/daniel_sernow/"},"frontmatter":{"name":"Daniel Sernow"}}},{"node":{"id":"e86d9d23-67e9-58de-853e-30051fb1eabb","fields":{"slug":"/speakers/daniel_sulyok/"},"frontmatter":{"name":"Dániel Sulyok"}}},{"node":{"id":"770e92e8-4326-5909-ace2-ddfcc7deae8b","fields":{"slug":"/speakers/denny_israel/"},"frontmatter":{"name":"Denny Israel"}}},{"node":{"id":"074397e2-c590-59cc-8c29-413f81c9e045","fields":{"slug":"/speakers/erik_jaehne/"},"frontmatter":{"name":"Erik Jähne"}}},{"node":{"id":"f13237e6-5775-5e35-bc7e-7ab125cff716","fields":{"slug":"/speakers/gerrit_grunwald/"},"frontmatter":{"name":"Gerrit Grunwald"}}},{"node":{"id":"f8ac41fc-2d52-5c52-8a5b-cc148abad020","fields":{"slug":"/speakers/gregor_trefs/"},"frontmatter":{"name":"Gregor Trefs"}}},{"node":{"id":"1dd06ad5-50e3-58f4-b8a3-30ffdf3c4cc0","fields":{"slug":"/speakers/hannes_kretschmer/"},"frontmatter":{"name":"Hannes Kretschmer"}}},{"node":{"id":"35a72c9a-cbdf-5f39-8b2a-1813b7e94cc7","fields":{"slug":"/speakers/hans_markwart/"},"frontmatter":{"name":"Hans Markwart"}}},{"node":{"id":"93129b19-f730-5e77-879a-58c8e08a198a","fields":{"slug":"/speakers/hendrik_ebbers/"},"frontmatter":{"name":"Hendrik Ebbers"}}},{"node":{"id":"1f477a08-7805-5bf3-984b-4afec0b2cd45","fields":{"slug":"/speakers/jens_leuschner/"},"frontmatter":{"name":"Jens Leuschner"}}},{"node":{"id":"44493f6a-f9c2-527b-a086-fed0da68f1c4","fields":{"slug":"/speakers/ingo_koerner/"},"frontmatter":{"name":"Ingo Körner"}}},{"node":{"id":"d857c285-3a43-5120-8453-7b2f87424152","fields":{"slug":"/speakers/kay_grebenstein/"},"frontmatter":{"name":"Kay Grebenstein"}}},{"node":{"id":"abafb571-eb5b-5194-818a-f2b18a1382c9","fields":{"slug":"/speakers/konstantin_eger/"},"frontmatter":{"name":"Konstantin Eger"}}},{"node":{"id":"184d7622-4aae-50bd-a14c-f44f4db9c575","fields":{"slug":"/speakers/lars_roewekamp/"},"frontmatter":{"name":"Lars Röwekamp"}}},{"node":{"id":"fee4bf04-1e31-54b1-b809-c3d510531b5c","fields":{"slug":"/speakers/maik_wagner/"},"frontmatter":{"name":"Maik Wagner"}}},{"node":{"id":"c48b140e-258d-5030-8fcc-70fedc7dd5b4","fields":{"slug":"/speakers/manuel_mauky/"},"frontmatter":{"name":"Manuel Mauky"}}},{"node":{"id":"83b497c1-a32d-5e39-a543-439154b750d9","fields":{"slug":"/speakers/marco_gotthans/"},"frontmatter":{"name":"Marco Gotthans"}}},{"node":{"id":"d0f25d9d-4106-5691-a1b2-28cbe4275e46","fields":{"slug":"/speakers/marcus_doering/"},"frontmatter":{"name":"Marcus Döring"}}},{"node":{"id":"9e00ea79-267c-5db0-9e41-f5d872b4c595","fields":{"slug":"/speakers/mario_mann/"},"frontmatter":{"name":"Mario Mann"}}},{"node":{"id":"d08d4526-e68f-5a1d-8a78-6c5a99cbe1e4","fields":{"slug":"/speakers/mario_reichel/"},"frontmatter":{"name":"Mario Reichel"}}},{"node":{"id":"678c9f26-730c-5aff-999b-bd4eb93dc92f","fields":{"slug":"/speakers/mariusz_zienkiewicz/"},"frontmatter":{"name":"Mariusz Zienkiewicz"}}},{"node":{"id":"5834f4d7-e0a3-505c-b1d0-81a37f5144f1","fields":{"slug":"/speakers/mark_ziener/"},"frontmatter":{"name":"Mark Ziener"}}},{"node":{"id":"74ed9e96-8a2b-59cb-8642-93f5dec4d7b3","fields":{"slug":"/speakers/marko_modsching/"},"frontmatter":{"name":"Marko Modsching"}}},{"node":{"id":"af5cd69a-023f-577f-9cb1-5f5185d0848d","fields":{"slug":"/speakers/markus_kett/"},"frontmatter":{"name":"Markus Kett"}}},{"node":{"id":"b0aa71a0-d2a3-5a2a-8831-2137b43e583d","fields":{"slug":"/speakers/markus_weiland/"},"frontmatter":{"name":"Markus Weiland"}}},{"node":{"id":"2376b174-04f1-5b56-b72f-8201a1dfb2a5","fields":{"slug":"/speakers/marlene_knoche/"},"frontmatter":{"name":"Marlene Knoche"}}},{"node":{"id":"db05ced3-0480-51fe-83be-d0149d94da93","fields":{"slug":"/speakers/max_wielsch/"},"frontmatter":{"name":"Max Wielsch"}}},{"node":{"id":"f042c1af-7b71-5d8f-ab98-aa158cb2a418","fields":{"slug":"/speakers/michael_foerster/"},"frontmatter":{"name":"Michael Förster"}}},{"node":{"id":"21c7def1-78a4-52e2-bf13-b3a646e3215d","fields":{"slug":"/speakers/michael_hunger/"},"frontmatter":{"name":"Michael Hunger"}}},{"node":{"id":"fc3d2a4f-3ab8-5fc9-aa19-09fc69dd1385","fields":{"slug":"/speakers/michael_thiele/"},"frontmatter":{"name":"Michael Thiele"}}},{"node":{"id":"917f2c35-500a-5f14-bfb1-d99f287d2afe","fields":{"slug":"/speakers/michael_wiedeking/"},"frontmatter":{"name":"Michael Wiedeking"}}},{"node":{"id":"543c0c0e-1ed8-519c-a2d3-544f86c7b5d2","fields":{"slug":"/speakers/nico_foerster/"},"frontmatter":{"name":"Nico Förster"}}},{"node":{"id":"8402dc7e-d767-5b77-8ca3-ff9c967248fb","fields":{"slug":"/speakers/oliver_drotbohm/"},"frontmatter":{"name":"Oliver Drotbohm"}}},{"node":{"id":"c8fa437e-3c34-56b6-b03b-c67c1370f111","fields":{"slug":"/speakers/patryk_lewandowski/"},"frontmatter":{"name":"Patryk Lewandowski"}}},{"node":{"id":"339b9441-8737-533f-aefe-b31bbb6663f4","fields":{"slug":"/speakers/paul_weinhold/"},"frontmatter":{"name":"Paul Weinhold"}}},{"node":{"id":"e52c08b9-aaed-5384-920c-d08af9991f5b","fields":{"slug":"/speakers/pawel_adaszewski/"},"frontmatter":{"name":"Pawel Adaszewski"}}},{"node":{"id":"304f3f2c-44ca-5275-9f73-5b789038daf0","fields":{"slug":"/speakers/richard_hauswald/"},"frontmatter":{"name":"Richard Hauswald"}}},{"node":{"id":"18051d64-e79b-5ad5-bdc3-0b0f822ae644","fields":{"slug":"/speakers/robert_wirbs/"},"frontmatter":{"name":"Robert Wirbs"}}},{"node":{"id":"54a0f9fe-80ab-52ba-9aea-e3f2a5dd045f","fields":{"slug":"/speakers/roland_weisleder/"},"frontmatter":{"name":"Roland Weisleder"}}},{"node":{"id":"cb2ea0b2-b790-5204-9f7b-e1cd0f0583c1","fields":{"slug":"/speakers/sebastian_schmeck/"},"frontmatter":{"name":"Sebastian Schmeck"}}},{"node":{"id":"87a83879-1b5e-50f5-9829-2699d9a01da5","fields":{"slug":"/speakers/sergej_tihonov/"},"frontmatter":{"name":"Sergej Tihonov"}}},{"node":{"id":"4f81ccbd-2893-5804-a68a-04c6b8c20f75","fields":{"slug":"/speakers/simon_roloff/"},"frontmatter":{"name":"Simon Roloff"}}},{"node":{"id":"a26cc991-7e1d-5caa-8926-7a52b0fa93e6","fields":{"slug":"/speakers/stefan_barth/"},"frontmatter":{"name":"Stefan Barth"}}},{"node":{"id":"63ab1902-d259-53c5-99ea-3564ac4ce81a","fields":{"slug":"/speakers/stefan_bley/"},"frontmatter":{"name":"Stefan Bley"}}},{"node":{"id":"dd47473a-7d7f-54fa-9daa-e062ae1c9bef","fields":{"slug":"/speakers/stefan_bradl/"},"frontmatter":{"name":"Stefan Bradl"}}},{"node":{"id":"d4e04ddf-59bb-542f-b6bc-58e5cf77667d","fields":{"slug":"/speakers/stefan_heinze/"},"frontmatter":{"name":"Stefan Heinze"}}},{"node":{"id":"bd7c2828-9149-5013-8dca-331d23b9953f","fields":{"slug":"/speakers/stefan_scheumann/"},"frontmatter":{"name":"Stefan Scheumann"}}},{"node":{"id":"7b63d414-09ef-5e63-bda2-a3259175090c","fields":{"slug":"/speakers/stefan_zoerner/"},"frontmatter":{"name":"Stefan Zörner"}}},{"node":{"id":"09a6b265-f443-579a-ae78-9188aaeca6ca","fields":{"slug":"/speakers/stefan_zoerner_2/"},"frontmatter":{"name":"Stefan Zörner"}}},{"node":{"id":"39cc0655-cd1a-540e-9553-b9fa67e895cc","fields":{"slug":"/speakers/steffen_seidler/"},"frontmatter":{"name":"Steffen Seidler"}}},{"node":{"id":"a8d3dca8-b87d-568d-8e70-dcac046e98d5","fields":{"slug":"/speakers/stephan_strehler/"},"frontmatter":{"name":"Stephan Strehler"}}},{"node":{"id":"9a66bc44-37f7-527c-9f45-6c0b1dd74510","fields":{"slug":"/speakers/thilo_frotscher/"},"frontmatter":{"name":"Thilo Frotscher"}}},{"node":{"id":"aefd4a1f-a4ed-5e51-a713-1da570fcd2ee","fields":{"slug":"/speakers/sven_hoffmann/"},"frontmatter":{"name":"Sven Hoffmann"}}},{"node":{"id":"3cab3c25-9f08-5d29-a7c2-3e2b0d414c16","fields":{"slug":"/speakers/thomas_storch/"},"frontmatter":{"name":"Thomas Storch"}}},{"node":{"id":"9776c4f1-e686-5cf2-b042-939797958362","fields":{"slug":"/speakers/tobias_blaschke/"},"frontmatter":{"name":"Tobias Blaschke"}}},{"node":{"id":"91d3bc22-4970-51b8-90cf-7583f2dc5ff5","fields":{"slug":"/speakers/uwe_manteuffel/"},"frontmatter":{"name":"Uwe Manteuffel"}}},{"node":{"id":"53f5069e-fb7c-5f5d-b967-b5df3c1df975","fields":{"slug":"/speakers/wolfgang_weigend/"},"frontmatter":{"name":"Wolfgang Weigend"}}}]}},"pageContext":{}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-tags-tsx","path":"/tags/","result":{"data":{"talks":{"edges":[{"node":{"id":"b0252f0d-2a16-5085-913a-7fb7bf5364a6","frontmatter":{"title":"EasyMock","date":"2011-03-22T00:00:00.000Z","tags":["testen"],"speaker":["richard_hauswald"]},"fields":{"slug":"/talks/2011-03-22-easymock/"}}},{"node":{"id":"c92b2d55-0d33-50f7-a73c-de8f55b7d75e","frontmatter":{"title":"Jenkins/Hudson","date":"2011-03-22T00:00:00.000Z","tags":["build-management"],"speaker":["stefan_scheumann"]},"fields":{"slug":"/talks/2011-03-22-jenkins/"}}},{"node":{"id":"6d1edf0b-d32b-5274-baa2-34c7f27786b8","frontmatter":{"title":"GWT - Google Web Toolkit","date":"2011-04-27T00:00:00.000Z","tags":["web","frontend"],"speaker":["ingo_koerner"]},"fields":{"slug":"/talks/2011-04-27-gwt/"}}},{"node":{"id":"2d5fb6de-57a5-54c0-9485-b2ea5bb67a81","frontmatter":{"title":"OSGi mit SpringDM","date":"2011-04-27T00:00:00.000Z","tags":null,"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2011-04-27-osgi_springdm/"}}},{"node":{"id":"54c98b64-64a8-515b-a02c-8a54c51dcca1","frontmatter":{"title":"Google Guice","date":"2011-05-27T00:00:00.000Z","tags":["patterns"],"speaker":["robert_wirbs"]},"fields":{"slug":"/talks/2011-05-27-guice/"}}},{"node":{"id":"5c110017-4815-5ac0-a4e3-a75e759080ac","frontmatter":{"title":"JavaEE und JBoss","date":"2011-06-29T00:00:00.000Z","tags":["javaee"],"speaker":["michael_foerster"]},"fields":{"slug":"/talks/2011-06-29-javaee_jboss/"}}},{"node":{"id":"603cc23a-9840-5867-b78d-99fbd489d472","frontmatter":{"title":"Scala","date":"2011-07-27T00:00:00.000Z","tags":["programmiersprachen"],"speaker":["stefan_bradl"]},"fields":{"slug":"/talks/2011-07-27-scala/"}}},{"node":{"id":"4bb73d33-af61-5eac-a5fa-d075fa8660f5","frontmatter":{"title":"TestNG","date":"2011-07-27T00:00:00.000Z","tags":["testen"],"speaker":["marcus_doering"]},"fields":{"slug":"/talks/2011-07-27-testng/"}}},{"node":{"id":"67828855-f7d8-5d6d-9d90-7c3760bb7705","frontmatter":{"title":"Testen - Patterns und Best Practices","date":"2011-08-31T00:00:00.000Z","tags":["testen","patterns"],"speaker":["marko_modsching"]},"fields":{"slug":"/talks/2011-08-31-testen/"}}},{"node":{"id":"9bcc98b0-826d-5513-b828-008dbf11c915","frontmatter":{"title":"JDOM","date":"2011-09-28T00:00:00.000Z","tags":["xml"],"speaker":["mark_ziener"]},"fields":{"slug":"/talks/2011-09-28-jdom/"}}},{"node":{"id":"6cca53f4-9edd-55ac-a225-75c94aa0dd8b","frontmatter":{"title":"Single Sign-On mit JAAS und JGSS","date":"2011-09-28T00:00:00.000Z","tags":["security"],"speaker":["mario_reichel"]},"fields":{"slug":"/talks/2011-09-28-single-sign-on/"}}},{"node":{"id":"c40cc73f-d2be-5960-b15f-87e4b39429c8","frontmatter":{"title":"Android","date":"2011-10-26T00:00:00.000Z","tags":["mobile","android"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2011-10-26-android/"}}},{"node":{"id":"11771522-730a-5373-b0f8-585c9c4f52c1","frontmatter":{"title":"JavaServer Faces 2 und CDI","date":"2011-11-30T00:00:00.000Z","tags":["frontend","web","javaee","jsf"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2011-11-30-jsf-cdi/"}}},{"node":{"id":"e3831714-860d-5867-9952-89ecfe8b81dd","frontmatter":{"title":"JPA - Hibernate","date":"2012-01-04T00:00:00.000Z","tags":["database","javaee"],"speaker":["marko_modsching"]},"fields":{"slug":"/talks/2012-01-01-hibernate/"}}},{"node":{"id":"67e2091a-15eb-56f9-bb65-586c4b2a809d","frontmatter":{"title":"Advanced JSF und CDI","date":"2012-01-25T00:00:00.000Z","tags":["frontend","web","javaee","jsf"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2012-01-25-jsf_cdi_advanced/"}}},{"node":{"id":"7881a4dc-ab76-5124-b9b1-dc13c982a250","frontmatter":{"title":"Webentwicklung mit Scala","date":"2012-02-29T00:00:00.000Z","tags":["frontend","web","programmiersprachen"],"speaker":["stefan_bradl"]},"fields":{"slug":"/talks/2012-02-29-scala_webapps/"}}},{"node":{"id":"bd3b256f-6609-52bb-9d05-5a57482e4f42","frontmatter":{"title":"Webtests mit Selenium","date":"2012-03-28T00:00:00.000Z","tags":["frontend","web","testen"],"speaker":["marcus_doering"]},"fields":{"slug":"/talks/2012-03-28-webtests/"}}},{"node":{"id":"fa3c70d9-f376-541d-be0b-ca24e0ac6b89","frontmatter":{"title":"Maven","date":"2012-04-25T00:00:00.000Z","tags":["build-management"],"speaker":["thomas_storch"]},"fields":{"slug":"/talks/2012-04-25-maven/"}}},{"node":{"id":"88119287-b9a3-5745-bd33-a7735cb39b4b","frontmatter":{"title":"JMonkeyEngine 3 - 3D-Applikationen in Java","date":"2012-05-30T00:00:00.000Z","tags":["frontend"],"speaker":["hans_markwart"]},"fields":{"slug":"/talks/2012-05-30-jmonkey-engine3/"}}},{"node":{"id":"5e4ab94f-157d-5292-864d-57606942e1ff","frontmatter":{"title":"GridGain - Parallel Computing und Data Grid Anwendungen","date":"2012-06-27T00:00:00.000Z","tags":["cluster"],"speaker":["mario_reichel"]},"fields":{"slug":"/talks/2012-06-27-gridgain/"}}},{"node":{"id":"09982d70-f13f-5626-8a14-2d8d92abf724","frontmatter":{"title":"Selenium/Webdriver in der Praxis","date":"2012-07-25T00:00:00.000Z","tags":["web","frontend","testen"],"speaker":["maik_wagner"]},"fields":{"slug":"/talks/2012-07-25-selenium_praxis/"}}},{"node":{"id":"c044b319-accb-5fca-8339-9f01293583e6","frontmatter":{"title":"JSR-303 BeanValidation","date":"2012-09-26T00:00:00.000Z","tags":["javaee"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2012-09-26-bean_validation/"}}},{"node":{"id":"90157438-0e03-57ef-870f-701aac0b6210","frontmatter":{"title":"JavaFX 2","date":"2012-11-28T00:00:00.000Z","tags":["frontend","javafx"],"speaker":["alexander_casall","michael_thiele"]},"fields":{"slug":"/talks/2012-11-28-javafx2/"}}},{"node":{"id":"a13fb811-969f-5eb3-91f8-c71970bff046","frontmatter":{"title":"Lego NXT-Roboter mit Java programmieren","date":"2013-03-27T00:00:00.000Z","tags":["hardware","roboter"],"speaker":["erik_jaehne"]},"fields":{"slug":"/talks/2013-03-27-nxt_lego/"}}},{"node":{"id":"df78a5f7-4e2e-5f4d-83dd-6ad6432ef93e","frontmatter":{"title":"JRuby - Ruby auf der Java VM","date":"2013-05-29T00:00:00.000Z","tags":["programmiersprachen"],"speaker":["sebastian_schmeck"]},"fields":{"slug":"/talks/2013-05-29-jruby/"}}},{"node":{"id":"6cde30c0-930e-5a8f-9a80-e0bfc34878a6","frontmatter":{"title":"Persona - Werkzeug für die GUI-Entwicklung","date":"2013-07-31T00:00:00.000Z","tags":["frontend","softwareentwicklung"],"speaker":["marlene_knoche"]},"fields":{"slug":"/talks/2013-07-31-persona/"}}},{"node":{"id":"fb329b7c-5599-55bf-85c5-54a1a6b821bb","frontmatter":{"title":"Modernes App-Design am Beispiel von Android","date":"2013-10-30T00:00:00.000Z","tags":["frontend","mobile","android"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2013-10-30-app-design/"}}},{"node":{"id":"a8a6dc9d-ed19-56f9-9fd3-8c83531f61d0","frontmatter":{"title":"Performance-Optimierung im Web","date":"2013-11-27T00:00:00.000Z","tags":["web","performance"],"speaker":["maik_wagner"]},"fields":{"slug":"/talks/2013-11-27-web-performance/"}}},{"node":{"id":"f39e922a-28fe-514b-838c-4b89e4ec981e","frontmatter":{"title":"Tool-Integration im Softwareentwicklungsprozess","date":"2014-01-29T00:00:00.000Z","tags":["integration","platform","softwareentwicklung"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2014-01-29-opendip/"}}},{"node":{"id":"27050ce5-4d13-504b-90e0-8a4c3f2e6514","frontmatter":{"title":"Besser lesbare Unittests mit AssertJ","date":"2014-04-02T00:00:00.000Z","tags":["junit","testen"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2014-04-02-assertj/"}}},{"node":{"id":"09dfae71-65f1-52de-81a7-e0746238f502","frontmatter":{"title":"Hazelcast - Synchronisation von In-Memory-Daten","date":"2014-05-28T00:00:00.000Z","tags":["cluster"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2014-05-28-hazelcast/"}}},{"node":{"id":"bd5b8775-c069-521b-803e-4a62493c8247","frontmatter":{"title":"Java8 - Streams und Lambdas","date":"2014-07-30T00:00:00.000Z","tags":["java","functional-programming"],"speaker":["paul_weinhold"]},"fields":{"slug":"/talks/2014-07-30-java8-streams/"}}},{"node":{"id":"ded25abd-db1f-5b9b-9cd2-8c905bc15ab0","frontmatter":{"title":"Solr - Eine Enterprise-Suchmaschine","date":"2014-09-24T00:00:00.000Z","tags":["database"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2014-09-24-solr/"}}},{"node":{"id":"5840ef2b-08af-57a6-81b0-7a69c1d1beb0","frontmatter":{"title":"Infrastructure as Code","date":"2014-10-29T00:00:00.000Z","tags":["devops"],"speaker":["bruno_devic"]},"fields":{"slug":"/talks/2014-10-29-infrastructure_as_code/"}}},{"node":{"id":"2fdb9675-dfcf-55b8-899d-8e6d04242b4a","frontmatter":{"title":"Model-View-*: UI-Design-Patterns im Detail","date":"2014-12-03T00:00:00.000Z","tags":["frontend","patterns"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2014-12-03-model-view-star/"}}},{"node":{"id":"d853656a-6dac-5d38-b25a-c241c13cbadb","frontmatter":{"title":"Einstieg in die Android-App-Entwicklung","date":"2015-03-25T00:00:00.000Z","tags":["android","mobile"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2015-03-25-android/"}}},{"node":{"id":"d88d92c2-cf39-5768-b424-1b211f08c8e8","frontmatter":{"title":"MoSKito - Monitoring Framework","date":"2015-01-28T00:00:00.000Z","tags":["web","monitoring"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2015-01-28-moskito/"}}},{"node":{"id":"1faa8cf7-10f9-54d5-a480-6d2e44896011","frontmatter":{"title":"Fortgeschrittene Android-Entwicklung","date":"2015-05-27T00:00:00.000Z","tags":["mobile","android"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2015-05-27-advanced-android/"}}},{"node":{"id":"a3c8bbba-0df8-503b-a702-21589e288614","frontmatter":{"title":"Regelbasierte Systeme mit JBoss Drools","date":"2015-07-29T00:00:00.000Z","tags":["dsl"],"speaker":["paul_weinhold"]},"fields":{"slug":"/talks/2015-07-29-drools/"}}},{"node":{"id":"eff228ab-8f49-5773-905c-fee144de429f","frontmatter":{"title":"Guava","date":"2015-09-30T00:00:00.000Z","tags":["java"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2015-09-30-guava/"}}},{"node":{"id":"43538367-514c-5009-b9eb-0f730f52bfd9","frontmatter":{"title":"JavaFX auf Mobile","date":"2015-11-25T00:00:00.000Z","tags":["frontend","javafx","mobile","android"],"speaker":["stefan_heinze","stefan_barth"]},"fields":{"slug":"/talks/2015-11-25-javafx-mobile/"}}},{"node":{"id":"79835d68-651b-57a2-8c75-042baeba5b30","frontmatter":{"title":"Funktionale Programmierung mit Java","date":"2016-01-27T00:00:00.000Z","tags":["java","functional-programming"],"speaker":["manuel_mauky","max_wielsch"]},"fields":{"slug":"/talks/2016-01-27-functional_java/"}}},{"node":{"id":"7d996009-4040-5330-a46c-5877cc5668af","frontmatter":{"title":"Haskell und Frege","date":"2016-03-30T00:00:00.000Z","tags":["programmiersprachen","functional-programming","non-jvm-language"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2016-03-30-haskell_frege/"}}},{"node":{"id":"4dc84ec4-23f6-5438-a2e6-b5944dc868c9","frontmatter":{"title":"Performance-Analyse mit inspectIT","date":"2016-05-25T00:00:00.000Z","tags":["performance","monitoring"],"speaker":["mario_mann"]},"fields":{"slug":"/talks/2016-05-25-performance-analyse-inspectit/"}}},{"node":{"id":"e14cd50a-435a-5855-ae06-c0d1eb30d8af","frontmatter":{"title":"Testwerkzeuge für JavaFX","date":"2016-07-27T00:00:00.000Z","tags":["javafx","testen"],"speaker":["kay_grebenstein"]},"fields":{"slug":"/talks/2016-07-27-testwerkzeuge_javafx/"}}},{"node":{"id":"a4cfc466-b5f6-5b10-be7e-13c92d3ab2f7","frontmatter":{"title":"Kommunikationskultur im Softwareentwicklungsprozess","date":"2016-09-21T00:00:00.000Z","tags":["testen","softwareentwicklung"],"speaker":["daniel_sernow"]},"fields":{"slug":"/talks/2016-09-21-kommunikationskultur/"}}},{"node":{"id":"c67796c2-6477-5658-a163-1de4870f548e","frontmatter":{"title":"Inside JVM","date":"2016-11-30T00:00:00.000Z","tags":["java","jvm"],"speaker":["michael_wiedeking"]},"fields":{"slug":"/talks/2016-11-30-inside_jvm/"}}},{"node":{"id":"cf0f1947-1449-5df5-b546-aa31d25046a7","frontmatter":{"title":"JUnit 5","date":"2017-01-25T00:00:00.000Z","tags":["testen","junit"],"speaker":["stefan_bley"]},"fields":{"slug":"/talks/2017-01-25-junit5/"}}},{"node":{"id":"f009504d-3327-52e9-8948-6cd4d3ba952e","frontmatter":{"title":"CSS, Aha-Effekte und Perspektiven","date":"2017-02-22T00:00:00.000Z","tags":["frontend","web"],"speaker":["uwe_manteuffel"]},"fields":{"slug":"/talks/2017-02-22-css/"}}},{"node":{"id":"9ba71f6c-f0dd-5c4e-b70f-3d7ac1ec19ca","frontmatter":{"title":"JDK 9","date":"2017-04-25T00:00:00.000Z","tags":["java","jdk"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2017-04-26-jdk9/"}}},{"node":{"id":"d7528a15-3b10-587c-9543-5c372945763a","frontmatter":{"title":"Angular 2 für Java Entwickler","date":"2017-03-22T00:00:00.000Z","tags":["frontend","web","javascript"],"speaker":["sven_hoffmann"]},"fields":{"slug":"/talks/2017-03-22-angular/"}}},{"node":{"id":"935f30df-c07e-5cfa-9188-3564b4e0fab7","frontmatter":{"title":"React und React-Native: Functional UI Development für Browser und mobile Endgeräte","date":"2017-05-31T00:00:00.000Z","tags":["frontend","javascript","web","mobile","functional-programming"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2017-05-31-react/"}}},{"node":{"id":"29eb8b61-615f-5f82-afc0-25abdc540af7","frontmatter":{"title":"Spracherkennung mit Amazon Alexa","date":"2017-08-30T00:00:00.000Z","tags":["ki"],"speaker":["andre_tepper","maik_wagner"]},"fields":{"slug":"/talks/2017-08-30-alexa/"}}},{"node":{"id":"fd607630-d7dd-503a-8da0-25a963df4df3","frontmatter":{"title":"Serverless Application - Who the heck needs a Server?","date":"2017-10-25T00:00:00.000Z","tags":["architektur","serverless"],"speaker":["lars_roewekamp"]},"fields":{"slug":"/talks/2017-10-25-serverless/"}}},{"node":{"id":"92f30cfa-20d5-5aba-8db4-e6e1de091225","frontmatter":{"title":"Neo4j: Panama Papers","date":"2017-11-29T00:00:00.000Z","tags":["database"],"speaker":["michael_hunger"]},"fields":{"slug":"/talks/2017-11-29-neo4j/"}}},{"node":{"id":"259289d0-862c-5044-bdb1-38c8d853780d","frontmatter":{"title":"Refactoring to a System of Systems","date":"2018-01-31T00:00:00.000Z","tags":["architektur"],"speaker":["oliver_drotbohm"]},"fields":{"slug":"/talks/2018-01-31-system_of_systems/"}}},{"node":{"id":"67f5c805-4443-51af-9f87-0a9aff577dce","frontmatter":{"title":"Entwicklung von Java Applikationen auf der SAP Cloud Platform","date":"2018-02-28T00:00:00.000Z","tags":["cloud"],"speaker":["jens_leuschner","mariusz_zienkiewicz"]},"fields":{"slug":"/talks/2018-02-28-java_auf_sap_cloud/"}}},{"node":{"id":"dad0ee9f-ea34-5ce1-b7fe-a0e45b09e845","frontmatter":{"title":"Mikro- vs. Makroarchitektur – Spielraum und Spielregeln","date":"2018-03-20T00:00:00.000Z","tags":["architektur"],"speaker":["stefan_zoerner"]},"fields":{"slug":"/talks/2018-03-20-mikro_vs_makroarchitektur/"}}},{"node":{"id":"bba11502-e73b-5c5e-9ce7-f4102b1daed5","frontmatter":{"title":"GraphQL","date":"2018-05-30T00:00:00.000Z","tags":["programmiersprachen","web","architektur"],"speaker":["stephan_strehler"]},"fields":{"slug":"/talks/2018-05-30-graphql/"}}},{"node":{"id":"f17a3451-b9a5-5b42-b740-3c15fe9268f5","frontmatter":{"title":"Immutable Data - Unveränderliche Daten im Griff","date":"2018-06-27T00:00:00.000Z","tags":["programmiersprachen","functional-programming"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2018-06-27-immutable-data/"}}},{"node":{"id":"1b2f3079-33fa-52a7-8f63-17ed40feb17e","frontmatter":{"title":"Kotlin","date":"2018-04-25T00:00:00.000Z","tags":["programmiersprachen"],"speaker":["tobias_blaschke"]},"fields":{"slug":"/talks/2018-04-25-kotlin/"}}},{"node":{"id":"f3a5b0e9-0351-58c1-a827-a5f39196ddee","frontmatter":{"title":"Monadische Transaktionen","date":"2018-11-23T00:00:00.000Z","tags":["functional-programming"],"speaker":["gregor_trefs"]},"fields":{"slug":"/talks/2018-11-23-monadische_transaktionen/"}}},{"node":{"id":"6c6f82f3-26da-59ee-a8b6-8c178256b6b7","frontmatter":{"title":"Java APIs - the missing manual","date":"2019-01-31T00:00:00.000Z","tags":["java"],"speaker":["hendrik_ebbers"]},"fields":{"slug":"/talks/2019-01-31_java_apis_missing_manual/"}}},{"node":{"id":"f37a3185-cf74-5401-9461-328751a5a63e","frontmatter":{"title":"Java Reflection: Classes behind the scenes","date":"2019-02-27T00:00:00.000Z","tags":["java"],"speaker":["erik_jaehne"]},"fields":{"slug":"/talks/2019-02-27_reflection/"}}},{"node":{"id":"dd2fc902-b2b3-5256-b24b-e09f17f45415","frontmatter":{"title":"Static-Site-Generators","date":"2019-03-27T00:00:00.000Z","tags":["web","javascript"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2019-03-27-static-site-generators/"}}},{"node":{"id":"9a7e9567-b7fe-59cd-90fe-aec93c90f2af","frontmatter":{"title":"It's a JDK jungle out there - oder wie es mit den neuen Java-Versionen geordnet weitergeht","date":"2019-04-24T00:00:00.000Z","tags":["java","jdk"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2019-04-24_jdk_jungle/"}}},{"node":{"id":"a5f7b4d5-03e6-588d-9778-62b4b8c44286","frontmatter":{"title":"OAuth 2.0/OpenIDConnect mit Keycloak","date":"2019-05-29T00:00:00.000Z","tags":["java","security"],"speaker":["denny_israel"]},"fields":{"slug":"/talks/2019-05-29-oauth/"}}},{"node":{"id":"6895717e-291c-581d-8fef-3b5e73bc8369","frontmatter":{"title":"Wie gut kennst Du das Collections Framework?","date":"2019-06-26T00:00:00.000Z","tags":["java"],"speaker":["thilo_frotscher"]},"fields":{"slug":"/talks/2019-06-26-collection-framework/"}}},{"node":{"id":"a0f32bfb-f9fa-5c9c-a70d-ffd93be7d859","frontmatter":{"title":"Advanced BDD Tests","date":"2019-11-28T00:00:00.000Z","tags":["java","testen"],"speaker":["maik_wagner"]},"fields":{"slug":"/talks/2019-11-28-advanced-bdd-tests/"}}},{"node":{"id":"c7067e06-b5be-50ec-83d2-9ea30dc14640","frontmatter":{"title":"Innovationsmotor Cloud Foundry!?","date":"2020-01-29T00:00:00.000Z","tags":["cloud"],"speaker":["simon_roloff"]},"fields":{"slug":"/talks/2020-01-27-cloud-foundry/"}}},{"node":{"id":"92ec8c3c-c428-5ca1-bb98-7b8ebac5cdfb","frontmatter":{"title":"JDK 14 und GraalVM im Java Ökosystem","date":"2020-04-29T00:00:00.000Z","tags":["java","jdk","graalvm"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2020-04-29-jdk14_graalvm/"}}},{"node":{"id":"0ebf9412-38af-5831-82e8-2b0aa744f924","frontmatter":{"title":"Branching-Modelle","date":"2020-07-22T00:00:00.000Z","tags":["java","git"],"speaker":["hannes_kretschmer"]},"fields":{"slug":"/talks/2020-07-22-branching_modelle/"}}},{"node":{"id":"fee8a0ec-6360-5446-9bb0-9ecbe5695536","frontmatter":{"title":"Java Secure Coding in der Praxis","date":"2020-11-25T00:00:00.000Z","tags":["java","security"],"speaker":["nico_foerster"]},"fields":{"slug":"/talks/2020-11-25-secure_coding/"}}},{"node":{"id":"3c969ad0-d843-57d0-92c4-91340d71851d","frontmatter":{"title":"Web Components","date":"2021-01-27T00:00:00.000Z","tags":["web"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2021-01-27-webcomponents/"}}},{"node":{"id":"1249d4ab-1401-5936-92b8-3d6dee7f14bb","frontmatter":{"title":"Ultraschnelle Java In-Memory Datenbank-Anwendungen & Microservices mit MicroStream","date":"2021-06-30T00:00:00.000Z","tags":["database","java"],"speaker":["markus_kett","christian_kuemmel"]},"fields":{"slug":"/talks/2021-06-30-microstream/"}}},{"node":{"id":"2e3945a5-7de9-5188-b447-47134c218967","frontmatter":{"title":"Hebe deine IoT-Infrastruktur auf das Serverless-Level an","date":"2022-06-22T00:00:00.000Z","tags":["cloud","iot","serverless","infrastructure"],"speaker":["pawel_adaszewski"]},"fields":{"slug":"/talks/2022-06-22-iot-infrastruktur-serverless/"}}},{"node":{"id":"2b8e8a71-59c4-53fb-baa2-5b6136f7efe8","frontmatter":{"title":"Industrie 4.0? Das JUGt mich!","date":"2022-10-12T00:00:00.000Z","tags":["cloud","iot","industrie4.0","infrastructure"],"speaker":["marco_gotthans"]},"fields":{"slug":"/talks/2022-10-12-indistrie_4.0/"}}},{"node":{"id":"a0820bff-9a0d-5989-b837-8f769fcc2ba6","frontmatter":{"title":"Kundenspezifisches IAM mit Keycloak","date":"2022-11-30T00:00:00.000Z","tags":["security"],"speaker":["daniel_fesenmeyer"]},"fields":{"slug":"/talks/2022-11-30-iam-keycloak/"}}},{"node":{"id":"5d96ee33-16f6-5b4c-aca8-557c4c24c14e","frontmatter":{"title":"Content Management neu gedacht mit Contentlab","date":"2023-01-25T00:00:00.000Z","tags":["platform","web"],"speaker":["markus_weiland"]},"fields":{"slug":"/talks/2023-01-25-contentlab/"}}},{"node":{"id":"8fa19a6d-7e84-5d43-a513-0644ddb362d6","frontmatter":{"title":"Exception First – Stabilisiere deinen Code mit mehr Exceptions","date":"2023-02-22T00:00:00.000Z","tags":["architektur"],"speaker":["sergej_tihonov"]},"fields":{"slug":"/talks/2023-02-22-exception_first/"}}},{"node":{"id":"f5233192-6039-5c35-9957-b7023ed9e701","frontmatter":{"title":"Spring für architekturinteressierte Entwickler:innen","date":"2023-03-29T00:00:00.000Z","tags":["architektur","spring"],"speaker":["oliver_drotbohm"]},"fields":{"slug":"/talks/2023-03-29-spring_fuer_architekturinteressierte_entwickler_innen/"}}},{"node":{"id":"79b0298f-b45a-5707-a02c-37ea990349ee","frontmatter":{"title":"ArchUnit: Unit-Tests für deine Java-Architektur","date":"2023-04-26T00:00:00.000Z","tags":["architektur","testen"],"speaker":["roland_weisleder"]},"fields":{"slug":"/talks/2023-04-26-archunit_unit_tests_java_architektur/"}}},{"node":{"id":"d1758688-b708-5de7-8e59-5646800cc19a","frontmatter":{"title":"Accessibility in the Wild","date":"2023-05-31T00:00:00.000Z","tags":["java","a11y"],"speaker":["daniel_sulyok"]},"fields":{"slug":"/talks/2023-05-31-accessibility_in_the_wild/"}}},{"node":{"id":"8a2e331b-0f3c-52b6-823e-852ecfff1ba4","frontmatter":{"title":"GraalVM 23 – Konzepte und Features","date":"2023-06-28T00:00:00.000Z","tags":["java","jdk","graalvm"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2023-06-28-graalvm_23/"}}},{"node":{"id":"4f2a426a-5b98-5f61-8750-46aac0c6c9f3","frontmatter":{"title":"Java 21: Virtuelle Threads","date":"2023-09-27T00:00:00.000Z","tags":["java","performance"],"speaker":["patryk_lewandowski"]},"fields":{"slug":"/talks/2023-09-27-virtual-threads/"}}},{"node":{"id":"34d30efa-4f03-53e5-8043-fa73d75cbd58","frontmatter":{"title":"AWS-Infrastruktur mit Java erstellen - CDK in Action","date":"2023-10-25T00:00:00.000Z","tags":["java","cloud"],"speaker":["pawel_adaszewski","damian_dudziec"]},"fields":{"slug":"/talks/2023-10-25-aws_cdk_in_action/"}}},{"node":{"id":"e583793f-bcc5-5f78-8931-3357be0f0ba5","frontmatter":{"title":"What the CRaC - Superfast JVM startup","date":"2023-11-29T00:00:00.000Z","tags":["java","performance","jdk"],"speaker":["gerrit_grunwald"]},"fields":{"slug":"/talks/2023-11-29-crac/"}}},{"node":{"id":"cafdb0d7-7218-5608-bd6f-c033864617fe","frontmatter":{"title":"Flutter, der heilige Gral der Cross-Plattform-Entwicklung?!","date":"2024-01-31T00:00:00.000Z","tags":["mobile","frontend","non-jvm-language"],"speaker":["christoph_menzel"]},"fields":{"slug":"/talks/2024-01-31-flutter/"}}},{"node":{"id":"fafd1d08-20ad-5b94-8837-fc066b152f0d","frontmatter":{"title":"Schlanke Architektur-Reviews","date":"2024-02-28T00:00:00.000Z","tags":["architektur"],"speaker":["stefan_zoerner_2"]},"fields":{"slug":"/talks/2024-02-28-architektur-reviews/"}}},{"node":{"id":"97f4123c-3293-532b-8ea6-6b81b355fd92","frontmatter":{"title":"Rust (Teil 1): Einführung in die Sprache","date":"2024-03-20T00:00:00.000Z","tags":["programmiersprachen","performance","functional-programming","non-jvm-language","security"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2024-03-20-rust/"}}},{"node":{"id":"56c1a59c-f16a-5f43-aa33-412cf06ee342","frontmatter":{"title":"Rust (Teil 2)","date":"2024-04-24T00:00:00.000Z","tags":["programmiersprachen","performance","functional-programming","non-jvm-language","security"],"speaker":["konstantin_eger"]},"fields":{"slug":"/talks/2024-04-24-rust2/"}}}]},"speakers":{"edges":[{"node":{"id":"ff0ef063-2c62-5f5c-8e8a-3fea00727337","fields":{"slug":"/speakers/alexander_casall/"},"frontmatter":{"name":"Alexander Casall"}}},{"node":{"id":"2fce745c-9aae-524d-a24b-d39e282689b0","fields":{"slug":"/speakers/andre_tepper/"},"frontmatter":{"name":"Andre Tepper"}}},{"node":{"id":"83212ced-9134-55d1-bd90-46f149e95898","fields":{"slug":"/speakers/bruno_devic/"},"frontmatter":{"name":"Bruno Devic"}}},{"node":{"id":"02a5cfde-2b00-5350-a999-f314d4c0ee1e","fields":{"slug":"/speakers/christian_kuemmel/"},"frontmatter":{"name":"Christian Kümmel"}}},{"node":{"id":"78a4398b-6839-50d3-8f1e-5262def696d6","fields":{"slug":"/speakers/christoph_menzel/"},"frontmatter":{"name":"Christoph Menzel"}}},{"node":{"id":"7640e853-d184-5946-a052-be3b7deaa867","fields":{"slug":"/speakers/damian_dudziec/"},"frontmatter":{"name":"Damian Dudziec"}}},{"node":{"id":"2adfcaf8-baac-58d8-ac17-2e9e978bea1b","fields":{"slug":"/speakers/daniel_fesenmeyer/"},"frontmatter":{"name":"Daniel Fesenmeyer"}}},{"node":{"id":"2c287f6d-72f9-5142-8d7e-8cb0049f7898","fields":{"slug":"/speakers/daniel_sernow/"},"frontmatter":{"name":"Daniel Sernow"}}},{"node":{"id":"e86d9d23-67e9-58de-853e-30051fb1eabb","fields":{"slug":"/speakers/daniel_sulyok/"},"frontmatter":{"name":"Dániel Sulyok"}}},{"node":{"id":"770e92e8-4326-5909-ace2-ddfcc7deae8b","fields":{"slug":"/speakers/denny_israel/"},"frontmatter":{"name":"Denny Israel"}}},{"node":{"id":"074397e2-c590-59cc-8c29-413f81c9e045","fields":{"slug":"/speakers/erik_jaehne/"},"frontmatter":{"name":"Erik Jähne"}}},{"node":{"id":"f13237e6-5775-5e35-bc7e-7ab125cff716","fields":{"slug":"/speakers/gerrit_grunwald/"},"frontmatter":{"name":"Gerrit Grunwald"}}},{"node":{"id":"f8ac41fc-2d52-5c52-8a5b-cc148abad020","fields":{"slug":"/speakers/gregor_trefs/"},"frontmatter":{"name":"Gregor Trefs"}}},{"node":{"id":"1dd06ad5-50e3-58f4-b8a3-30ffdf3c4cc0","fields":{"slug":"/speakers/hannes_kretschmer/"},"frontmatter":{"name":"Hannes Kretschmer"}}},{"node":{"id":"35a72c9a-cbdf-5f39-8b2a-1813b7e94cc7","fields":{"slug":"/speakers/hans_markwart/"},"frontmatter":{"name":"Hans Markwart"}}},{"node":{"id":"93129b19-f730-5e77-879a-58c8e08a198a","fields":{"slug":"/speakers/hendrik_ebbers/"},"frontmatter":{"name":"Hendrik Ebbers"}}},{"node":{"id":"44493f6a-f9c2-527b-a086-fed0da68f1c4","fields":{"slug":"/speakers/ingo_koerner/"},"frontmatter":{"name":"Ingo Körner"}}},{"node":{"id":"1f477a08-7805-5bf3-984b-4afec0b2cd45","fields":{"slug":"/speakers/jens_leuschner/"},"frontmatter":{"name":"Jens Leuschner"}}},{"node":{"id":"d857c285-3a43-5120-8453-7b2f87424152","fields":{"slug":"/speakers/kay_grebenstein/"},"frontmatter":{"name":"Kay Grebenstein"}}},{"node":{"id":"abafb571-eb5b-5194-818a-f2b18a1382c9","fields":{"slug":"/speakers/konstantin_eger/"},"frontmatter":{"name":"Konstantin Eger"}}},{"node":{"id":"184d7622-4aae-50bd-a14c-f44f4db9c575","fields":{"slug":"/speakers/lars_roewekamp/"},"frontmatter":{"name":"Lars Röwekamp"}}},{"node":{"id":"fee4bf04-1e31-54b1-b809-c3d510531b5c","fields":{"slug":"/speakers/maik_wagner/"},"frontmatter":{"name":"Maik Wagner"}}},{"node":{"id":"c48b140e-258d-5030-8fcc-70fedc7dd5b4","fields":{"slug":"/speakers/manuel_mauky/"},"frontmatter":{"name":"Manuel Mauky"}}},{"node":{"id":"83b497c1-a32d-5e39-a543-439154b750d9","fields":{"slug":"/speakers/marco_gotthans/"},"frontmatter":{"name":"Marco Gotthans"}}},{"node":{"id":"d0f25d9d-4106-5691-a1b2-28cbe4275e46","fields":{"slug":"/speakers/marcus_doering/"},"frontmatter":{"name":"Marcus Döring"}}},{"node":{"id":"9e00ea79-267c-5db0-9e41-f5d872b4c595","fields":{"slug":"/speakers/mario_mann/"},"frontmatter":{"name":"Mario Mann"}}},{"node":{"id":"d08d4526-e68f-5a1d-8a78-6c5a99cbe1e4","fields":{"slug":"/speakers/mario_reichel/"},"frontmatter":{"name":"Mario Reichel"}}},{"node":{"id":"678c9f26-730c-5aff-999b-bd4eb93dc92f","fields":{"slug":"/speakers/mariusz_zienkiewicz/"},"frontmatter":{"name":"Mariusz Zienkiewicz"}}},{"node":{"id":"5834f4d7-e0a3-505c-b1d0-81a37f5144f1","fields":{"slug":"/speakers/mark_ziener/"},"frontmatter":{"name":"Mark Ziener"}}},{"node":{"id":"74ed9e96-8a2b-59cb-8642-93f5dec4d7b3","fields":{"slug":"/speakers/marko_modsching/"},"frontmatter":{"name":"Marko Modsching"}}},{"node":{"id":"af5cd69a-023f-577f-9cb1-5f5185d0848d","fields":{"slug":"/speakers/markus_kett/"},"frontmatter":{"name":"Markus Kett"}}},{"node":{"id":"b0aa71a0-d2a3-5a2a-8831-2137b43e583d","fields":{"slug":"/speakers/markus_weiland/"},"frontmatter":{"name":"Markus Weiland"}}},{"node":{"id":"2376b174-04f1-5b56-b72f-8201a1dfb2a5","fields":{"slug":"/speakers/marlene_knoche/"},"frontmatter":{"name":"Marlene Knoche"}}},{"node":{"id":"db05ced3-0480-51fe-83be-d0149d94da93","fields":{"slug":"/speakers/max_wielsch/"},"frontmatter":{"name":"Max Wielsch"}}},{"node":{"id":"f042c1af-7b71-5d8f-ab98-aa158cb2a418","fields":{"slug":"/speakers/michael_foerster/"},"frontmatter":{"name":"Michael Förster"}}},{"node":{"id":"21c7def1-78a4-52e2-bf13-b3a646e3215d","fields":{"slug":"/speakers/michael_hunger/"},"frontmatter":{"name":"Michael Hunger"}}},{"node":{"id":"fc3d2a4f-3ab8-5fc9-aa19-09fc69dd1385","fields":{"slug":"/speakers/michael_thiele/"},"frontmatter":{"name":"Michael Thiele"}}},{"node":{"id":"917f2c35-500a-5f14-bfb1-d99f287d2afe","fields":{"slug":"/speakers/michael_wiedeking/"},"frontmatter":{"name":"Michael Wiedeking"}}},{"node":{"id":"543c0c0e-1ed8-519c-a2d3-544f86c7b5d2","fields":{"slug":"/speakers/nico_foerster/"},"frontmatter":{"name":"Nico Förster"}}},{"node":{"id":"8402dc7e-d767-5b77-8ca3-ff9c967248fb","fields":{"slug":"/speakers/oliver_drotbohm/"},"frontmatter":{"name":"Oliver Drotbohm"}}},{"node":{"id":"c8fa437e-3c34-56b6-b03b-c67c1370f111","fields":{"slug":"/speakers/patryk_lewandowski/"},"frontmatter":{"name":"Patryk Lewandowski"}}},{"node":{"id":"339b9441-8737-533f-aefe-b31bbb6663f4","fields":{"slug":"/speakers/paul_weinhold/"},"frontmatter":{"name":"Paul Weinhold"}}},{"node":{"id":"e52c08b9-aaed-5384-920c-d08af9991f5b","fields":{"slug":"/speakers/pawel_adaszewski/"},"frontmatter":{"name":"Pawel Adaszewski"}}},{"node":{"id":"304f3f2c-44ca-5275-9f73-5b789038daf0","fields":{"slug":"/speakers/richard_hauswald/"},"frontmatter":{"name":"Richard Hauswald"}}},{"node":{"id":"18051d64-e79b-5ad5-bdc3-0b0f822ae644","fields":{"slug":"/speakers/robert_wirbs/"},"frontmatter":{"name":"Robert Wirbs"}}},{"node":{"id":"54a0f9fe-80ab-52ba-9aea-e3f2a5dd045f","fields":{"slug":"/speakers/roland_weisleder/"},"frontmatter":{"name":"Roland Weisleder"}}},{"node":{"id":"cb2ea0b2-b790-5204-9f7b-e1cd0f0583c1","fields":{"slug":"/speakers/sebastian_schmeck/"},"frontmatter":{"name":"Sebastian Schmeck"}}},{"node":{"id":"87a83879-1b5e-50f5-9829-2699d9a01da5","fields":{"slug":"/speakers/sergej_tihonov/"},"frontmatter":{"name":"Sergej Tihonov"}}},{"node":{"id":"4f81ccbd-2893-5804-a68a-04c6b8c20f75","fields":{"slug":"/speakers/simon_roloff/"},"frontmatter":{"name":"Simon Roloff"}}},{"node":{"id":"a26cc991-7e1d-5caa-8926-7a52b0fa93e6","fields":{"slug":"/speakers/stefan_barth/"},"frontmatter":{"name":"Stefan Barth"}}},{"node":{"id":"63ab1902-d259-53c5-99ea-3564ac4ce81a","fields":{"slug":"/speakers/stefan_bley/"},"frontmatter":{"name":"Stefan Bley"}}},{"node":{"id":"dd47473a-7d7f-54fa-9daa-e062ae1c9bef","fields":{"slug":"/speakers/stefan_bradl/"},"frontmatter":{"name":"Stefan Bradl"}}},{"node":{"id":"d4e04ddf-59bb-542f-b6bc-58e5cf77667d","fields":{"slug":"/speakers/stefan_heinze/"},"frontmatter":{"name":"Stefan Heinze"}}},{"node":{"id":"bd7c2828-9149-5013-8dca-331d23b9953f","fields":{"slug":"/speakers/stefan_scheumann/"},"frontmatter":{"name":"Stefan Scheumann"}}},{"node":{"id":"7b63d414-09ef-5e63-bda2-a3259175090c","fields":{"slug":"/speakers/stefan_zoerner/"},"frontmatter":{"name":"Stefan Zörner"}}},{"node":{"id":"09a6b265-f443-579a-ae78-9188aaeca6ca","fields":{"slug":"/speakers/stefan_zoerner_2/"},"frontmatter":{"name":"Stefan Zörner"}}},{"node":{"id":"39cc0655-cd1a-540e-9553-b9fa67e895cc","fields":{"slug":"/speakers/steffen_seidler/"},"frontmatter":{"name":"Steffen Seidler"}}},{"node":{"id":"a8d3dca8-b87d-568d-8e70-dcac046e98d5","fields":{"slug":"/speakers/stephan_strehler/"},"frontmatter":{"name":"Stephan Strehler"}}},{"node":{"id":"aefd4a1f-a4ed-5e51-a713-1da570fcd2ee","fields":{"slug":"/speakers/sven_hoffmann/"},"frontmatter":{"name":"Sven Hoffmann"}}},{"node":{"id":"9a66bc44-37f7-527c-9f45-6c0b1dd74510","fields":{"slug":"/speakers/thilo_frotscher/"},"frontmatter":{"name":"Thilo Frotscher"}}},{"node":{"id":"3cab3c25-9f08-5d29-a7c2-3e2b0d414c16","fields":{"slug":"/speakers/thomas_storch/"},"frontmatter":{"name":"Thomas Storch"}}},{"node":{"id":"9776c4f1-e686-5cf2-b042-939797958362","fields":{"slug":"/speakers/tobias_blaschke/"},"frontmatter":{"name":"Tobias Blaschke"}}},{"node":{"id":"91d3bc22-4970-51b8-90cf-7583f2dc5ff5","fields":{"slug":"/speakers/uwe_manteuffel/"},"frontmatter":{"name":"Uwe Manteuffel"}}},{"node":{"id":"53f5069e-fb7c-5f5d-b967-b5df3c1df975","fields":{"slug":"/speakers/wolfgang_weigend/"},"frontmatter":{"name":"Wolfgang Weigend"}}}]}},"pageContext":{}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/talks/2024-01-31-flutter/page-data.json b/page-data/talks/2024-01-31-flutter/page-data.json index 73cd7b745..2fef9da69 100644 --- a/page-data/talks/2024-01-31-flutter/page-data.json +++ b/page-data/talks/2024-01-31-flutter/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-templates-talk-page-tsx","path":"/talks/2024-01-31-flutter/","result":{"data":{"talk":{"html":"<p>Wenn sich Google einem Thema widmet, dann meist richtig und mit vollem Einsatz. Genau das sieht man beim Thema Cross-Plattform: Google entwickelte Flutter, ein UI Framework, mit dem Native Apps für Mobile, Web, Desktop und Embedded mit einer einzigen Codebase in sehr kurzer Zeit entwickelt werden können.\nWas Flutter so einzigartig macht und warum wir es bei inovex bereits produktiv für Apps einsetzen, zeige ich dir in diesem Talk.\nAnhand verschiedener Beispiele und Live-Codings siehst du, warum uns Flutter so überzeugt hat. Damit sind wir nicht alleine - Toyota verwendet Flutter bereits für ihre neuen Infotainment Systems und viele weitere namhafte Firmen wie Microsoft, Canonical und BMW setzen ebenfalls auf das Framework.\nLass dich in Flutters Welt der Cross-Plattform entführen und davon begeistern!</p>","fields":{"slug":"/talks/2024-01-31-flutter/"},"frontmatter":{"title":"Flutter, der heilige Gral der Cross-Plattform-Entwicklung?!","date":"2024-01-31T00:00:00.000Z","time":null,"virtual":null,"tags":["mobile","frontend","non-jvm-language"],"poster":null,"poster_alt":null}},"speakers":{"edges":[{"node":{"id":"78a4398b-6839-50d3-8f1e-5262def696d6","html":"<p><strong>Christoph Menzel</strong> ist Software-Entwickler mit Leib und Seele und seit 2022 als Head of Mobile & Web Development Teil des inovex Teams. Clean Code und Testautomatisierung sind für ihn zwei fundamentale Bestandteile guter Software-Entwicklung.\nEr unterstützt seine Kunden bei der Optimierung von Entwicklungsprozessen, hält Workshops zu Themen wie Unit Tests, Clean Code oder Continuous Integration & Delivery und gibt sein Wissen aktiv auf Konferenzen, Barcamps oder in Fachartikeln weiter.</p>","frontmatter":{"name":"Christoph Menzel","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/4a93039fc8abcf424a9e4aae04665797/d6138/christoph_menzel.png","srcSet":"/static/4a93039fc8abcf424a9e4aae04665797/15e42/christoph_menzel.png 100w,\n/static/4a93039fc8abcf424a9e4aae04665797/5aead/christoph_menzel.png 200w,\n/static/4a93039fc8abcf424a9e4aae04665797/d6138/christoph_menzel.png 400w,\n/static/4a93039fc8abcf424a9e4aae04665797/b7804/christoph_menzel.png 800w","sizes":"(min-width: 400px) 400px, 100vw"},"sources":[{"srcSet":"/static/4a93039fc8abcf424a9e4aae04665797/d8057/christoph_menzel.webp 100w,\n/static/4a93039fc8abcf424a9e4aae04665797/2e34e/christoph_menzel.webp 200w,\n/static/4a93039fc8abcf424a9e4aae04665797/416c3/christoph_menzel.webp 400w,\n/static/4a93039fc8abcf424a9e4aae04665797/c1587/christoph_menzel.webp 800w","type":"image/webp","sizes":"(min-width: 400px) 400px, 100vw"}]},"width":400,"height":400}}},"twitter_name":null},"fields":{"slug":"/speakers/christoph_menzel/"}}}]},"location":{"fields":{"slug":"/locations/hochschule_campus/"},"frontmatter":{"name":"Hochschule Zittau/Görlitz","number":"1","info":"Haus G2 Raum 0.10","zip":"02826","city":"Görlitz","street":"Brückenstraße"}}},"pageContext":{"slug":"/talks/2024-01-31-flutter/","speakerSlugs":["/speakers/christoph_menzel/"],"locationSlug":"/locations/hochschule_campus/"}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-templates-talk-page-tsx","path":"/talks/2024-01-31-flutter/","result":{"data":{"talk":{"html":"<p>Wenn sich Google einem Thema widmet, dann meist richtig und mit vollem Einsatz. Genau das sieht man beim Thema Cross-Plattform: Google entwickelte Flutter, ein UI Framework, mit dem Native Apps für Mobile, Web, Desktop und Embedded mit einer einzigen Codebase in sehr kurzer Zeit entwickelt werden können.\nWas Flutter so einzigartig macht und warum wir es bei inovex bereits produktiv für Apps einsetzen, zeige ich dir in diesem Talk.\nAnhand verschiedener Beispiele und Live-Codings siehst du, warum uns Flutter so überzeugt hat. Damit sind wir nicht alleine - Toyota verwendet Flutter bereits für ihre neuen Infotainment Systems und viele weitere namhafte Firmen wie Microsoft, Canonical und BMW setzen ebenfalls auf das Framework.\nLass dich in Flutters Welt der Cross-Plattform entführen und davon begeistern!</p>","fields":{"slug":"/talks/2024-01-31-flutter/"},"frontmatter":{"title":"Flutter, der heilige Gral der Cross-Plattform-Entwicklung?!","date":"2024-01-31T00:00:00.000Z","time":null,"virtual":null,"tags":["mobile","frontend","non-jvm-language"],"poster":{"childImageSharp":{"id":"6540f80b-99c8-5564-862b-6fa611e899df","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#c8a858","images":{"fallback":{"src":"/static/1d7a6f48e70fdbaa09372642cdcfc472/84817/plakat_2024_01.png","srcSet":"/static/1d7a6f48e70fdbaa09372642cdcfc472/b8e70/plakat_2024_01.png 750w,\n/static/1d7a6f48e70fdbaa09372642cdcfc472/e5839/plakat_2024_01.png 1080w,\n/static/1d7a6f48e70fdbaa09372642cdcfc472/f51d5/plakat_2024_01.png 1366w,\n/static/1d7a6f48e70fdbaa09372642cdcfc472/84817/plakat_2024_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/1d7a6f48e70fdbaa09372642cdcfc472/e5d6f/plakat_2024_01.webp 750w,\n/static/1d7a6f48e70fdbaa09372642cdcfc472/0671f/plakat_2024_01.webp 1080w,\n/static/1d7a6f48e70fdbaa09372642cdcfc472/7e884/plakat_2024_01.webp 1366w,\n/static/1d7a6f48e70fdbaa09372642cdcfc472/e2c0d/plakat_2024_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt einen Hut und eine Umhängetasche und hat eine Peitsche in der linken Hand. In der rechten Hand hat er einen Gral mit Flügeln, den er begeistert ansieht."}},"speakers":{"edges":[{"node":{"id":"78a4398b-6839-50d3-8f1e-5262def696d6","html":"<p><strong>Christoph Menzel</strong> ist Software-Entwickler mit Leib und Seele und seit 2022 als Head of Mobile & Web Development Teil des inovex Teams. Clean Code und Testautomatisierung sind für ihn zwei fundamentale Bestandteile guter Software-Entwicklung.\nEr unterstützt seine Kunden bei der Optimierung von Entwicklungsprozessen, hält Workshops zu Themen wie Unit Tests, Clean Code oder Continuous Integration & Delivery und gibt sein Wissen aktiv auf Konferenzen, Barcamps oder in Fachartikeln weiter.</p>","frontmatter":{"name":"Christoph Menzel","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/4a93039fc8abcf424a9e4aae04665797/d6138/christoph_menzel.png","srcSet":"/static/4a93039fc8abcf424a9e4aae04665797/15e42/christoph_menzel.png 100w,\n/static/4a93039fc8abcf424a9e4aae04665797/5aead/christoph_menzel.png 200w,\n/static/4a93039fc8abcf424a9e4aae04665797/d6138/christoph_menzel.png 400w,\n/static/4a93039fc8abcf424a9e4aae04665797/b7804/christoph_menzel.png 800w","sizes":"(min-width: 400px) 400px, 100vw"},"sources":[{"srcSet":"/static/4a93039fc8abcf424a9e4aae04665797/d8057/christoph_menzel.webp 100w,\n/static/4a93039fc8abcf424a9e4aae04665797/2e34e/christoph_menzel.webp 200w,\n/static/4a93039fc8abcf424a9e4aae04665797/416c3/christoph_menzel.webp 400w,\n/static/4a93039fc8abcf424a9e4aae04665797/c1587/christoph_menzel.webp 800w","type":"image/webp","sizes":"(min-width: 400px) 400px, 100vw"}]},"width":400,"height":400}}},"twitter_name":null},"fields":{"slug":"/speakers/christoph_menzel/"}}}]},"location":{"fields":{"slug":"/locations/hochschule_campus/"},"frontmatter":{"name":"Hochschule Zittau/Görlitz","number":"1","info":"Haus G2 Raum 0.10","zip":"02826","city":"Görlitz","street":"Brückenstraße"}}},"pageContext":{"slug":"/talks/2024-01-31-flutter/","speakerSlugs":["/speakers/christoph_menzel/"],"locationSlug":"/locations/hochschule_campus/"}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/talks/page-data.json b/page-data/talks/page-data.json index 84d1a6250..fceda6a3f 100644 --- a/page-data/talks/page-data.json +++ b/page-data/talks/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-talks-tsx","path":"/talks/","result":{"data":{"talks":{"edges":[{"node":{"id":"56c1a59c-f16a-5f43-aa33-412cf06ee342","frontmatter":{"title":"Rust (Teil 2)","date":"2024-04-24T00:00:00.000Z","time":null,"virtual":null,"tags":["programmiersprachen","performance","functional-programming","non-jvm-language","security"],"speaker":["konstantin_eger"]},"fields":{"slug":"/talks/2024-04-24-rust2/"}}},{"node":{"id":"97f4123c-3293-532b-8ea6-6b81b355fd92","frontmatter":{"title":"Rust (Teil 1): Einführung in die Sprache","date":"2024-03-20T00:00:00.000Z","time":null,"virtual":null,"tags":["programmiersprachen","performance","functional-programming","non-jvm-language","security"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2024-03-20-rust/"}}},{"node":{"id":"fafd1d08-20ad-5b94-8837-fc066b152f0d","frontmatter":{"title":"Schlanke Architektur-Reviews","date":"2024-02-28T00:00:00.000Z","time":null,"virtual":null,"tags":["architektur"],"speaker":["stefan_zoerner_2"]},"fields":{"slug":"/talks/2024-02-28-architektur-reviews/"}}},{"node":{"id":"cafdb0d7-7218-5608-bd6f-c033864617fe","frontmatter":{"title":"Flutter, der heilige Gral der Cross-Plattform-Entwicklung?!","date":"2024-01-31T00:00:00.000Z","time":null,"virtual":null,"tags":["mobile","frontend","non-jvm-language"],"speaker":["christoph_menzel"]},"fields":{"slug":"/talks/2024-01-31-flutter/"}}},{"node":{"id":"e583793f-bcc5-5f78-8931-3357be0f0ba5","frontmatter":{"title":"What the CRaC - Superfast JVM startup","date":"2023-11-29T00:00:00.000Z","time":null,"virtual":null,"tags":["java","performance","jdk"],"speaker":["gerrit_grunwald"]},"fields":{"slug":"/talks/2023-11-29-crac/"}}},{"node":{"id":"34d30efa-4f03-53e5-8043-fa73d75cbd58","frontmatter":{"title":"AWS-Infrastruktur mit Java erstellen - CDK in Action","date":"2023-10-25T00:00:00.000Z","time":null,"virtual":null,"tags":["java","cloud"],"speaker":["pawel_adaszewski","damian_dudziec"]},"fields":{"slug":"/talks/2023-10-25-aws_cdk_in_action/"}}},{"node":{"id":"4f2a426a-5b98-5f61-8750-46aac0c6c9f3","frontmatter":{"title":"Java 21: Virtuelle Threads","date":"2023-09-27T00:00:00.000Z","time":null,"virtual":null,"tags":["java","performance"],"speaker":["patryk_lewandowski"]},"fields":{"slug":"/talks/2023-09-27-virtual-threads/"}}},{"node":{"id":"8a2e331b-0f3c-52b6-823e-852ecfff1ba4","frontmatter":{"title":"GraalVM 23 – Konzepte und Features","date":"2023-06-28T00:00:00.000Z","time":null,"virtual":null,"tags":["java","jdk","graalvm"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2023-06-28-graalvm_23/"}}},{"node":{"id":"d1758688-b708-5de7-8e59-5646800cc19a","frontmatter":{"title":"Accessibility in the Wild","date":"2023-05-31T00:00:00.000Z","time":null,"virtual":null,"tags":["java","a11y"],"speaker":["daniel_sulyok"]},"fields":{"slug":"/talks/2023-05-31-accessibility_in_the_wild/"}}},{"node":{"id":"79b0298f-b45a-5707-a02c-37ea990349ee","frontmatter":{"title":"ArchUnit: Unit-Tests für deine Java-Architektur","date":"2023-04-26T00:00:00.000Z","time":null,"virtual":null,"tags":["architektur","testen"],"speaker":["roland_weisleder"]},"fields":{"slug":"/talks/2023-04-26-archunit_unit_tests_java_architektur/"}}},{"node":{"id":"f5233192-6039-5c35-9957-b7023ed9e701","frontmatter":{"title":"Spring für architekturinteressierte Entwickler:innen","date":"2023-03-29T00:00:00.000Z","time":"18:30","virtual":null,"tags":["architektur","spring"],"speaker":["oliver_drotbohm"]},"fields":{"slug":"/talks/2023-03-29-spring_fuer_architekturinteressierte_entwickler_innen/"}}},{"node":{"id":"8fa19a6d-7e84-5d43-a513-0644ddb362d6","frontmatter":{"title":"Exception First – Stabilisiere deinen Code mit mehr Exceptions","date":"2023-02-22T00:00:00.000Z","time":null,"virtual":null,"tags":["architektur"],"speaker":["sergej_tihonov"]},"fields":{"slug":"/talks/2023-02-22-exception_first/"}}},{"node":{"id":"5d96ee33-16f6-5b4c-aca8-557c4c24c14e","frontmatter":{"title":"Content Management neu gedacht mit Contentlab","date":"2023-01-25T00:00:00.000Z","time":null,"virtual":null,"tags":["platform","web"],"speaker":["markus_weiland"]},"fields":{"slug":"/talks/2023-01-25-contentlab/"}}},{"node":{"id":"a0820bff-9a0d-5989-b837-8f769fcc2ba6","frontmatter":{"title":"Kundenspezifisches IAM mit Keycloak","date":"2022-11-30T00:00:00.000Z","time":null,"virtual":null,"tags":["security"],"speaker":["daniel_fesenmeyer"]},"fields":{"slug":"/talks/2022-11-30-iam-keycloak/"}}},{"node":{"id":"2b8e8a71-59c4-53fb-baa2-5b6136f7efe8","frontmatter":{"title":"Industrie 4.0? Das JUGt mich!","date":"2022-10-12T00:00:00.000Z","time":null,"virtual":null,"tags":["cloud","iot","industrie4.0","infrastructure"],"speaker":["marco_gotthans"]},"fields":{"slug":"/talks/2022-10-12-indistrie_4.0/"}}},{"node":{"id":"2e3945a5-7de9-5188-b447-47134c218967","frontmatter":{"title":"Hebe deine IoT-Infrastruktur auf das Serverless-Level an","date":"2022-06-22T00:00:00.000Z","time":null,"virtual":null,"tags":["cloud","iot","serverless","infrastructure"],"speaker":["pawel_adaszewski"]},"fields":{"slug":"/talks/2022-06-22-iot-infrastruktur-serverless/"}}},{"node":{"id":"1249d4ab-1401-5936-92b8-3d6dee7f14bb","frontmatter":{"title":"Ultraschnelle Java In-Memory Datenbank-Anwendungen & Microservices mit MicroStream","date":"2021-06-30T00:00:00.000Z","time":null,"virtual":true,"tags":["database","java"],"speaker":["markus_kett","christian_kuemmel"]},"fields":{"slug":"/talks/2021-06-30-microstream/"}}},{"node":{"id":"3c969ad0-d843-57d0-92c4-91340d71851d","frontmatter":{"title":"Web Components","date":"2021-01-27T00:00:00.000Z","time":null,"virtual":true,"tags":["web"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2021-01-27-webcomponents/"}}},{"node":{"id":"fee8a0ec-6360-5446-9bb0-9ecbe5695536","frontmatter":{"title":"Java Secure Coding in der Praxis","date":"2020-11-25T00:00:00.000Z","time":null,"virtual":true,"tags":["java","security"],"speaker":["nico_foerster"]},"fields":{"slug":"/talks/2020-11-25-secure_coding/"}}},{"node":{"id":"0ebf9412-38af-5831-82e8-2b0aa744f924","frontmatter":{"title":"Branching-Modelle","date":"2020-07-22T00:00:00.000Z","time":null,"virtual":true,"tags":["java","git"],"speaker":["hannes_kretschmer"]},"fields":{"slug":"/talks/2020-07-22-branching_modelle/"}}},{"node":{"id":"92ec8c3c-c428-5ca1-bb98-7b8ebac5cdfb","frontmatter":{"title":"JDK 14 und GraalVM im Java Ökosystem","date":"2020-04-29T00:00:00.000Z","time":"18:00","virtual":true,"tags":["java","jdk","graalvm"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2020-04-29-jdk14_graalvm/"}}},{"node":{"id":"c7067e06-b5be-50ec-83d2-9ea30dc14640","frontmatter":{"title":"Innovationsmotor Cloud Foundry!?","date":"2020-01-29T00:00:00.000Z","time":null,"virtual":null,"tags":["cloud"],"speaker":["simon_roloff"]},"fields":{"slug":"/talks/2020-01-27-cloud-foundry/"}}},{"node":{"id":"a0f32bfb-f9fa-5c9c-a70d-ffd93be7d859","frontmatter":{"title":"Advanced BDD Tests","date":"2019-11-28T00:00:00.000Z","time":null,"virtual":null,"tags":["java","testen"],"speaker":["maik_wagner"]},"fields":{"slug":"/talks/2019-11-28-advanced-bdd-tests/"}}},{"node":{"id":"6895717e-291c-581d-8fef-3b5e73bc8369","frontmatter":{"title":"Wie gut kennst Du das Collections Framework?","date":"2019-06-26T00:00:00.000Z","time":null,"virtual":null,"tags":["java"],"speaker":["thilo_frotscher"]},"fields":{"slug":"/talks/2019-06-26-collection-framework/"}}},{"node":{"id":"a5f7b4d5-03e6-588d-9778-62b4b8c44286","frontmatter":{"title":"OAuth 2.0/OpenIDConnect mit Keycloak","date":"2019-05-29T00:00:00.000Z","time":null,"virtual":null,"tags":["java","security"],"speaker":["denny_israel"]},"fields":{"slug":"/talks/2019-05-29-oauth/"}}},{"node":{"id":"9a7e9567-b7fe-59cd-90fe-aec93c90f2af","frontmatter":{"title":"It's a JDK jungle out there - oder wie es mit den neuen Java-Versionen geordnet weitergeht","date":"2019-04-24T00:00:00.000Z","time":null,"virtual":null,"tags":["java","jdk"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2019-04-24_jdk_jungle/"}}},{"node":{"id":"dd2fc902-b2b3-5256-b24b-e09f17f45415","frontmatter":{"title":"Static-Site-Generators","date":"2019-03-27T00:00:00.000Z","time":null,"virtual":null,"tags":["web","javascript"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2019-03-27-static-site-generators/"}}},{"node":{"id":"f37a3185-cf74-5401-9461-328751a5a63e","frontmatter":{"title":"Java Reflection: Classes behind the scenes","date":"2019-02-27T00:00:00.000Z","time":null,"virtual":null,"tags":["java"],"speaker":["erik_jaehne"]},"fields":{"slug":"/talks/2019-02-27_reflection/"}}},{"node":{"id":"6c6f82f3-26da-59ee-a8b6-8c178256b6b7","frontmatter":{"title":"Java APIs - the missing manual","date":"2019-01-31T00:00:00.000Z","time":null,"virtual":null,"tags":["java"],"speaker":["hendrik_ebbers"]},"fields":{"slug":"/talks/2019-01-31_java_apis_missing_manual/"}}},{"node":{"id":"f3a5b0e9-0351-58c1-a827-a5f39196ddee","frontmatter":{"title":"Monadische Transaktionen","date":"2018-11-23T00:00:00.000Z","time":null,"virtual":null,"tags":["functional-programming"],"speaker":["gregor_trefs"]},"fields":{"slug":"/talks/2018-11-23-monadische_transaktionen/"}}},{"node":{"id":"f17a3451-b9a5-5b42-b740-3c15fe9268f5","frontmatter":{"title":"Immutable Data - Unveränderliche Daten im Griff","date":"2018-06-27T00:00:00.000Z","time":null,"virtual":null,"tags":["programmiersprachen","functional-programming"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2018-06-27-immutable-data/"}}},{"node":{"id":"bba11502-e73b-5c5e-9ce7-f4102b1daed5","frontmatter":{"title":"GraphQL","date":"2018-05-30T00:00:00.000Z","time":null,"virtual":null,"tags":["programmiersprachen","web","architektur"],"speaker":["stephan_strehler"]},"fields":{"slug":"/talks/2018-05-30-graphql/"}}},{"node":{"id":"1b2f3079-33fa-52a7-8f63-17ed40feb17e","frontmatter":{"title":"Kotlin","date":"2018-04-25T00:00:00.000Z","time":null,"virtual":null,"tags":["programmiersprachen"],"speaker":["tobias_blaschke"]},"fields":{"slug":"/talks/2018-04-25-kotlin/"}}},{"node":{"id":"dad0ee9f-ea34-5ce1-b7fe-a0e45b09e845","frontmatter":{"title":"Mikro- vs. Makroarchitektur – Spielraum und Spielregeln","date":"2018-03-20T00:00:00.000Z","time":null,"virtual":null,"tags":["architektur"],"speaker":["stefan_zoerner"]},"fields":{"slug":"/talks/2018-03-20-mikro_vs_makroarchitektur/"}}},{"node":{"id":"67f5c805-4443-51af-9f87-0a9aff577dce","frontmatter":{"title":"Entwicklung von Java Applikationen auf der SAP Cloud Platform","date":"2018-02-28T00:00:00.000Z","time":null,"virtual":null,"tags":["cloud"],"speaker":["jens_leuschner","mariusz_zienkiewicz"]},"fields":{"slug":"/talks/2018-02-28-java_auf_sap_cloud/"}}},{"node":{"id":"259289d0-862c-5044-bdb1-38c8d853780d","frontmatter":{"title":"Refactoring to a System of Systems","date":"2018-01-31T00:00:00.000Z","time":null,"virtual":null,"tags":["architektur"],"speaker":["oliver_drotbohm"]},"fields":{"slug":"/talks/2018-01-31-system_of_systems/"}}},{"node":{"id":"92f30cfa-20d5-5aba-8db4-e6e1de091225","frontmatter":{"title":"Neo4j: Panama Papers","date":"2017-11-29T00:00:00.000Z","time":null,"virtual":null,"tags":["database"],"speaker":["michael_hunger"]},"fields":{"slug":"/talks/2017-11-29-neo4j/"}}},{"node":{"id":"fd607630-d7dd-503a-8da0-25a963df4df3","frontmatter":{"title":"Serverless Application - Who the heck needs a Server?","date":"2017-10-25T00:00:00.000Z","time":null,"virtual":null,"tags":["architektur","serverless"],"speaker":["lars_roewekamp"]},"fields":{"slug":"/talks/2017-10-25-serverless/"}}},{"node":{"id":"29eb8b61-615f-5f82-afc0-25abdc540af7","frontmatter":{"title":"Spracherkennung mit Amazon Alexa","date":"2017-08-30T00:00:00.000Z","time":null,"virtual":null,"tags":["ki"],"speaker":["andre_tepper","maik_wagner"]},"fields":{"slug":"/talks/2017-08-30-alexa/"}}},{"node":{"id":"935f30df-c07e-5cfa-9188-3564b4e0fab7","frontmatter":{"title":"React und React-Native: Functional UI Development für Browser und mobile Endgeräte","date":"2017-05-31T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","javascript","web","mobile","functional-programming"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2017-05-31-react/"}}},{"node":{"id":"9ba71f6c-f0dd-5c4e-b70f-3d7ac1ec19ca","frontmatter":{"title":"JDK 9","date":"2017-04-25T00:00:00.000Z","time":null,"virtual":null,"tags":["java","jdk"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2017-04-26-jdk9/"}}},{"node":{"id":"d7528a15-3b10-587c-9543-5c372945763a","frontmatter":{"title":"Angular 2 für Java Entwickler","date":"2017-03-22T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","web","javascript"],"speaker":["sven_hoffmann"]},"fields":{"slug":"/talks/2017-03-22-angular/"}}},{"node":{"id":"f009504d-3327-52e9-8948-6cd4d3ba952e","frontmatter":{"title":"CSS, Aha-Effekte und Perspektiven","date":"2017-02-22T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","web"],"speaker":["uwe_manteuffel"]},"fields":{"slug":"/talks/2017-02-22-css/"}}},{"node":{"id":"cf0f1947-1449-5df5-b546-aa31d25046a7","frontmatter":{"title":"JUnit 5","date":"2017-01-25T00:00:00.000Z","time":null,"virtual":null,"tags":["testen","junit"],"speaker":["stefan_bley"]},"fields":{"slug":"/talks/2017-01-25-junit5/"}}},{"node":{"id":"c67796c2-6477-5658-a163-1de4870f548e","frontmatter":{"title":"Inside JVM","date":"2016-11-30T00:00:00.000Z","time":null,"virtual":null,"tags":["java","jvm"],"speaker":["michael_wiedeking"]},"fields":{"slug":"/talks/2016-11-30-inside_jvm/"}}},{"node":{"id":"a4cfc466-b5f6-5b10-be7e-13c92d3ab2f7","frontmatter":{"title":"Kommunikationskultur im Softwareentwicklungsprozess","date":"2016-09-21T00:00:00.000Z","time":null,"virtual":null,"tags":["testen","softwareentwicklung"],"speaker":["daniel_sernow"]},"fields":{"slug":"/talks/2016-09-21-kommunikationskultur/"}}},{"node":{"id":"e14cd50a-435a-5855-ae06-c0d1eb30d8af","frontmatter":{"title":"Testwerkzeuge für JavaFX","date":"2016-07-27T00:00:00.000Z","time":null,"virtual":null,"tags":["javafx","testen"],"speaker":["kay_grebenstein"]},"fields":{"slug":"/talks/2016-07-27-testwerkzeuge_javafx/"}}},{"node":{"id":"4dc84ec4-23f6-5438-a2e6-b5944dc868c9","frontmatter":{"title":"Performance-Analyse mit inspectIT","date":"2016-05-25T00:00:00.000Z","time":null,"virtual":null,"tags":["performance","monitoring"],"speaker":["mario_mann"]},"fields":{"slug":"/talks/2016-05-25-performance-analyse-inspectit/"}}},{"node":{"id":"7d996009-4040-5330-a46c-5877cc5668af","frontmatter":{"title":"Haskell und Frege","date":"2016-03-30T00:00:00.000Z","time":null,"virtual":null,"tags":["programmiersprachen","functional-programming","non-jvm-language"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2016-03-30-haskell_frege/"}}},{"node":{"id":"79835d68-651b-57a2-8c75-042baeba5b30","frontmatter":{"title":"Funktionale Programmierung mit Java","date":"2016-01-27T00:00:00.000Z","time":null,"virtual":null,"tags":["java","functional-programming"],"speaker":["manuel_mauky","max_wielsch"]},"fields":{"slug":"/talks/2016-01-27-functional_java/"}}},{"node":{"id":"43538367-514c-5009-b9eb-0f730f52bfd9","frontmatter":{"title":"JavaFX auf Mobile","date":"2015-11-25T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","javafx","mobile","android"],"speaker":["stefan_heinze","stefan_barth"]},"fields":{"slug":"/talks/2015-11-25-javafx-mobile/"}}},{"node":{"id":"eff228ab-8f49-5773-905c-fee144de429f","frontmatter":{"title":"Guava","date":"2015-09-30T00:00:00.000Z","time":null,"virtual":null,"tags":["java"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2015-09-30-guava/"}}},{"node":{"id":"a3c8bbba-0df8-503b-a702-21589e288614","frontmatter":{"title":"Regelbasierte Systeme mit JBoss Drools","date":"2015-07-29T00:00:00.000Z","time":null,"virtual":null,"tags":["dsl"],"speaker":["paul_weinhold"]},"fields":{"slug":"/talks/2015-07-29-drools/"}}},{"node":{"id":"1faa8cf7-10f9-54d5-a480-6d2e44896011","frontmatter":{"title":"Fortgeschrittene Android-Entwicklung","date":"2015-05-27T00:00:00.000Z","time":null,"virtual":null,"tags":["mobile","android"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2015-05-27-advanced-android/"}}},{"node":{"id":"d853656a-6dac-5d38-b25a-c241c13cbadb","frontmatter":{"title":"Einstieg in die Android-App-Entwicklung","date":"2015-03-25T00:00:00.000Z","time":null,"virtual":null,"tags":["android","mobile"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2015-03-25-android/"}}},{"node":{"id":"d88d92c2-cf39-5768-b424-1b211f08c8e8","frontmatter":{"title":"MoSKito - Monitoring Framework","date":"2015-01-28T00:00:00.000Z","time":null,"virtual":null,"tags":["web","monitoring"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2015-01-28-moskito/"}}},{"node":{"id":"2fdb9675-dfcf-55b8-899d-8e6d04242b4a","frontmatter":{"title":"Model-View-*: UI-Design-Patterns im Detail","date":"2014-12-03T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","patterns"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2014-12-03-model-view-star/"}}},{"node":{"id":"5840ef2b-08af-57a6-81b0-7a69c1d1beb0","frontmatter":{"title":"Infrastructure as Code","date":"2014-10-29T00:00:00.000Z","time":null,"virtual":null,"tags":["devops"],"speaker":["bruno_devic"]},"fields":{"slug":"/talks/2014-10-29-infrastructure_as_code/"}}},{"node":{"id":"ded25abd-db1f-5b9b-9cd2-8c905bc15ab0","frontmatter":{"title":"Solr - Eine Enterprise-Suchmaschine","date":"2014-09-24T00:00:00.000Z","time":null,"virtual":null,"tags":["database"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2014-09-24-solr/"}}},{"node":{"id":"bd5b8775-c069-521b-803e-4a62493c8247","frontmatter":{"title":"Java8 - Streams und Lambdas","date":"2014-07-30T00:00:00.000Z","time":null,"virtual":null,"tags":["java","functional-programming"],"speaker":["paul_weinhold"]},"fields":{"slug":"/talks/2014-07-30-java8-streams/"}}},{"node":{"id":"09dfae71-65f1-52de-81a7-e0746238f502","frontmatter":{"title":"Hazelcast - Synchronisation von In-Memory-Daten","date":"2014-05-28T00:00:00.000Z","time":null,"virtual":null,"tags":["cluster"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2014-05-28-hazelcast/"}}},{"node":{"id":"27050ce5-4d13-504b-90e0-8a4c3f2e6514","frontmatter":{"title":"Besser lesbare Unittests mit AssertJ","date":"2014-04-02T00:00:00.000Z","time":null,"virtual":null,"tags":["junit","testen"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2014-04-02-assertj/"}}},{"node":{"id":"f39e922a-28fe-514b-838c-4b89e4ec981e","frontmatter":{"title":"Tool-Integration im Softwareentwicklungsprozess","date":"2014-01-29T00:00:00.000Z","time":null,"virtual":null,"tags":["integration","platform","softwareentwicklung"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2014-01-29-opendip/"}}},{"node":{"id":"a8a6dc9d-ed19-56f9-9fd3-8c83531f61d0","frontmatter":{"title":"Performance-Optimierung im Web","date":"2013-11-27T00:00:00.000Z","time":null,"virtual":null,"tags":["web","performance"],"speaker":["maik_wagner"]},"fields":{"slug":"/talks/2013-11-27-web-performance/"}}},{"node":{"id":"fb329b7c-5599-55bf-85c5-54a1a6b821bb","frontmatter":{"title":"Modernes App-Design am Beispiel von Android","date":"2013-10-30T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","mobile","android"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2013-10-30-app-design/"}}},{"node":{"id":"6cde30c0-930e-5a8f-9a80-e0bfc34878a6","frontmatter":{"title":"Persona - Werkzeug für die GUI-Entwicklung","date":"2013-07-31T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","softwareentwicklung"],"speaker":["marlene_knoche"]},"fields":{"slug":"/talks/2013-07-31-persona/"}}},{"node":{"id":"df78a5f7-4e2e-5f4d-83dd-6ad6432ef93e","frontmatter":{"title":"JRuby - Ruby auf der Java VM","date":"2013-05-29T00:00:00.000Z","time":null,"virtual":null,"tags":["programmiersprachen"],"speaker":["sebastian_schmeck"]},"fields":{"slug":"/talks/2013-05-29-jruby/"}}},{"node":{"id":"a13fb811-969f-5eb3-91f8-c71970bff046","frontmatter":{"title":"Lego NXT-Roboter mit Java programmieren","date":"2013-03-27T00:00:00.000Z","time":null,"virtual":null,"tags":["hardware","roboter"],"speaker":["erik_jaehne"]},"fields":{"slug":"/talks/2013-03-27-nxt_lego/"}}},{"node":{"id":"90157438-0e03-57ef-870f-701aac0b6210","frontmatter":{"title":"JavaFX 2","date":"2012-11-28T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","javafx"],"speaker":["alexander_casall","michael_thiele"]},"fields":{"slug":"/talks/2012-11-28-javafx2/"}}},{"node":{"id":"c044b319-accb-5fca-8339-9f01293583e6","frontmatter":{"title":"JSR-303 BeanValidation","date":"2012-09-26T00:00:00.000Z","time":null,"virtual":null,"tags":["javaee"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2012-09-26-bean_validation/"}}},{"node":{"id":"09982d70-f13f-5626-8a14-2d8d92abf724","frontmatter":{"title":"Selenium/Webdriver in der Praxis","date":"2012-07-25T00:00:00.000Z","time":null,"virtual":null,"tags":["web","frontend","testen"],"speaker":["maik_wagner"]},"fields":{"slug":"/talks/2012-07-25-selenium_praxis/"}}},{"node":{"id":"5e4ab94f-157d-5292-864d-57606942e1ff","frontmatter":{"title":"GridGain - Parallel Computing und Data Grid Anwendungen","date":"2012-06-27T00:00:00.000Z","time":null,"virtual":null,"tags":["cluster"],"speaker":["mario_reichel"]},"fields":{"slug":"/talks/2012-06-27-gridgain/"}}},{"node":{"id":"88119287-b9a3-5745-bd33-a7735cb39b4b","frontmatter":{"title":"JMonkeyEngine 3 - 3D-Applikationen in Java","date":"2012-05-30T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend"],"speaker":["hans_markwart"]},"fields":{"slug":"/talks/2012-05-30-jmonkey-engine3/"}}},{"node":{"id":"fa3c70d9-f376-541d-be0b-ca24e0ac6b89","frontmatter":{"title":"Maven","date":"2012-04-25T00:00:00.000Z","time":null,"virtual":null,"tags":["build-management"],"speaker":["thomas_storch"]},"fields":{"slug":"/talks/2012-04-25-maven/"}}},{"node":{"id":"bd3b256f-6609-52bb-9d05-5a57482e4f42","frontmatter":{"title":"Webtests mit Selenium","date":"2012-03-28T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","web","testen"],"speaker":["marcus_doering"]},"fields":{"slug":"/talks/2012-03-28-webtests/"}}},{"node":{"id":"7881a4dc-ab76-5124-b9b1-dc13c982a250","frontmatter":{"title":"Webentwicklung mit Scala","date":"2012-02-29T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","web","programmiersprachen"],"speaker":["stefan_bradl"]},"fields":{"slug":"/talks/2012-02-29-scala_webapps/"}}},{"node":{"id":"67e2091a-15eb-56f9-bb65-586c4b2a809d","frontmatter":{"title":"Advanced JSF und CDI","date":"2012-01-25T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","web","javaee","jsf"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2012-01-25-jsf_cdi_advanced/"}}},{"node":{"id":"e3831714-860d-5867-9952-89ecfe8b81dd","frontmatter":{"title":"JPA - Hibernate","date":"2012-01-04T00:00:00.000Z","time":null,"virtual":null,"tags":["database","javaee"],"speaker":["marko_modsching"]},"fields":{"slug":"/talks/2012-01-01-hibernate/"}}},{"node":{"id":"11771522-730a-5373-b0f8-585c9c4f52c1","frontmatter":{"title":"JavaServer Faces 2 und CDI","date":"2011-11-30T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","web","javaee","jsf"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2011-11-30-jsf-cdi/"}}},{"node":{"id":"c40cc73f-d2be-5960-b15f-87e4b39429c8","frontmatter":{"title":"Android","date":"2011-10-26T00:00:00.000Z","time":null,"virtual":null,"tags":["mobile","android"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2011-10-26-android/"}}},{"node":{"id":"9bcc98b0-826d-5513-b828-008dbf11c915","frontmatter":{"title":"JDOM","date":"2011-09-28T00:00:00.000Z","time":null,"virtual":null,"tags":["xml"],"speaker":["mark_ziener"]},"fields":{"slug":"/talks/2011-09-28-jdom/"}}},{"node":{"id":"6cca53f4-9edd-55ac-a225-75c94aa0dd8b","frontmatter":{"title":"Single Sign-On mit JAAS und JGSS","date":"2011-09-28T00:00:00.000Z","time":null,"virtual":null,"tags":["security"],"speaker":["mario_reichel"]},"fields":{"slug":"/talks/2011-09-28-single-sign-on/"}}},{"node":{"id":"67828855-f7d8-5d6d-9d90-7c3760bb7705","frontmatter":{"title":"Testen - Patterns und Best Practices","date":"2011-08-31T00:00:00.000Z","time":null,"virtual":null,"tags":["testen","patterns"],"speaker":["marko_modsching"]},"fields":{"slug":"/talks/2011-08-31-testen/"}}},{"node":{"id":"603cc23a-9840-5867-b78d-99fbd489d472","frontmatter":{"title":"Scala","date":"2011-07-27T00:00:00.000Z","time":null,"virtual":null,"tags":["programmiersprachen"],"speaker":["stefan_bradl"]},"fields":{"slug":"/talks/2011-07-27-scala/"}}},{"node":{"id":"4bb73d33-af61-5eac-a5fa-d075fa8660f5","frontmatter":{"title":"TestNG","date":"2011-07-27T00:00:00.000Z","time":null,"virtual":null,"tags":["testen"],"speaker":["marcus_doering"]},"fields":{"slug":"/talks/2011-07-27-testng/"}}},{"node":{"id":"5c110017-4815-5ac0-a4e3-a75e759080ac","frontmatter":{"title":"JavaEE und JBoss","date":"2011-06-29T00:00:00.000Z","time":null,"virtual":null,"tags":["javaee"],"speaker":["michael_foerster"]},"fields":{"slug":"/talks/2011-06-29-javaee_jboss/"}}},{"node":{"id":"54c98b64-64a8-515b-a02c-8a54c51dcca1","frontmatter":{"title":"Google Guice","date":"2011-05-27T00:00:00.000Z","time":null,"virtual":null,"tags":["patterns"],"speaker":["robert_wirbs"]},"fields":{"slug":"/talks/2011-05-27-guice/"}}},{"node":{"id":"6d1edf0b-d32b-5274-baa2-34c7f27786b8","frontmatter":{"title":"GWT - Google Web Toolkit","date":"2011-04-27T00:00:00.000Z","time":null,"virtual":null,"tags":["web","frontend"],"speaker":["ingo_koerner"]},"fields":{"slug":"/talks/2011-04-27-gwt/"}}},{"node":{"id":"2d5fb6de-57a5-54c0-9485-b2ea5bb67a81","frontmatter":{"title":"OSGi mit SpringDM","date":"2011-04-27T00:00:00.000Z","time":null,"virtual":null,"tags":null,"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2011-04-27-osgi_springdm/"}}},{"node":{"id":"b0252f0d-2a16-5085-913a-7fb7bf5364a6","frontmatter":{"title":"EasyMock","date":"2011-03-22T00:00:00.000Z","time":null,"virtual":null,"tags":["testen"],"speaker":["richard_hauswald"]},"fields":{"slug":"/talks/2011-03-22-easymock/"}}},{"node":{"id":"c92b2d55-0d33-50f7-a73c-de8f55b7d75e","frontmatter":{"title":"Jenkins/Hudson","date":"2011-03-22T00:00:00.000Z","time":null,"virtual":null,"tags":["build-management"],"speaker":["stefan_scheumann"]},"fields":{"slug":"/talks/2011-03-22-jenkins/"}}}]},"speakers":{"edges":[{"node":{"id":"ff0ef063-2c62-5f5c-8e8a-3fea00727337","fields":{"slug":"/speakers/alexander_casall/"},"frontmatter":{"name":"Alexander Casall"}}},{"node":{"id":"2fce745c-9aae-524d-a24b-d39e282689b0","fields":{"slug":"/speakers/andre_tepper/"},"frontmatter":{"name":"Andre Tepper"}}},{"node":{"id":"83212ced-9134-55d1-bd90-46f149e95898","fields":{"slug":"/speakers/bruno_devic/"},"frontmatter":{"name":"Bruno Devic"}}},{"node":{"id":"02a5cfde-2b00-5350-a999-f314d4c0ee1e","fields":{"slug":"/speakers/christian_kuemmel/"},"frontmatter":{"name":"Christian Kümmel"}}},{"node":{"id":"78a4398b-6839-50d3-8f1e-5262def696d6","fields":{"slug":"/speakers/christoph_menzel/"},"frontmatter":{"name":"Christoph Menzel"}}},{"node":{"id":"7640e853-d184-5946-a052-be3b7deaa867","fields":{"slug":"/speakers/damian_dudziec/"},"frontmatter":{"name":"Damian Dudziec"}}},{"node":{"id":"2adfcaf8-baac-58d8-ac17-2e9e978bea1b","fields":{"slug":"/speakers/daniel_fesenmeyer/"},"frontmatter":{"name":"Daniel Fesenmeyer"}}},{"node":{"id":"2c287f6d-72f9-5142-8d7e-8cb0049f7898","fields":{"slug":"/speakers/daniel_sernow/"},"frontmatter":{"name":"Daniel Sernow"}}},{"node":{"id":"e86d9d23-67e9-58de-853e-30051fb1eabb","fields":{"slug":"/speakers/daniel_sulyok/"},"frontmatter":{"name":"Dániel Sulyok"}}},{"node":{"id":"770e92e8-4326-5909-ace2-ddfcc7deae8b","fields":{"slug":"/speakers/denny_israel/"},"frontmatter":{"name":"Denny Israel"}}},{"node":{"id":"074397e2-c590-59cc-8c29-413f81c9e045","fields":{"slug":"/speakers/erik_jaehne/"},"frontmatter":{"name":"Erik Jähne"}}},{"node":{"id":"f13237e6-5775-5e35-bc7e-7ab125cff716","fields":{"slug":"/speakers/gerrit_grunwald/"},"frontmatter":{"name":"Gerrit Grunwald"}}},{"node":{"id":"f8ac41fc-2d52-5c52-8a5b-cc148abad020","fields":{"slug":"/speakers/gregor_trefs/"},"frontmatter":{"name":"Gregor Trefs"}}},{"node":{"id":"1dd06ad5-50e3-58f4-b8a3-30ffdf3c4cc0","fields":{"slug":"/speakers/hannes_kretschmer/"},"frontmatter":{"name":"Hannes Kretschmer"}}},{"node":{"id":"35a72c9a-cbdf-5f39-8b2a-1813b7e94cc7","fields":{"slug":"/speakers/hans_markwart/"},"frontmatter":{"name":"Hans Markwart"}}},{"node":{"id":"93129b19-f730-5e77-879a-58c8e08a198a","fields":{"slug":"/speakers/hendrik_ebbers/"},"frontmatter":{"name":"Hendrik Ebbers"}}},{"node":{"id":"1f477a08-7805-5bf3-984b-4afec0b2cd45","fields":{"slug":"/speakers/jens_leuschner/"},"frontmatter":{"name":"Jens Leuschner"}}},{"node":{"id":"44493f6a-f9c2-527b-a086-fed0da68f1c4","fields":{"slug":"/speakers/ingo_koerner/"},"frontmatter":{"name":"Ingo Körner"}}},{"node":{"id":"d857c285-3a43-5120-8453-7b2f87424152","fields":{"slug":"/speakers/kay_grebenstein/"},"frontmatter":{"name":"Kay Grebenstein"}}},{"node":{"id":"abafb571-eb5b-5194-818a-f2b18a1382c9","fields":{"slug":"/speakers/konstantin_eger/"},"frontmatter":{"name":"Konstantin Eger"}}},{"node":{"id":"184d7622-4aae-50bd-a14c-f44f4db9c575","fields":{"slug":"/speakers/lars_roewekamp/"},"frontmatter":{"name":"Lars Röwekamp"}}},{"node":{"id":"fee4bf04-1e31-54b1-b809-c3d510531b5c","fields":{"slug":"/speakers/maik_wagner/"},"frontmatter":{"name":"Maik Wagner"}}},{"node":{"id":"c48b140e-258d-5030-8fcc-70fedc7dd5b4","fields":{"slug":"/speakers/manuel_mauky/"},"frontmatter":{"name":"Manuel Mauky"}}},{"node":{"id":"83b497c1-a32d-5e39-a543-439154b750d9","fields":{"slug":"/speakers/marco_gotthans/"},"frontmatter":{"name":"Marco Gotthans"}}},{"node":{"id":"d0f25d9d-4106-5691-a1b2-28cbe4275e46","fields":{"slug":"/speakers/marcus_doering/"},"frontmatter":{"name":"Marcus Döring"}}},{"node":{"id":"9e00ea79-267c-5db0-9e41-f5d872b4c595","fields":{"slug":"/speakers/mario_mann/"},"frontmatter":{"name":"Mario Mann"}}},{"node":{"id":"d08d4526-e68f-5a1d-8a78-6c5a99cbe1e4","fields":{"slug":"/speakers/mario_reichel/"},"frontmatter":{"name":"Mario Reichel"}}},{"node":{"id":"678c9f26-730c-5aff-999b-bd4eb93dc92f","fields":{"slug":"/speakers/mariusz_zienkiewicz/"},"frontmatter":{"name":"Mariusz Zienkiewicz"}}},{"node":{"id":"5834f4d7-e0a3-505c-b1d0-81a37f5144f1","fields":{"slug":"/speakers/mark_ziener/"},"frontmatter":{"name":"Mark Ziener"}}},{"node":{"id":"74ed9e96-8a2b-59cb-8642-93f5dec4d7b3","fields":{"slug":"/speakers/marko_modsching/"},"frontmatter":{"name":"Marko Modsching"}}},{"node":{"id":"af5cd69a-023f-577f-9cb1-5f5185d0848d","fields":{"slug":"/speakers/markus_kett/"},"frontmatter":{"name":"Markus Kett"}}},{"node":{"id":"b0aa71a0-d2a3-5a2a-8831-2137b43e583d","fields":{"slug":"/speakers/markus_weiland/"},"frontmatter":{"name":"Markus Weiland"}}},{"node":{"id":"2376b174-04f1-5b56-b72f-8201a1dfb2a5","fields":{"slug":"/speakers/marlene_knoche/"},"frontmatter":{"name":"Marlene Knoche"}}},{"node":{"id":"db05ced3-0480-51fe-83be-d0149d94da93","fields":{"slug":"/speakers/max_wielsch/"},"frontmatter":{"name":"Max Wielsch"}}},{"node":{"id":"f042c1af-7b71-5d8f-ab98-aa158cb2a418","fields":{"slug":"/speakers/michael_foerster/"},"frontmatter":{"name":"Michael Förster"}}},{"node":{"id":"21c7def1-78a4-52e2-bf13-b3a646e3215d","fields":{"slug":"/speakers/michael_hunger/"},"frontmatter":{"name":"Michael Hunger"}}},{"node":{"id":"fc3d2a4f-3ab8-5fc9-aa19-09fc69dd1385","fields":{"slug":"/speakers/michael_thiele/"},"frontmatter":{"name":"Michael Thiele"}}},{"node":{"id":"917f2c35-500a-5f14-bfb1-d99f287d2afe","fields":{"slug":"/speakers/michael_wiedeking/"},"frontmatter":{"name":"Michael Wiedeking"}}},{"node":{"id":"543c0c0e-1ed8-519c-a2d3-544f86c7b5d2","fields":{"slug":"/speakers/nico_foerster/"},"frontmatter":{"name":"Nico Förster"}}},{"node":{"id":"8402dc7e-d767-5b77-8ca3-ff9c967248fb","fields":{"slug":"/speakers/oliver_drotbohm/"},"frontmatter":{"name":"Oliver Drotbohm"}}},{"node":{"id":"c8fa437e-3c34-56b6-b03b-c67c1370f111","fields":{"slug":"/speakers/patryk_lewandowski/"},"frontmatter":{"name":"Patryk Lewandowski"}}},{"node":{"id":"339b9441-8737-533f-aefe-b31bbb6663f4","fields":{"slug":"/speakers/paul_weinhold/"},"frontmatter":{"name":"Paul Weinhold"}}},{"node":{"id":"e52c08b9-aaed-5384-920c-d08af9991f5b","fields":{"slug":"/speakers/pawel_adaszewski/"},"frontmatter":{"name":"Pawel Adaszewski"}}},{"node":{"id":"304f3f2c-44ca-5275-9f73-5b789038daf0","fields":{"slug":"/speakers/richard_hauswald/"},"frontmatter":{"name":"Richard Hauswald"}}},{"node":{"id":"18051d64-e79b-5ad5-bdc3-0b0f822ae644","fields":{"slug":"/speakers/robert_wirbs/"},"frontmatter":{"name":"Robert Wirbs"}}},{"node":{"id":"54a0f9fe-80ab-52ba-9aea-e3f2a5dd045f","fields":{"slug":"/speakers/roland_weisleder/"},"frontmatter":{"name":"Roland Weisleder"}}},{"node":{"id":"cb2ea0b2-b790-5204-9f7b-e1cd0f0583c1","fields":{"slug":"/speakers/sebastian_schmeck/"},"frontmatter":{"name":"Sebastian Schmeck"}}},{"node":{"id":"87a83879-1b5e-50f5-9829-2699d9a01da5","fields":{"slug":"/speakers/sergej_tihonov/"},"frontmatter":{"name":"Sergej Tihonov"}}},{"node":{"id":"4f81ccbd-2893-5804-a68a-04c6b8c20f75","fields":{"slug":"/speakers/simon_roloff/"},"frontmatter":{"name":"Simon Roloff"}}},{"node":{"id":"a26cc991-7e1d-5caa-8926-7a52b0fa93e6","fields":{"slug":"/speakers/stefan_barth/"},"frontmatter":{"name":"Stefan Barth"}}},{"node":{"id":"63ab1902-d259-53c5-99ea-3564ac4ce81a","fields":{"slug":"/speakers/stefan_bley/"},"frontmatter":{"name":"Stefan Bley"}}},{"node":{"id":"dd47473a-7d7f-54fa-9daa-e062ae1c9bef","fields":{"slug":"/speakers/stefan_bradl/"},"frontmatter":{"name":"Stefan Bradl"}}},{"node":{"id":"d4e04ddf-59bb-542f-b6bc-58e5cf77667d","fields":{"slug":"/speakers/stefan_heinze/"},"frontmatter":{"name":"Stefan Heinze"}}},{"node":{"id":"bd7c2828-9149-5013-8dca-331d23b9953f","fields":{"slug":"/speakers/stefan_scheumann/"},"frontmatter":{"name":"Stefan Scheumann"}}},{"node":{"id":"7b63d414-09ef-5e63-bda2-a3259175090c","fields":{"slug":"/speakers/stefan_zoerner/"},"frontmatter":{"name":"Stefan Zörner"}}},{"node":{"id":"09a6b265-f443-579a-ae78-9188aaeca6ca","fields":{"slug":"/speakers/stefan_zoerner_2/"},"frontmatter":{"name":"Stefan Zörner"}}},{"node":{"id":"39cc0655-cd1a-540e-9553-b9fa67e895cc","fields":{"slug":"/speakers/steffen_seidler/"},"frontmatter":{"name":"Steffen Seidler"}}},{"node":{"id":"a8d3dca8-b87d-568d-8e70-dcac046e98d5","fields":{"slug":"/speakers/stephan_strehler/"},"frontmatter":{"name":"Stephan Strehler"}}},{"node":{"id":"9a66bc44-37f7-527c-9f45-6c0b1dd74510","fields":{"slug":"/speakers/thilo_frotscher/"},"frontmatter":{"name":"Thilo Frotscher"}}},{"node":{"id":"aefd4a1f-a4ed-5e51-a713-1da570fcd2ee","fields":{"slug":"/speakers/sven_hoffmann/"},"frontmatter":{"name":"Sven Hoffmann"}}},{"node":{"id":"3cab3c25-9f08-5d29-a7c2-3e2b0d414c16","fields":{"slug":"/speakers/thomas_storch/"},"frontmatter":{"name":"Thomas Storch"}}},{"node":{"id":"9776c4f1-e686-5cf2-b042-939797958362","fields":{"slug":"/speakers/tobias_blaschke/"},"frontmatter":{"name":"Tobias Blaschke"}}},{"node":{"id":"91d3bc22-4970-51b8-90cf-7583f2dc5ff5","fields":{"slug":"/speakers/uwe_manteuffel/"},"frontmatter":{"name":"Uwe Manteuffel"}}},{"node":{"id":"53f5069e-fb7c-5f5d-b967-b5df3c1df975","fields":{"slug":"/speakers/wolfgang_weigend/"},"frontmatter":{"name":"Wolfgang Weigend"}}}]}},"pageContext":{}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-talks-tsx","path":"/talks/","result":{"data":{"talks":{"edges":[{"node":{"id":"56c1a59c-f16a-5f43-aa33-412cf06ee342","frontmatter":{"title":"Rust (Teil 2)","date":"2024-04-24T00:00:00.000Z","time":null,"virtual":null,"tags":["programmiersprachen","performance","functional-programming","non-jvm-language","security"],"speaker":["konstantin_eger"]},"fields":{"slug":"/talks/2024-04-24-rust2/"}}},{"node":{"id":"97f4123c-3293-532b-8ea6-6b81b355fd92","frontmatter":{"title":"Rust (Teil 1): Einführung in die Sprache","date":"2024-03-20T00:00:00.000Z","time":null,"virtual":null,"tags":["programmiersprachen","performance","functional-programming","non-jvm-language","security"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2024-03-20-rust/"}}},{"node":{"id":"fafd1d08-20ad-5b94-8837-fc066b152f0d","frontmatter":{"title":"Schlanke Architektur-Reviews","date":"2024-02-28T00:00:00.000Z","time":null,"virtual":null,"tags":["architektur"],"speaker":["stefan_zoerner_2"]},"fields":{"slug":"/talks/2024-02-28-architektur-reviews/"}}},{"node":{"id":"cafdb0d7-7218-5608-bd6f-c033864617fe","frontmatter":{"title":"Flutter, der heilige Gral der Cross-Plattform-Entwicklung?!","date":"2024-01-31T00:00:00.000Z","time":null,"virtual":null,"tags":["mobile","frontend","non-jvm-language"],"speaker":["christoph_menzel"]},"fields":{"slug":"/talks/2024-01-31-flutter/"}}},{"node":{"id":"e583793f-bcc5-5f78-8931-3357be0f0ba5","frontmatter":{"title":"What the CRaC - Superfast JVM startup","date":"2023-11-29T00:00:00.000Z","time":null,"virtual":null,"tags":["java","performance","jdk"],"speaker":["gerrit_grunwald"]},"fields":{"slug":"/talks/2023-11-29-crac/"}}},{"node":{"id":"34d30efa-4f03-53e5-8043-fa73d75cbd58","frontmatter":{"title":"AWS-Infrastruktur mit Java erstellen - CDK in Action","date":"2023-10-25T00:00:00.000Z","time":null,"virtual":null,"tags":["java","cloud"],"speaker":["pawel_adaszewski","damian_dudziec"]},"fields":{"slug":"/talks/2023-10-25-aws_cdk_in_action/"}}},{"node":{"id":"4f2a426a-5b98-5f61-8750-46aac0c6c9f3","frontmatter":{"title":"Java 21: Virtuelle Threads","date":"2023-09-27T00:00:00.000Z","time":null,"virtual":null,"tags":["java","performance"],"speaker":["patryk_lewandowski"]},"fields":{"slug":"/talks/2023-09-27-virtual-threads/"}}},{"node":{"id":"8a2e331b-0f3c-52b6-823e-852ecfff1ba4","frontmatter":{"title":"GraalVM 23 – Konzepte und Features","date":"2023-06-28T00:00:00.000Z","time":null,"virtual":null,"tags":["java","jdk","graalvm"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2023-06-28-graalvm_23/"}}},{"node":{"id":"d1758688-b708-5de7-8e59-5646800cc19a","frontmatter":{"title":"Accessibility in the Wild","date":"2023-05-31T00:00:00.000Z","time":null,"virtual":null,"tags":["java","a11y"],"speaker":["daniel_sulyok"]},"fields":{"slug":"/talks/2023-05-31-accessibility_in_the_wild/"}}},{"node":{"id":"79b0298f-b45a-5707-a02c-37ea990349ee","frontmatter":{"title":"ArchUnit: Unit-Tests für deine Java-Architektur","date":"2023-04-26T00:00:00.000Z","time":null,"virtual":null,"tags":["architektur","testen"],"speaker":["roland_weisleder"]},"fields":{"slug":"/talks/2023-04-26-archunit_unit_tests_java_architektur/"}}},{"node":{"id":"f5233192-6039-5c35-9957-b7023ed9e701","frontmatter":{"title":"Spring für architekturinteressierte Entwickler:innen","date":"2023-03-29T00:00:00.000Z","time":"18:30","virtual":null,"tags":["architektur","spring"],"speaker":["oliver_drotbohm"]},"fields":{"slug":"/talks/2023-03-29-spring_fuer_architekturinteressierte_entwickler_innen/"}}},{"node":{"id":"8fa19a6d-7e84-5d43-a513-0644ddb362d6","frontmatter":{"title":"Exception First – Stabilisiere deinen Code mit mehr Exceptions","date":"2023-02-22T00:00:00.000Z","time":null,"virtual":null,"tags":["architektur"],"speaker":["sergej_tihonov"]},"fields":{"slug":"/talks/2023-02-22-exception_first/"}}},{"node":{"id":"5d96ee33-16f6-5b4c-aca8-557c4c24c14e","frontmatter":{"title":"Content Management neu gedacht mit Contentlab","date":"2023-01-25T00:00:00.000Z","time":null,"virtual":null,"tags":["platform","web"],"speaker":["markus_weiland"]},"fields":{"slug":"/talks/2023-01-25-contentlab/"}}},{"node":{"id":"a0820bff-9a0d-5989-b837-8f769fcc2ba6","frontmatter":{"title":"Kundenspezifisches IAM mit Keycloak","date":"2022-11-30T00:00:00.000Z","time":null,"virtual":null,"tags":["security"],"speaker":["daniel_fesenmeyer"]},"fields":{"slug":"/talks/2022-11-30-iam-keycloak/"}}},{"node":{"id":"2b8e8a71-59c4-53fb-baa2-5b6136f7efe8","frontmatter":{"title":"Industrie 4.0? Das JUGt mich!","date":"2022-10-12T00:00:00.000Z","time":null,"virtual":null,"tags":["cloud","iot","industrie4.0","infrastructure"],"speaker":["marco_gotthans"]},"fields":{"slug":"/talks/2022-10-12-indistrie_4.0/"}}},{"node":{"id":"2e3945a5-7de9-5188-b447-47134c218967","frontmatter":{"title":"Hebe deine IoT-Infrastruktur auf das Serverless-Level an","date":"2022-06-22T00:00:00.000Z","time":null,"virtual":null,"tags":["cloud","iot","serverless","infrastructure"],"speaker":["pawel_adaszewski"]},"fields":{"slug":"/talks/2022-06-22-iot-infrastruktur-serverless/"}}},{"node":{"id":"1249d4ab-1401-5936-92b8-3d6dee7f14bb","frontmatter":{"title":"Ultraschnelle Java In-Memory Datenbank-Anwendungen & Microservices mit MicroStream","date":"2021-06-30T00:00:00.000Z","time":null,"virtual":true,"tags":["database","java"],"speaker":["markus_kett","christian_kuemmel"]},"fields":{"slug":"/talks/2021-06-30-microstream/"}}},{"node":{"id":"3c969ad0-d843-57d0-92c4-91340d71851d","frontmatter":{"title":"Web Components","date":"2021-01-27T00:00:00.000Z","time":null,"virtual":true,"tags":["web"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2021-01-27-webcomponents/"}}},{"node":{"id":"fee8a0ec-6360-5446-9bb0-9ecbe5695536","frontmatter":{"title":"Java Secure Coding in der Praxis","date":"2020-11-25T00:00:00.000Z","time":null,"virtual":true,"tags":["java","security"],"speaker":["nico_foerster"]},"fields":{"slug":"/talks/2020-11-25-secure_coding/"}}},{"node":{"id":"0ebf9412-38af-5831-82e8-2b0aa744f924","frontmatter":{"title":"Branching-Modelle","date":"2020-07-22T00:00:00.000Z","time":null,"virtual":true,"tags":["java","git"],"speaker":["hannes_kretschmer"]},"fields":{"slug":"/talks/2020-07-22-branching_modelle/"}}},{"node":{"id":"92ec8c3c-c428-5ca1-bb98-7b8ebac5cdfb","frontmatter":{"title":"JDK 14 und GraalVM im Java Ökosystem","date":"2020-04-29T00:00:00.000Z","time":"18:00","virtual":true,"tags":["java","jdk","graalvm"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2020-04-29-jdk14_graalvm/"}}},{"node":{"id":"c7067e06-b5be-50ec-83d2-9ea30dc14640","frontmatter":{"title":"Innovationsmotor Cloud Foundry!?","date":"2020-01-29T00:00:00.000Z","time":null,"virtual":null,"tags":["cloud"],"speaker":["simon_roloff"]},"fields":{"slug":"/talks/2020-01-27-cloud-foundry/"}}},{"node":{"id":"a0f32bfb-f9fa-5c9c-a70d-ffd93be7d859","frontmatter":{"title":"Advanced BDD Tests","date":"2019-11-28T00:00:00.000Z","time":null,"virtual":null,"tags":["java","testen"],"speaker":["maik_wagner"]},"fields":{"slug":"/talks/2019-11-28-advanced-bdd-tests/"}}},{"node":{"id":"6895717e-291c-581d-8fef-3b5e73bc8369","frontmatter":{"title":"Wie gut kennst Du das Collections Framework?","date":"2019-06-26T00:00:00.000Z","time":null,"virtual":null,"tags":["java"],"speaker":["thilo_frotscher"]},"fields":{"slug":"/talks/2019-06-26-collection-framework/"}}},{"node":{"id":"a5f7b4d5-03e6-588d-9778-62b4b8c44286","frontmatter":{"title":"OAuth 2.0/OpenIDConnect mit Keycloak","date":"2019-05-29T00:00:00.000Z","time":null,"virtual":null,"tags":["java","security"],"speaker":["denny_israel"]},"fields":{"slug":"/talks/2019-05-29-oauth/"}}},{"node":{"id":"9a7e9567-b7fe-59cd-90fe-aec93c90f2af","frontmatter":{"title":"It's a JDK jungle out there - oder wie es mit den neuen Java-Versionen geordnet weitergeht","date":"2019-04-24T00:00:00.000Z","time":null,"virtual":null,"tags":["java","jdk"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2019-04-24_jdk_jungle/"}}},{"node":{"id":"dd2fc902-b2b3-5256-b24b-e09f17f45415","frontmatter":{"title":"Static-Site-Generators","date":"2019-03-27T00:00:00.000Z","time":null,"virtual":null,"tags":["web","javascript"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2019-03-27-static-site-generators/"}}},{"node":{"id":"f37a3185-cf74-5401-9461-328751a5a63e","frontmatter":{"title":"Java Reflection: Classes behind the scenes","date":"2019-02-27T00:00:00.000Z","time":null,"virtual":null,"tags":["java"],"speaker":["erik_jaehne"]},"fields":{"slug":"/talks/2019-02-27_reflection/"}}},{"node":{"id":"6c6f82f3-26da-59ee-a8b6-8c178256b6b7","frontmatter":{"title":"Java APIs - the missing manual","date":"2019-01-31T00:00:00.000Z","time":null,"virtual":null,"tags":["java"],"speaker":["hendrik_ebbers"]},"fields":{"slug":"/talks/2019-01-31_java_apis_missing_manual/"}}},{"node":{"id":"f3a5b0e9-0351-58c1-a827-a5f39196ddee","frontmatter":{"title":"Monadische Transaktionen","date":"2018-11-23T00:00:00.000Z","time":null,"virtual":null,"tags":["functional-programming"],"speaker":["gregor_trefs"]},"fields":{"slug":"/talks/2018-11-23-monadische_transaktionen/"}}},{"node":{"id":"f17a3451-b9a5-5b42-b740-3c15fe9268f5","frontmatter":{"title":"Immutable Data - Unveränderliche Daten im Griff","date":"2018-06-27T00:00:00.000Z","time":null,"virtual":null,"tags":["programmiersprachen","functional-programming"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2018-06-27-immutable-data/"}}},{"node":{"id":"bba11502-e73b-5c5e-9ce7-f4102b1daed5","frontmatter":{"title":"GraphQL","date":"2018-05-30T00:00:00.000Z","time":null,"virtual":null,"tags":["programmiersprachen","web","architektur"],"speaker":["stephan_strehler"]},"fields":{"slug":"/talks/2018-05-30-graphql/"}}},{"node":{"id":"1b2f3079-33fa-52a7-8f63-17ed40feb17e","frontmatter":{"title":"Kotlin","date":"2018-04-25T00:00:00.000Z","time":null,"virtual":null,"tags":["programmiersprachen"],"speaker":["tobias_blaschke"]},"fields":{"slug":"/talks/2018-04-25-kotlin/"}}},{"node":{"id":"dad0ee9f-ea34-5ce1-b7fe-a0e45b09e845","frontmatter":{"title":"Mikro- vs. Makroarchitektur – Spielraum und Spielregeln","date":"2018-03-20T00:00:00.000Z","time":null,"virtual":null,"tags":["architektur"],"speaker":["stefan_zoerner"]},"fields":{"slug":"/talks/2018-03-20-mikro_vs_makroarchitektur/"}}},{"node":{"id":"67f5c805-4443-51af-9f87-0a9aff577dce","frontmatter":{"title":"Entwicklung von Java Applikationen auf der SAP Cloud Platform","date":"2018-02-28T00:00:00.000Z","time":null,"virtual":null,"tags":["cloud"],"speaker":["jens_leuschner","mariusz_zienkiewicz"]},"fields":{"slug":"/talks/2018-02-28-java_auf_sap_cloud/"}}},{"node":{"id":"259289d0-862c-5044-bdb1-38c8d853780d","frontmatter":{"title":"Refactoring to a System of Systems","date":"2018-01-31T00:00:00.000Z","time":null,"virtual":null,"tags":["architektur"],"speaker":["oliver_drotbohm"]},"fields":{"slug":"/talks/2018-01-31-system_of_systems/"}}},{"node":{"id":"92f30cfa-20d5-5aba-8db4-e6e1de091225","frontmatter":{"title":"Neo4j: Panama Papers","date":"2017-11-29T00:00:00.000Z","time":null,"virtual":null,"tags":["database"],"speaker":["michael_hunger"]},"fields":{"slug":"/talks/2017-11-29-neo4j/"}}},{"node":{"id":"fd607630-d7dd-503a-8da0-25a963df4df3","frontmatter":{"title":"Serverless Application - Who the heck needs a Server?","date":"2017-10-25T00:00:00.000Z","time":null,"virtual":null,"tags":["architektur","serverless"],"speaker":["lars_roewekamp"]},"fields":{"slug":"/talks/2017-10-25-serverless/"}}},{"node":{"id":"29eb8b61-615f-5f82-afc0-25abdc540af7","frontmatter":{"title":"Spracherkennung mit Amazon Alexa","date":"2017-08-30T00:00:00.000Z","time":null,"virtual":null,"tags":["ki"],"speaker":["andre_tepper","maik_wagner"]},"fields":{"slug":"/talks/2017-08-30-alexa/"}}},{"node":{"id":"935f30df-c07e-5cfa-9188-3564b4e0fab7","frontmatter":{"title":"React und React-Native: Functional UI Development für Browser und mobile Endgeräte","date":"2017-05-31T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","javascript","web","mobile","functional-programming"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2017-05-31-react/"}}},{"node":{"id":"9ba71f6c-f0dd-5c4e-b70f-3d7ac1ec19ca","frontmatter":{"title":"JDK 9","date":"2017-04-25T00:00:00.000Z","time":null,"virtual":null,"tags":["java","jdk"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2017-04-26-jdk9/"}}},{"node":{"id":"d7528a15-3b10-587c-9543-5c372945763a","frontmatter":{"title":"Angular 2 für Java Entwickler","date":"2017-03-22T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","web","javascript"],"speaker":["sven_hoffmann"]},"fields":{"slug":"/talks/2017-03-22-angular/"}}},{"node":{"id":"f009504d-3327-52e9-8948-6cd4d3ba952e","frontmatter":{"title":"CSS, Aha-Effekte und Perspektiven","date":"2017-02-22T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","web"],"speaker":["uwe_manteuffel"]},"fields":{"slug":"/talks/2017-02-22-css/"}}},{"node":{"id":"cf0f1947-1449-5df5-b546-aa31d25046a7","frontmatter":{"title":"JUnit 5","date":"2017-01-25T00:00:00.000Z","time":null,"virtual":null,"tags":["testen","junit"],"speaker":["stefan_bley"]},"fields":{"slug":"/talks/2017-01-25-junit5/"}}},{"node":{"id":"c67796c2-6477-5658-a163-1de4870f548e","frontmatter":{"title":"Inside JVM","date":"2016-11-30T00:00:00.000Z","time":null,"virtual":null,"tags":["java","jvm"],"speaker":["michael_wiedeking"]},"fields":{"slug":"/talks/2016-11-30-inside_jvm/"}}},{"node":{"id":"a4cfc466-b5f6-5b10-be7e-13c92d3ab2f7","frontmatter":{"title":"Kommunikationskultur im Softwareentwicklungsprozess","date":"2016-09-21T00:00:00.000Z","time":null,"virtual":null,"tags":["testen","softwareentwicklung"],"speaker":["daniel_sernow"]},"fields":{"slug":"/talks/2016-09-21-kommunikationskultur/"}}},{"node":{"id":"e14cd50a-435a-5855-ae06-c0d1eb30d8af","frontmatter":{"title":"Testwerkzeuge für JavaFX","date":"2016-07-27T00:00:00.000Z","time":null,"virtual":null,"tags":["javafx","testen"],"speaker":["kay_grebenstein"]},"fields":{"slug":"/talks/2016-07-27-testwerkzeuge_javafx/"}}},{"node":{"id":"4dc84ec4-23f6-5438-a2e6-b5944dc868c9","frontmatter":{"title":"Performance-Analyse mit inspectIT","date":"2016-05-25T00:00:00.000Z","time":null,"virtual":null,"tags":["performance","monitoring"],"speaker":["mario_mann"]},"fields":{"slug":"/talks/2016-05-25-performance-analyse-inspectit/"}}},{"node":{"id":"7d996009-4040-5330-a46c-5877cc5668af","frontmatter":{"title":"Haskell und Frege","date":"2016-03-30T00:00:00.000Z","time":null,"virtual":null,"tags":["programmiersprachen","functional-programming","non-jvm-language"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2016-03-30-haskell_frege/"}}},{"node":{"id":"79835d68-651b-57a2-8c75-042baeba5b30","frontmatter":{"title":"Funktionale Programmierung mit Java","date":"2016-01-27T00:00:00.000Z","time":null,"virtual":null,"tags":["java","functional-programming"],"speaker":["manuel_mauky","max_wielsch"]},"fields":{"slug":"/talks/2016-01-27-functional_java/"}}},{"node":{"id":"43538367-514c-5009-b9eb-0f730f52bfd9","frontmatter":{"title":"JavaFX auf Mobile","date":"2015-11-25T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","javafx","mobile","android"],"speaker":["stefan_heinze","stefan_barth"]},"fields":{"slug":"/talks/2015-11-25-javafx-mobile/"}}},{"node":{"id":"eff228ab-8f49-5773-905c-fee144de429f","frontmatter":{"title":"Guava","date":"2015-09-30T00:00:00.000Z","time":null,"virtual":null,"tags":["java"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2015-09-30-guava/"}}},{"node":{"id":"a3c8bbba-0df8-503b-a702-21589e288614","frontmatter":{"title":"Regelbasierte Systeme mit JBoss Drools","date":"2015-07-29T00:00:00.000Z","time":null,"virtual":null,"tags":["dsl"],"speaker":["paul_weinhold"]},"fields":{"slug":"/talks/2015-07-29-drools/"}}},{"node":{"id":"1faa8cf7-10f9-54d5-a480-6d2e44896011","frontmatter":{"title":"Fortgeschrittene Android-Entwicklung","date":"2015-05-27T00:00:00.000Z","time":null,"virtual":null,"tags":["mobile","android"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2015-05-27-advanced-android/"}}},{"node":{"id":"d853656a-6dac-5d38-b25a-c241c13cbadb","frontmatter":{"title":"Einstieg in die Android-App-Entwicklung","date":"2015-03-25T00:00:00.000Z","time":null,"virtual":null,"tags":["android","mobile"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2015-03-25-android/"}}},{"node":{"id":"d88d92c2-cf39-5768-b424-1b211f08c8e8","frontmatter":{"title":"MoSKito - Monitoring Framework","date":"2015-01-28T00:00:00.000Z","time":null,"virtual":null,"tags":["web","monitoring"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2015-01-28-moskito/"}}},{"node":{"id":"2fdb9675-dfcf-55b8-899d-8e6d04242b4a","frontmatter":{"title":"Model-View-*: UI-Design-Patterns im Detail","date":"2014-12-03T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","patterns"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2014-12-03-model-view-star/"}}},{"node":{"id":"5840ef2b-08af-57a6-81b0-7a69c1d1beb0","frontmatter":{"title":"Infrastructure as Code","date":"2014-10-29T00:00:00.000Z","time":null,"virtual":null,"tags":["devops"],"speaker":["bruno_devic"]},"fields":{"slug":"/talks/2014-10-29-infrastructure_as_code/"}}},{"node":{"id":"ded25abd-db1f-5b9b-9cd2-8c905bc15ab0","frontmatter":{"title":"Solr - Eine Enterprise-Suchmaschine","date":"2014-09-24T00:00:00.000Z","time":null,"virtual":null,"tags":["database"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2014-09-24-solr/"}}},{"node":{"id":"bd5b8775-c069-521b-803e-4a62493c8247","frontmatter":{"title":"Java8 - Streams und Lambdas","date":"2014-07-30T00:00:00.000Z","time":null,"virtual":null,"tags":["java","functional-programming"],"speaker":["paul_weinhold"]},"fields":{"slug":"/talks/2014-07-30-java8-streams/"}}},{"node":{"id":"09dfae71-65f1-52de-81a7-e0746238f502","frontmatter":{"title":"Hazelcast - Synchronisation von In-Memory-Daten","date":"2014-05-28T00:00:00.000Z","time":null,"virtual":null,"tags":["cluster"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2014-05-28-hazelcast/"}}},{"node":{"id":"27050ce5-4d13-504b-90e0-8a4c3f2e6514","frontmatter":{"title":"Besser lesbare Unittests mit AssertJ","date":"2014-04-02T00:00:00.000Z","time":null,"virtual":null,"tags":["junit","testen"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2014-04-02-assertj/"}}},{"node":{"id":"f39e922a-28fe-514b-838c-4b89e4ec981e","frontmatter":{"title":"Tool-Integration im Softwareentwicklungsprozess","date":"2014-01-29T00:00:00.000Z","time":null,"virtual":null,"tags":["integration","platform","softwareentwicklung"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2014-01-29-opendip/"}}},{"node":{"id":"a8a6dc9d-ed19-56f9-9fd3-8c83531f61d0","frontmatter":{"title":"Performance-Optimierung im Web","date":"2013-11-27T00:00:00.000Z","time":null,"virtual":null,"tags":["web","performance"],"speaker":["maik_wagner"]},"fields":{"slug":"/talks/2013-11-27-web-performance/"}}},{"node":{"id":"fb329b7c-5599-55bf-85c5-54a1a6b821bb","frontmatter":{"title":"Modernes App-Design am Beispiel von Android","date":"2013-10-30T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","mobile","android"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2013-10-30-app-design/"}}},{"node":{"id":"6cde30c0-930e-5a8f-9a80-e0bfc34878a6","frontmatter":{"title":"Persona - Werkzeug für die GUI-Entwicklung","date":"2013-07-31T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","softwareentwicklung"],"speaker":["marlene_knoche"]},"fields":{"slug":"/talks/2013-07-31-persona/"}}},{"node":{"id":"df78a5f7-4e2e-5f4d-83dd-6ad6432ef93e","frontmatter":{"title":"JRuby - Ruby auf der Java VM","date":"2013-05-29T00:00:00.000Z","time":null,"virtual":null,"tags":["programmiersprachen"],"speaker":["sebastian_schmeck"]},"fields":{"slug":"/talks/2013-05-29-jruby/"}}},{"node":{"id":"a13fb811-969f-5eb3-91f8-c71970bff046","frontmatter":{"title":"Lego NXT-Roboter mit Java programmieren","date":"2013-03-27T00:00:00.000Z","time":null,"virtual":null,"tags":["hardware","roboter"],"speaker":["erik_jaehne"]},"fields":{"slug":"/talks/2013-03-27-nxt_lego/"}}},{"node":{"id":"90157438-0e03-57ef-870f-701aac0b6210","frontmatter":{"title":"JavaFX 2","date":"2012-11-28T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","javafx"],"speaker":["alexander_casall","michael_thiele"]},"fields":{"slug":"/talks/2012-11-28-javafx2/"}}},{"node":{"id":"c044b319-accb-5fca-8339-9f01293583e6","frontmatter":{"title":"JSR-303 BeanValidation","date":"2012-09-26T00:00:00.000Z","time":null,"virtual":null,"tags":["javaee"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2012-09-26-bean_validation/"}}},{"node":{"id":"09982d70-f13f-5626-8a14-2d8d92abf724","frontmatter":{"title":"Selenium/Webdriver in der Praxis","date":"2012-07-25T00:00:00.000Z","time":null,"virtual":null,"tags":["web","frontend","testen"],"speaker":["maik_wagner"]},"fields":{"slug":"/talks/2012-07-25-selenium_praxis/"}}},{"node":{"id":"5e4ab94f-157d-5292-864d-57606942e1ff","frontmatter":{"title":"GridGain - Parallel Computing und Data Grid Anwendungen","date":"2012-06-27T00:00:00.000Z","time":null,"virtual":null,"tags":["cluster"],"speaker":["mario_reichel"]},"fields":{"slug":"/talks/2012-06-27-gridgain/"}}},{"node":{"id":"88119287-b9a3-5745-bd33-a7735cb39b4b","frontmatter":{"title":"JMonkeyEngine 3 - 3D-Applikationen in Java","date":"2012-05-30T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend"],"speaker":["hans_markwart"]},"fields":{"slug":"/talks/2012-05-30-jmonkey-engine3/"}}},{"node":{"id":"fa3c70d9-f376-541d-be0b-ca24e0ac6b89","frontmatter":{"title":"Maven","date":"2012-04-25T00:00:00.000Z","time":null,"virtual":null,"tags":["build-management"],"speaker":["thomas_storch"]},"fields":{"slug":"/talks/2012-04-25-maven/"}}},{"node":{"id":"bd3b256f-6609-52bb-9d05-5a57482e4f42","frontmatter":{"title":"Webtests mit Selenium","date":"2012-03-28T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","web","testen"],"speaker":["marcus_doering"]},"fields":{"slug":"/talks/2012-03-28-webtests/"}}},{"node":{"id":"7881a4dc-ab76-5124-b9b1-dc13c982a250","frontmatter":{"title":"Webentwicklung mit Scala","date":"2012-02-29T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","web","programmiersprachen"],"speaker":["stefan_bradl"]},"fields":{"slug":"/talks/2012-02-29-scala_webapps/"}}},{"node":{"id":"67e2091a-15eb-56f9-bb65-586c4b2a809d","frontmatter":{"title":"Advanced JSF und CDI","date":"2012-01-25T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","web","javaee","jsf"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2012-01-25-jsf_cdi_advanced/"}}},{"node":{"id":"e3831714-860d-5867-9952-89ecfe8b81dd","frontmatter":{"title":"JPA - Hibernate","date":"2012-01-04T00:00:00.000Z","time":null,"virtual":null,"tags":["database","javaee"],"speaker":["marko_modsching"]},"fields":{"slug":"/talks/2012-01-01-hibernate/"}}},{"node":{"id":"11771522-730a-5373-b0f8-585c9c4f52c1","frontmatter":{"title":"JavaServer Faces 2 und CDI","date":"2011-11-30T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","web","javaee","jsf"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2011-11-30-jsf-cdi/"}}},{"node":{"id":"c40cc73f-d2be-5960-b15f-87e4b39429c8","frontmatter":{"title":"Android","date":"2011-10-26T00:00:00.000Z","time":null,"virtual":null,"tags":["mobile","android"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2011-10-26-android/"}}},{"node":{"id":"9bcc98b0-826d-5513-b828-008dbf11c915","frontmatter":{"title":"JDOM","date":"2011-09-28T00:00:00.000Z","time":null,"virtual":null,"tags":["xml"],"speaker":["mark_ziener"]},"fields":{"slug":"/talks/2011-09-28-jdom/"}}},{"node":{"id":"6cca53f4-9edd-55ac-a225-75c94aa0dd8b","frontmatter":{"title":"Single Sign-On mit JAAS und JGSS","date":"2011-09-28T00:00:00.000Z","time":null,"virtual":null,"tags":["security"],"speaker":["mario_reichel"]},"fields":{"slug":"/talks/2011-09-28-single-sign-on/"}}},{"node":{"id":"67828855-f7d8-5d6d-9d90-7c3760bb7705","frontmatter":{"title":"Testen - Patterns und Best Practices","date":"2011-08-31T00:00:00.000Z","time":null,"virtual":null,"tags":["testen","patterns"],"speaker":["marko_modsching"]},"fields":{"slug":"/talks/2011-08-31-testen/"}}},{"node":{"id":"603cc23a-9840-5867-b78d-99fbd489d472","frontmatter":{"title":"Scala","date":"2011-07-27T00:00:00.000Z","time":null,"virtual":null,"tags":["programmiersprachen"],"speaker":["stefan_bradl"]},"fields":{"slug":"/talks/2011-07-27-scala/"}}},{"node":{"id":"4bb73d33-af61-5eac-a5fa-d075fa8660f5","frontmatter":{"title":"TestNG","date":"2011-07-27T00:00:00.000Z","time":null,"virtual":null,"tags":["testen"],"speaker":["marcus_doering"]},"fields":{"slug":"/talks/2011-07-27-testng/"}}},{"node":{"id":"5c110017-4815-5ac0-a4e3-a75e759080ac","frontmatter":{"title":"JavaEE und JBoss","date":"2011-06-29T00:00:00.000Z","time":null,"virtual":null,"tags":["javaee"],"speaker":["michael_foerster"]},"fields":{"slug":"/talks/2011-06-29-javaee_jboss/"}}},{"node":{"id":"54c98b64-64a8-515b-a02c-8a54c51dcca1","frontmatter":{"title":"Google Guice","date":"2011-05-27T00:00:00.000Z","time":null,"virtual":null,"tags":["patterns"],"speaker":["robert_wirbs"]},"fields":{"slug":"/talks/2011-05-27-guice/"}}},{"node":{"id":"6d1edf0b-d32b-5274-baa2-34c7f27786b8","frontmatter":{"title":"GWT - Google Web Toolkit","date":"2011-04-27T00:00:00.000Z","time":null,"virtual":null,"tags":["web","frontend"],"speaker":["ingo_koerner"]},"fields":{"slug":"/talks/2011-04-27-gwt/"}}},{"node":{"id":"2d5fb6de-57a5-54c0-9485-b2ea5bb67a81","frontmatter":{"title":"OSGi mit SpringDM","date":"2011-04-27T00:00:00.000Z","time":null,"virtual":null,"tags":null,"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2011-04-27-osgi_springdm/"}}},{"node":{"id":"b0252f0d-2a16-5085-913a-7fb7bf5364a6","frontmatter":{"title":"EasyMock","date":"2011-03-22T00:00:00.000Z","time":null,"virtual":null,"tags":["testen"],"speaker":["richard_hauswald"]},"fields":{"slug":"/talks/2011-03-22-easymock/"}}},{"node":{"id":"c92b2d55-0d33-50f7-a73c-de8f55b7d75e","frontmatter":{"title":"Jenkins/Hudson","date":"2011-03-22T00:00:00.000Z","time":null,"virtual":null,"tags":["build-management"],"speaker":["stefan_scheumann"]},"fields":{"slug":"/talks/2011-03-22-jenkins/"}}}]},"speakers":{"edges":[{"node":{"id":"ff0ef063-2c62-5f5c-8e8a-3fea00727337","fields":{"slug":"/speakers/alexander_casall/"},"frontmatter":{"name":"Alexander Casall"}}},{"node":{"id":"2fce745c-9aae-524d-a24b-d39e282689b0","fields":{"slug":"/speakers/andre_tepper/"},"frontmatter":{"name":"Andre Tepper"}}},{"node":{"id":"83212ced-9134-55d1-bd90-46f149e95898","fields":{"slug":"/speakers/bruno_devic/"},"frontmatter":{"name":"Bruno Devic"}}},{"node":{"id":"02a5cfde-2b00-5350-a999-f314d4c0ee1e","fields":{"slug":"/speakers/christian_kuemmel/"},"frontmatter":{"name":"Christian Kümmel"}}},{"node":{"id":"78a4398b-6839-50d3-8f1e-5262def696d6","fields":{"slug":"/speakers/christoph_menzel/"},"frontmatter":{"name":"Christoph Menzel"}}},{"node":{"id":"7640e853-d184-5946-a052-be3b7deaa867","fields":{"slug":"/speakers/damian_dudziec/"},"frontmatter":{"name":"Damian Dudziec"}}},{"node":{"id":"2adfcaf8-baac-58d8-ac17-2e9e978bea1b","fields":{"slug":"/speakers/daniel_fesenmeyer/"},"frontmatter":{"name":"Daniel Fesenmeyer"}}},{"node":{"id":"2c287f6d-72f9-5142-8d7e-8cb0049f7898","fields":{"slug":"/speakers/daniel_sernow/"},"frontmatter":{"name":"Daniel Sernow"}}},{"node":{"id":"e86d9d23-67e9-58de-853e-30051fb1eabb","fields":{"slug":"/speakers/daniel_sulyok/"},"frontmatter":{"name":"Dániel Sulyok"}}},{"node":{"id":"770e92e8-4326-5909-ace2-ddfcc7deae8b","fields":{"slug":"/speakers/denny_israel/"},"frontmatter":{"name":"Denny Israel"}}},{"node":{"id":"074397e2-c590-59cc-8c29-413f81c9e045","fields":{"slug":"/speakers/erik_jaehne/"},"frontmatter":{"name":"Erik Jähne"}}},{"node":{"id":"f13237e6-5775-5e35-bc7e-7ab125cff716","fields":{"slug":"/speakers/gerrit_grunwald/"},"frontmatter":{"name":"Gerrit Grunwald"}}},{"node":{"id":"f8ac41fc-2d52-5c52-8a5b-cc148abad020","fields":{"slug":"/speakers/gregor_trefs/"},"frontmatter":{"name":"Gregor Trefs"}}},{"node":{"id":"1dd06ad5-50e3-58f4-b8a3-30ffdf3c4cc0","fields":{"slug":"/speakers/hannes_kretschmer/"},"frontmatter":{"name":"Hannes Kretschmer"}}},{"node":{"id":"35a72c9a-cbdf-5f39-8b2a-1813b7e94cc7","fields":{"slug":"/speakers/hans_markwart/"},"frontmatter":{"name":"Hans Markwart"}}},{"node":{"id":"93129b19-f730-5e77-879a-58c8e08a198a","fields":{"slug":"/speakers/hendrik_ebbers/"},"frontmatter":{"name":"Hendrik Ebbers"}}},{"node":{"id":"44493f6a-f9c2-527b-a086-fed0da68f1c4","fields":{"slug":"/speakers/ingo_koerner/"},"frontmatter":{"name":"Ingo Körner"}}},{"node":{"id":"1f477a08-7805-5bf3-984b-4afec0b2cd45","fields":{"slug":"/speakers/jens_leuschner/"},"frontmatter":{"name":"Jens Leuschner"}}},{"node":{"id":"d857c285-3a43-5120-8453-7b2f87424152","fields":{"slug":"/speakers/kay_grebenstein/"},"frontmatter":{"name":"Kay Grebenstein"}}},{"node":{"id":"abafb571-eb5b-5194-818a-f2b18a1382c9","fields":{"slug":"/speakers/konstantin_eger/"},"frontmatter":{"name":"Konstantin Eger"}}},{"node":{"id":"184d7622-4aae-50bd-a14c-f44f4db9c575","fields":{"slug":"/speakers/lars_roewekamp/"},"frontmatter":{"name":"Lars Röwekamp"}}},{"node":{"id":"fee4bf04-1e31-54b1-b809-c3d510531b5c","fields":{"slug":"/speakers/maik_wagner/"},"frontmatter":{"name":"Maik Wagner"}}},{"node":{"id":"c48b140e-258d-5030-8fcc-70fedc7dd5b4","fields":{"slug":"/speakers/manuel_mauky/"},"frontmatter":{"name":"Manuel Mauky"}}},{"node":{"id":"83b497c1-a32d-5e39-a543-439154b750d9","fields":{"slug":"/speakers/marco_gotthans/"},"frontmatter":{"name":"Marco Gotthans"}}},{"node":{"id":"d0f25d9d-4106-5691-a1b2-28cbe4275e46","fields":{"slug":"/speakers/marcus_doering/"},"frontmatter":{"name":"Marcus Döring"}}},{"node":{"id":"9e00ea79-267c-5db0-9e41-f5d872b4c595","fields":{"slug":"/speakers/mario_mann/"},"frontmatter":{"name":"Mario Mann"}}},{"node":{"id":"d08d4526-e68f-5a1d-8a78-6c5a99cbe1e4","fields":{"slug":"/speakers/mario_reichel/"},"frontmatter":{"name":"Mario Reichel"}}},{"node":{"id":"678c9f26-730c-5aff-999b-bd4eb93dc92f","fields":{"slug":"/speakers/mariusz_zienkiewicz/"},"frontmatter":{"name":"Mariusz Zienkiewicz"}}},{"node":{"id":"5834f4d7-e0a3-505c-b1d0-81a37f5144f1","fields":{"slug":"/speakers/mark_ziener/"},"frontmatter":{"name":"Mark Ziener"}}},{"node":{"id":"74ed9e96-8a2b-59cb-8642-93f5dec4d7b3","fields":{"slug":"/speakers/marko_modsching/"},"frontmatter":{"name":"Marko Modsching"}}},{"node":{"id":"af5cd69a-023f-577f-9cb1-5f5185d0848d","fields":{"slug":"/speakers/markus_kett/"},"frontmatter":{"name":"Markus Kett"}}},{"node":{"id":"b0aa71a0-d2a3-5a2a-8831-2137b43e583d","fields":{"slug":"/speakers/markus_weiland/"},"frontmatter":{"name":"Markus Weiland"}}},{"node":{"id":"2376b174-04f1-5b56-b72f-8201a1dfb2a5","fields":{"slug":"/speakers/marlene_knoche/"},"frontmatter":{"name":"Marlene Knoche"}}},{"node":{"id":"db05ced3-0480-51fe-83be-d0149d94da93","fields":{"slug":"/speakers/max_wielsch/"},"frontmatter":{"name":"Max Wielsch"}}},{"node":{"id":"f042c1af-7b71-5d8f-ab98-aa158cb2a418","fields":{"slug":"/speakers/michael_foerster/"},"frontmatter":{"name":"Michael Förster"}}},{"node":{"id":"21c7def1-78a4-52e2-bf13-b3a646e3215d","fields":{"slug":"/speakers/michael_hunger/"},"frontmatter":{"name":"Michael Hunger"}}},{"node":{"id":"fc3d2a4f-3ab8-5fc9-aa19-09fc69dd1385","fields":{"slug":"/speakers/michael_thiele/"},"frontmatter":{"name":"Michael Thiele"}}},{"node":{"id":"917f2c35-500a-5f14-bfb1-d99f287d2afe","fields":{"slug":"/speakers/michael_wiedeking/"},"frontmatter":{"name":"Michael Wiedeking"}}},{"node":{"id":"543c0c0e-1ed8-519c-a2d3-544f86c7b5d2","fields":{"slug":"/speakers/nico_foerster/"},"frontmatter":{"name":"Nico Förster"}}},{"node":{"id":"8402dc7e-d767-5b77-8ca3-ff9c967248fb","fields":{"slug":"/speakers/oliver_drotbohm/"},"frontmatter":{"name":"Oliver Drotbohm"}}},{"node":{"id":"c8fa437e-3c34-56b6-b03b-c67c1370f111","fields":{"slug":"/speakers/patryk_lewandowski/"},"frontmatter":{"name":"Patryk Lewandowski"}}},{"node":{"id":"339b9441-8737-533f-aefe-b31bbb6663f4","fields":{"slug":"/speakers/paul_weinhold/"},"frontmatter":{"name":"Paul Weinhold"}}},{"node":{"id":"e52c08b9-aaed-5384-920c-d08af9991f5b","fields":{"slug":"/speakers/pawel_adaszewski/"},"frontmatter":{"name":"Pawel Adaszewski"}}},{"node":{"id":"304f3f2c-44ca-5275-9f73-5b789038daf0","fields":{"slug":"/speakers/richard_hauswald/"},"frontmatter":{"name":"Richard Hauswald"}}},{"node":{"id":"18051d64-e79b-5ad5-bdc3-0b0f822ae644","fields":{"slug":"/speakers/robert_wirbs/"},"frontmatter":{"name":"Robert Wirbs"}}},{"node":{"id":"54a0f9fe-80ab-52ba-9aea-e3f2a5dd045f","fields":{"slug":"/speakers/roland_weisleder/"},"frontmatter":{"name":"Roland Weisleder"}}},{"node":{"id":"cb2ea0b2-b790-5204-9f7b-e1cd0f0583c1","fields":{"slug":"/speakers/sebastian_schmeck/"},"frontmatter":{"name":"Sebastian Schmeck"}}},{"node":{"id":"87a83879-1b5e-50f5-9829-2699d9a01da5","fields":{"slug":"/speakers/sergej_tihonov/"},"frontmatter":{"name":"Sergej Tihonov"}}},{"node":{"id":"4f81ccbd-2893-5804-a68a-04c6b8c20f75","fields":{"slug":"/speakers/simon_roloff/"},"frontmatter":{"name":"Simon Roloff"}}},{"node":{"id":"a26cc991-7e1d-5caa-8926-7a52b0fa93e6","fields":{"slug":"/speakers/stefan_barth/"},"frontmatter":{"name":"Stefan Barth"}}},{"node":{"id":"63ab1902-d259-53c5-99ea-3564ac4ce81a","fields":{"slug":"/speakers/stefan_bley/"},"frontmatter":{"name":"Stefan Bley"}}},{"node":{"id":"dd47473a-7d7f-54fa-9daa-e062ae1c9bef","fields":{"slug":"/speakers/stefan_bradl/"},"frontmatter":{"name":"Stefan Bradl"}}},{"node":{"id":"d4e04ddf-59bb-542f-b6bc-58e5cf77667d","fields":{"slug":"/speakers/stefan_heinze/"},"frontmatter":{"name":"Stefan Heinze"}}},{"node":{"id":"bd7c2828-9149-5013-8dca-331d23b9953f","fields":{"slug":"/speakers/stefan_scheumann/"},"frontmatter":{"name":"Stefan Scheumann"}}},{"node":{"id":"7b63d414-09ef-5e63-bda2-a3259175090c","fields":{"slug":"/speakers/stefan_zoerner/"},"frontmatter":{"name":"Stefan Zörner"}}},{"node":{"id":"09a6b265-f443-579a-ae78-9188aaeca6ca","fields":{"slug":"/speakers/stefan_zoerner_2/"},"frontmatter":{"name":"Stefan Zörner"}}},{"node":{"id":"39cc0655-cd1a-540e-9553-b9fa67e895cc","fields":{"slug":"/speakers/steffen_seidler/"},"frontmatter":{"name":"Steffen Seidler"}}},{"node":{"id":"a8d3dca8-b87d-568d-8e70-dcac046e98d5","fields":{"slug":"/speakers/stephan_strehler/"},"frontmatter":{"name":"Stephan Strehler"}}},{"node":{"id":"aefd4a1f-a4ed-5e51-a713-1da570fcd2ee","fields":{"slug":"/speakers/sven_hoffmann/"},"frontmatter":{"name":"Sven Hoffmann"}}},{"node":{"id":"9a66bc44-37f7-527c-9f45-6c0b1dd74510","fields":{"slug":"/speakers/thilo_frotscher/"},"frontmatter":{"name":"Thilo Frotscher"}}},{"node":{"id":"3cab3c25-9f08-5d29-a7c2-3e2b0d414c16","fields":{"slug":"/speakers/thomas_storch/"},"frontmatter":{"name":"Thomas Storch"}}},{"node":{"id":"9776c4f1-e686-5cf2-b042-939797958362","fields":{"slug":"/speakers/tobias_blaschke/"},"frontmatter":{"name":"Tobias Blaschke"}}},{"node":{"id":"91d3bc22-4970-51b8-90cf-7583f2dc5ff5","fields":{"slug":"/speakers/uwe_manteuffel/"},"frontmatter":{"name":"Uwe Manteuffel"}}},{"node":{"id":"53f5069e-fb7c-5f5d-b967-b5df3c1df975","fields":{"slug":"/speakers/wolfgang_weigend/"},"frontmatter":{"name":"Wolfgang Weigend"}}}]}},"pageContext":{}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file diff --git a/posters/index.html b/posters/index.html index 57e63b6c0..1c05b1119 100644 --- a/posters/index.html +++ b/posters/index.html @@ -344,10 +344,10 @@ overflow: visible; position: static; width: auto; } -</style><style>.gatsby-image-wrapper{position:relative;overflow:hidden}.gatsby-image-wrapper picture.object-fit-polyfill{position:static!important}.gatsby-image-wrapper img{bottom:0;height:100%;left:0;margin:0;max-width:none;padding:0;position:absolute;right:0;top:0;width:100%;object-fit:cover}.gatsby-image-wrapper [data-main-image]{opacity:0;transform:translateZ(0);transition:opacity .25s linear;will-change:opacity}.gatsby-image-wrapper-constrained{display:inline-block;vertical-align:top}</style><noscript><style>.gatsby-image-wrapper noscript [data-main-image]{opacity:1!important}.gatsby-image-wrapper [data-placeholder-image]{opacity:0!important}</style></noscript><script type="module">const e="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;e&&document.body.addEventListener("load",(function(e){const t=e.target;if(void 0===t.dataset.mainImage)return;if(void 0===t.dataset.gatsbyImageSsr)return;let a=null,n=t;for(;null===a&&n;)void 0!==n.parentNode.dataset.gatsbyImageWrapper&&(a=n.parentNode),n=n.parentNode;const o=a.querySelector("[data-placeholder-image]"),r=new Image;r.src=t.currentSrc,r.decode().catch((()=>{})).then((()=>{t.style.opacity=1,o&&(o.style.opacity=0,o.style.transition="opacity 500ms linear")}))}),!0);</script><link rel="icon" href="/favicon-32x32.png?v=2ded17e3b6b8ff05cfb961a4ec8d0c25" type="image/png"/><link rel="manifest" href="/manifest.webmanifest" crossorigin="anonymous"/><link rel="apple-touch-icon" sizes="48x48" href="/icons/icon-48x48.png?v=2ded17e3b6b8ff05cfb961a4ec8d0c25"/><link rel="apple-touch-icon" sizes="72x72" href="/icons/icon-72x72.png?v=2ded17e3b6b8ff05cfb961a4ec8d0c25"/><link rel="apple-touch-icon" sizes="96x96" href="/icons/icon-96x96.png?v=2ded17e3b6b8ff05cfb961a4ec8d0c25"/><link rel="apple-touch-icon" sizes="144x144" href="/icons/icon-144x144.png?v=2ded17e3b6b8ff05cfb961a4ec8d0c25"/><link rel="apple-touch-icon" sizes="192x192" href="/icons/icon-192x192.png?v=2ded17e3b6b8ff05cfb961a4ec8d0c25"/><link rel="apple-touch-icon" sizes="256x256" href="/icons/icon-256x256.png?v=2ded17e3b6b8ff05cfb961a4ec8d0c25"/><link rel="apple-touch-icon" sizes="384x384" href="/icons/icon-384x384.png?v=2ded17e3b6b8ff05cfb961a4ec8d0c25"/><link rel="apple-touch-icon" sizes="512x512" href="/icons/icon-512x512.png?v=2ded17e3b6b8ff05cfb961a4ec8d0c25"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" id="gatsby-focus-wrapper"><nav class="navbar navbar-expand-sm navbar-light bg-light"><div class="container"><a class="navbar-brand" href="/">Java User Group Görlitz</a><button aria-label="Toggle navigation" type="button" class="navbar-toggler"><span class="navbar-toggler-icon"></span></button><div class="collapse navbar-collapse"><ul class="ml-auto navbar-nav"><li class="nav-item"><a class="link-item nav-link" href="/">Aktuell</a></li><li class="nav-item"><a class="link-item nav-link" href="/talks/">Vorträge</a></li><li class="nav-item"><a aria-current="page" class="link-item nav-link active" href="/posters/">Plakate</a></li><li class="nav-item"><a class="link-item nav-link" href="/unterstuetzer/">Unterstützer</a></li><li class="nav-item"><a class="link-item nav-link" href="/about/">About</a></li><li class="nav-item"><a class="link-item nav-link" href="/mitmachen/">Mitmachen</a></li></ul></div></div></nav><div style="margin-top:1em" class="container"><div class="row"><div class="col-md-9"><h2>Alle JUG-Plakate</h2><div class="container"><p>Unsere Plakate werden von <a href="/speakers/marlene_knoche/">Marlene Knoche</a> gestaltet. Sie macht auch viele andere Kunstprojekte. <br/>Schaut doch mal auf ihrer Webseite <a href="https://www.sanguinik.de/">www.sanguinik.de</a> vorbei.</p><div class="row"><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="83946b5b-e38c-5b7d-ac9b-81ea660c5ee7"><a href="/talks/2023-11-29-crac/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#e85848;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/44456e47b4e2d92792552c2d411e2518/e5d6f/plakat_2023_11.webp 750w,/static/44456e47b4e2d92792552c2d411e2518/0671f/plakat_2023_11.webp 1080w,/static/44456e47b4e2d92792552c2d411e2518/7e884/plakat_2023_11.webp 1366w,/static/44456e47b4e2d92792552c2d411e2518/e2c0d/plakat_2023_11.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen ist auf einem Fahrrad und hat einen alten Helm mit Fliegerbrille auf. Man sieht, dass er ziemlich schnell fährt." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/44456e47b4e2d92792552c2d411e2518/84817/plakat_2023_11.png" data-srcset="/static/44456e47b4e2d92792552c2d411e2518/b8e70/plakat_2023_11.png 750w,/static/44456e47b4e2d92792552c2d411e2518/e5839/plakat_2023_11.png 1080w,/static/44456e47b4e2d92792552c2d411e2518/f51d5/plakat_2023_11.png 1366w,/static/44456e47b4e2d92792552c2d411e2518/84817/plakat_2023_11.png 1920w" alt="Poster: Jürgen ist auf einem Fahrrad und hat einen alten Helm mit Fliegerbrille auf. Man sieht, dass er ziemlich schnell fährt."/></picture><noscript><picture><source type="image/webp" srcSet="/static/44456e47b4e2d92792552c2d411e2518/e5d6f/plakat_2023_11.webp 750w,/static/44456e47b4e2d92792552c2d411e2518/0671f/plakat_2023_11.webp 1080w,/static/44456e47b4e2d92792552c2d411e2518/7e884/plakat_2023_11.webp 1366w,/static/44456e47b4e2d92792552c2d411e2518/e2c0d/plakat_2023_11.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen ist auf einem Fahrrad und hat einen alten Helm mit Fliegerbrille auf. Man sieht, dass er ziemlich schnell fährt." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/44456e47b4e2d92792552c2d411e2518/84817/plakat_2023_11.png" srcSet="/static/44456e47b4e2d92792552c2d411e2518/b8e70/plakat_2023_11.png 750w,/static/44456e47b4e2d92792552c2d411e2518/e5839/plakat_2023_11.png 1080w,/static/44456e47b4e2d92792552c2d411e2518/f51d5/plakat_2023_11.png 1366w,/static/44456e47b4e2d92792552c2d411e2518/84817/plakat_2023_11.png 1920w" alt="Poster: Jürgen ist auf einem Fahrrad und hat einen alten Helm mit Fliegerbrille auf. Man sieht, dass er ziemlich schnell fährt."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="322b1b28-3c01-54d5-88d6-d64abf4078e4"><a href="/talks/2023-10-25-aws_cdk_in_action/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#d89878;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/434d9c3e2846cfe979a57d975235808c/e5d6f/plakat_2023_10.webp 750w,/static/434d9c3e2846cfe979a57d975235808c/0671f/plakat_2023_10.webp 1080w,/static/434d9c3e2846cfe979a57d975235808c/7e884/plakat_2023_10.webp 1366w,/static/434d9c3e2846cfe979a57d975235808c/e2c0d/plakat_2023_10.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und grinst verschmitzt Auf der Wolke ist ein Baukran zu sehen. Am Baukran hängt eine kleine Wolke und zusätzlich fliegen noch Wolken umher." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/434d9c3e2846cfe979a57d975235808c/84817/plakat_2023_10.png" data-srcset="/static/434d9c3e2846cfe979a57d975235808c/b8e70/plakat_2023_10.png 750w,/static/434d9c3e2846cfe979a57d975235808c/e5839/plakat_2023_10.png 1080w,/static/434d9c3e2846cfe979a57d975235808c/f51d5/plakat_2023_10.png 1366w,/static/434d9c3e2846cfe979a57d975235808c/84817/plakat_2023_10.png 1920w" alt="Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und grinst verschmitzt Auf der Wolke ist ein Baukran zu sehen. Am Baukran hängt eine kleine Wolke und zusätzlich fliegen noch Wolken umher."/></picture><noscript><picture><source type="image/webp" srcSet="/static/434d9c3e2846cfe979a57d975235808c/e5d6f/plakat_2023_10.webp 750w,/static/434d9c3e2846cfe979a57d975235808c/0671f/plakat_2023_10.webp 1080w,/static/434d9c3e2846cfe979a57d975235808c/7e884/plakat_2023_10.webp 1366w,/static/434d9c3e2846cfe979a57d975235808c/e2c0d/plakat_2023_10.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und grinst verschmitzt Auf der Wolke ist ein Baukran zu sehen. Am Baukran hängt eine kleine Wolke und zusätzlich fliegen noch Wolken umher." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/434d9c3e2846cfe979a57d975235808c/84817/plakat_2023_10.png" srcSet="/static/434d9c3e2846cfe979a57d975235808c/b8e70/plakat_2023_10.png 750w,/static/434d9c3e2846cfe979a57d975235808c/e5839/plakat_2023_10.png 1080w,/static/434d9c3e2846cfe979a57d975235808c/f51d5/plakat_2023_10.png 1366w,/static/434d9c3e2846cfe979a57d975235808c/84817/plakat_2023_10.png 1920w" alt="Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und grinst verschmitzt Auf der Wolke ist ein Baukran zu sehen. Am Baukran hängt eine kleine Wolke und zusätzlich fliegen noch Wolken umher."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="c6ed33d8-5c5c-5ba5-bf35-c5d30ff717b8"><a href="/talks/2023-09-27-virtual-threads/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#289898;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/7809ea1a362146b531abece65510447f/e5d6f/plakat_2023_09.webp 750w,/static/7809ea1a362146b531abece65510447f/0671f/plakat_2023_09.webp 1080w,/static/7809ea1a362146b531abece65510447f/7e884/plakat_2023_09.webp 1366w,/static/7809ea1a362146b531abece65510447f/e2c0d/plakat_2023_09.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hat sich in einem virtuellen Faden verheddert und schaut etwas verzweifelt." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/7809ea1a362146b531abece65510447f/84817/plakat_2023_09.png" data-srcset="/static/7809ea1a362146b531abece65510447f/b8e70/plakat_2023_09.png 750w,/static/7809ea1a362146b531abece65510447f/e5839/plakat_2023_09.png 1080w,/static/7809ea1a362146b531abece65510447f/f51d5/plakat_2023_09.png 1366w,/static/7809ea1a362146b531abece65510447f/84817/plakat_2023_09.png 1920w" alt="Poster: Jürgen hat sich in einem virtuellen Faden verheddert und schaut etwas verzweifelt."/></picture><noscript><picture><source type="image/webp" srcSet="/static/7809ea1a362146b531abece65510447f/e5d6f/plakat_2023_09.webp 750w,/static/7809ea1a362146b531abece65510447f/0671f/plakat_2023_09.webp 1080w,/static/7809ea1a362146b531abece65510447f/7e884/plakat_2023_09.webp 1366w,/static/7809ea1a362146b531abece65510447f/e2c0d/plakat_2023_09.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hat sich in einem virtuellen Faden verheddert und schaut etwas verzweifelt." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/7809ea1a362146b531abece65510447f/84817/plakat_2023_09.png" srcSet="/static/7809ea1a362146b531abece65510447f/b8e70/plakat_2023_09.png 750w,/static/7809ea1a362146b531abece65510447f/e5839/plakat_2023_09.png 1080w,/static/7809ea1a362146b531abece65510447f/f51d5/plakat_2023_09.png 1366w,/static/7809ea1a362146b531abece65510447f/84817/plakat_2023_09.png 1920w" alt="Poster: Jürgen hat sich in einem virtuellen Faden verheddert und schaut etwas verzweifelt."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="61b0d0a8-fa3a-58b5-b6f0-eef9f3716b60"><a href="/talks/2023-06-28-graalvm_23/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#b878a8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/d62e1742243833e9e67ff3a5e8ba41e0/e5d6f/plakat_2023_06.webp 750w,/static/d62e1742243833e9e67ff3a5e8ba41e0/0671f/plakat_2023_06.webp 1080w,/static/d62e1742243833e9e67ff3a5e8ba41e0/7e884/plakat_2023_06.webp 1366w,/static/d62e1742243833e9e67ff3a5e8ba41e0/e2c0d/plakat_2023_06.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hat ein Prisma in der Hand aus dem ein regenbogenfarbener Lichtstrahl ausdringt. Er schaut erstaunt auf das Prisma." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/d62e1742243833e9e67ff3a5e8ba41e0/84817/plakat_2023_06.png" data-srcset="/static/d62e1742243833e9e67ff3a5e8ba41e0/b8e70/plakat_2023_06.png 750w,/static/d62e1742243833e9e67ff3a5e8ba41e0/e5839/plakat_2023_06.png 1080w,/static/d62e1742243833e9e67ff3a5e8ba41e0/f51d5/plakat_2023_06.png 1366w,/static/d62e1742243833e9e67ff3a5e8ba41e0/84817/plakat_2023_06.png 1920w" alt="Poster: Jürgen hat ein Prisma in der Hand aus dem ein regenbogenfarbener Lichtstrahl ausdringt. Er schaut erstaunt auf das Prisma."/></picture><noscript><picture><source type="image/webp" srcSet="/static/d62e1742243833e9e67ff3a5e8ba41e0/e5d6f/plakat_2023_06.webp 750w,/static/d62e1742243833e9e67ff3a5e8ba41e0/0671f/plakat_2023_06.webp 1080w,/static/d62e1742243833e9e67ff3a5e8ba41e0/7e884/plakat_2023_06.webp 1366w,/static/d62e1742243833e9e67ff3a5e8ba41e0/e2c0d/plakat_2023_06.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hat ein Prisma in der Hand aus dem ein regenbogenfarbener Lichtstrahl ausdringt. Er schaut erstaunt auf das Prisma." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/d62e1742243833e9e67ff3a5e8ba41e0/84817/plakat_2023_06.png" srcSet="/static/d62e1742243833e9e67ff3a5e8ba41e0/b8e70/plakat_2023_06.png 750w,/static/d62e1742243833e9e67ff3a5e8ba41e0/e5839/plakat_2023_06.png 1080w,/static/d62e1742243833e9e67ff3a5e8ba41e0/f51d5/plakat_2023_06.png 1366w,/static/d62e1742243833e9e67ff3a5e8ba41e0/84817/plakat_2023_06.png 1920w" alt="Poster: Jürgen hat ein Prisma in der Hand aus dem ein regenbogenfarbener Lichtstrahl ausdringt. Er schaut erstaunt auf das Prisma."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="2289c524-859b-5899-a8d7-b9ae17afcad5"><a href="/talks/2023-05-31-accessibility_in_the_wild/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#e85888;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/4d37935c5d380cb8d64e34d12cbd80d2/e5d6f/plakat_2023_05.webp 750w,/static/4d37935c5d380cb8d64e34d12cbd80d2/0671f/plakat_2023_05.webp 1080w,/static/4d37935c5d380cb8d64e34d12cbd80d2/7e884/plakat_2023_05.webp 1366w,/static/4d37935c5d380cb8d64e34d12cbd80d2/e2c0d/plakat_2023_05.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hat einen Baseballschläger in den Händen und zerstört damit eine Verkehrsbake." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/4d37935c5d380cb8d64e34d12cbd80d2/84817/plakat_2023_05.png" data-srcset="/static/4d37935c5d380cb8d64e34d12cbd80d2/b8e70/plakat_2023_05.png 750w,/static/4d37935c5d380cb8d64e34d12cbd80d2/e5839/plakat_2023_05.png 1080w,/static/4d37935c5d380cb8d64e34d12cbd80d2/f51d5/plakat_2023_05.png 1366w,/static/4d37935c5d380cb8d64e34d12cbd80d2/84817/plakat_2023_05.png 1920w" alt="Poster: Jürgen hat einen Baseballschläger in den Händen und zerstört damit eine Verkehrsbake."/></picture><noscript><picture><source type="image/webp" srcSet="/static/4d37935c5d380cb8d64e34d12cbd80d2/e5d6f/plakat_2023_05.webp 750w,/static/4d37935c5d380cb8d64e34d12cbd80d2/0671f/plakat_2023_05.webp 1080w,/static/4d37935c5d380cb8d64e34d12cbd80d2/7e884/plakat_2023_05.webp 1366w,/static/4d37935c5d380cb8d64e34d12cbd80d2/e2c0d/plakat_2023_05.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hat einen Baseballschläger in den Händen und zerstört damit eine Verkehrsbake." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/4d37935c5d380cb8d64e34d12cbd80d2/84817/plakat_2023_05.png" srcSet="/static/4d37935c5d380cb8d64e34d12cbd80d2/b8e70/plakat_2023_05.png 750w,/static/4d37935c5d380cb8d64e34d12cbd80d2/e5839/plakat_2023_05.png 1080w,/static/4d37935c5d380cb8d64e34d12cbd80d2/f51d5/plakat_2023_05.png 1366w,/static/4d37935c5d380cb8d64e34d12cbd80d2/84817/plakat_2023_05.png 1920w" alt="Poster: Jürgen hat einen Baseballschläger in den Händen und zerstört damit eine Verkehrsbake."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="197c670b-992f-54d0-9a49-0aac78c4b5e4"><a href="/talks/2023-04-26-archunit_unit_tests_java_architektur/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#58a848;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/3783aca0b180d59828528ae2e9f37788/e5d6f/plakat_2023_04.webp 750w,/static/3783aca0b180d59828528ae2e9f37788/0671f/plakat_2023_04.webp 1080w,/static/3783aca0b180d59828528ae2e9f37788/7e884/plakat_2023_04.webp 1366w,/static/3783aca0b180d59828528ae2e9f37788/e2c0d/plakat_2023_04.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgens trägt ein grünes Cape und einen Hut mit einer Feder. Er sieht aus wie Robin Hood. In den Händen hat er Pfeil und Bogen parat, am Rücken trägt er einen Köcher mit weiteren Pfeilen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/3783aca0b180d59828528ae2e9f37788/84817/plakat_2023_04.png" data-srcset="/static/3783aca0b180d59828528ae2e9f37788/b8e70/plakat_2023_04.png 750w,/static/3783aca0b180d59828528ae2e9f37788/e5839/plakat_2023_04.png 1080w,/static/3783aca0b180d59828528ae2e9f37788/f51d5/plakat_2023_04.png 1366w,/static/3783aca0b180d59828528ae2e9f37788/84817/plakat_2023_04.png 1920w" alt="Poster: Jürgens trägt ein grünes Cape und einen Hut mit einer Feder. Er sieht aus wie Robin Hood. In den Händen hat er Pfeil und Bogen parat, am Rücken trägt er einen Köcher mit weiteren Pfeilen."/></picture><noscript><picture><source type="image/webp" srcSet="/static/3783aca0b180d59828528ae2e9f37788/e5d6f/plakat_2023_04.webp 750w,/static/3783aca0b180d59828528ae2e9f37788/0671f/plakat_2023_04.webp 1080w,/static/3783aca0b180d59828528ae2e9f37788/7e884/plakat_2023_04.webp 1366w,/static/3783aca0b180d59828528ae2e9f37788/e2c0d/plakat_2023_04.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgens trägt ein grünes Cape und einen Hut mit einer Feder. Er sieht aus wie Robin Hood. In den Händen hat er Pfeil und Bogen parat, am Rücken trägt er einen Köcher mit weiteren Pfeilen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/3783aca0b180d59828528ae2e9f37788/84817/plakat_2023_04.png" srcSet="/static/3783aca0b180d59828528ae2e9f37788/b8e70/plakat_2023_04.png 750w,/static/3783aca0b180d59828528ae2e9f37788/e5839/plakat_2023_04.png 1080w,/static/3783aca0b180d59828528ae2e9f37788/f51d5/plakat_2023_04.png 1366w,/static/3783aca0b180d59828528ae2e9f37788/84817/plakat_2023_04.png 1920w" alt="Poster: Jürgens trägt ein grünes Cape und einen Hut mit einer Feder. Er sieht aus wie Robin Hood. In den Händen hat er Pfeil und Bogen parat, am Rücken trägt er einen Köcher mit weiteren Pfeilen."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="ab1c70db-cea4-586b-be81-643ef56fc65a"><a href="/talks/2023-03-29-spring_fuer_architekturinteressierte_entwickler_innen/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#f8a808;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/bd3df371bc1bfedf9acf732740ac6b34/e5d6f/plakat_2023_03.webp 750w,/static/bd3df371bc1bfedf9acf732740ac6b34/0671f/plakat_2023_03.webp 1080w,/static/bd3df371bc1bfedf9acf732740ac6b34/7e884/plakat_2023_03.webp 1366w,/static/bd3df371bc1bfedf9acf732740ac6b34/e2c0d/plakat_2023_03.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgens Kopf ist auf einer Sprungfeder in einer Box, die wie ein Springteufel herausragt." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/bd3df371bc1bfedf9acf732740ac6b34/84817/plakat_2023_03.png" data-srcset="/static/bd3df371bc1bfedf9acf732740ac6b34/b8e70/plakat_2023_03.png 750w,/static/bd3df371bc1bfedf9acf732740ac6b34/e5839/plakat_2023_03.png 1080w,/static/bd3df371bc1bfedf9acf732740ac6b34/f51d5/plakat_2023_03.png 1366w,/static/bd3df371bc1bfedf9acf732740ac6b34/84817/plakat_2023_03.png 1920w" alt="Poster: Jürgens Kopf ist auf einer Sprungfeder in einer Box, die wie ein Springteufel herausragt."/></picture><noscript><picture><source type="image/webp" srcSet="/static/bd3df371bc1bfedf9acf732740ac6b34/e5d6f/plakat_2023_03.webp 750w,/static/bd3df371bc1bfedf9acf732740ac6b34/0671f/plakat_2023_03.webp 1080w,/static/bd3df371bc1bfedf9acf732740ac6b34/7e884/plakat_2023_03.webp 1366w,/static/bd3df371bc1bfedf9acf732740ac6b34/e2c0d/plakat_2023_03.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgens Kopf ist auf einer Sprungfeder in einer Box, die wie ein Springteufel herausragt." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/bd3df371bc1bfedf9acf732740ac6b34/84817/plakat_2023_03.png" srcSet="/static/bd3df371bc1bfedf9acf732740ac6b34/b8e70/plakat_2023_03.png 750w,/static/bd3df371bc1bfedf9acf732740ac6b34/e5839/plakat_2023_03.png 1080w,/static/bd3df371bc1bfedf9acf732740ac6b34/f51d5/plakat_2023_03.png 1366w,/static/bd3df371bc1bfedf9acf732740ac6b34/84817/plakat_2023_03.png 1920w" alt="Poster: Jürgens Kopf ist auf einer Sprungfeder in einer Box, die wie ein Springteufel herausragt."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="85b5c33a-1b3d-5625-8375-408b5c1f84bf"><a href="/talks/2023-02-22-exception_first/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#e88838;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/69a227ac221f5d70680e1772e2b66652/e5d6f/plakat_2023_02.webp 750w,/static/69a227ac221f5d70680e1772e2b66652/0671f/plakat_2023_02.webp 1080w,/static/69a227ac221f5d70680e1772e2b66652/7e884/plakat_2023_02.webp 1366w,/static/69a227ac221f5d70680e1772e2b66652/e2c0d/plakat_2023_02.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/69a227ac221f5d70680e1772e2b66652/84817/plakat_2023_02.png" data-srcset="/static/69a227ac221f5d70680e1772e2b66652/b8e70/plakat_2023_02.png 750w,/static/69a227ac221f5d70680e1772e2b66652/e5839/plakat_2023_02.png 1080w,/static/69a227ac221f5d70680e1772e2b66652/f51d5/plakat_2023_02.png 1366w,/static/69a227ac221f5d70680e1772e2b66652/84817/plakat_2023_02.png 1920w" alt="Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert."/></picture><noscript><picture><source type="image/webp" srcSet="/static/69a227ac221f5d70680e1772e2b66652/e5d6f/plakat_2023_02.webp 750w,/static/69a227ac221f5d70680e1772e2b66652/0671f/plakat_2023_02.webp 1080w,/static/69a227ac221f5d70680e1772e2b66652/7e884/plakat_2023_02.webp 1366w,/static/69a227ac221f5d70680e1772e2b66652/e2c0d/plakat_2023_02.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/69a227ac221f5d70680e1772e2b66652/84817/plakat_2023_02.png" srcSet="/static/69a227ac221f5d70680e1772e2b66652/b8e70/plakat_2023_02.png 750w,/static/69a227ac221f5d70680e1772e2b66652/e5839/plakat_2023_02.png 1080w,/static/69a227ac221f5d70680e1772e2b66652/f51d5/plakat_2023_02.png 1366w,/static/69a227ac221f5d70680e1772e2b66652/84817/plakat_2023_02.png 1920w" alt="Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="86c1c8d2-94ea-5866-bbdb-3ac21398dcc3"><a href="/talks/2023-01-25-contentlab/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#9868a8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/8f15082e67d772dd339121432ea649d9/e5d6f/plakat_2023_01.webp 750w,/static/8f15082e67d772dd339121432ea649d9/0671f/plakat_2023_01.webp 1080w,/static/8f15082e67d772dd339121432ea649d9/7e884/plakat_2023_01.webp 1366w,/static/8f15082e67d772dd339121432ea649d9/e2c0d/plakat_2023_01.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt einen Laborkittel und eine Schutzbrille. In der Hand trägt er zwei Reagenzgläser. Scheinbar ist bei seinem Experiment etwas explodiert denn über Jürgen und den Gläsern ziehen Rauchschwaden auf, Jürgen ist komplett grau vom Explosionsstaub." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/8f15082e67d772dd339121432ea649d9/84817/plakat_2023_01.png" data-srcset="/static/8f15082e67d772dd339121432ea649d9/b8e70/plakat_2023_01.png 750w,/static/8f15082e67d772dd339121432ea649d9/e5839/plakat_2023_01.png 1080w,/static/8f15082e67d772dd339121432ea649d9/f51d5/plakat_2023_01.png 1366w,/static/8f15082e67d772dd339121432ea649d9/84817/plakat_2023_01.png 1920w" alt="Poster: Jürgen trägt einen Laborkittel und eine Schutzbrille. In der Hand trägt er zwei Reagenzgläser. Scheinbar ist bei seinem Experiment etwas explodiert denn über Jürgen und den Gläsern ziehen Rauchschwaden auf, Jürgen ist komplett grau vom Explosionsstaub."/></picture><noscript><picture><source type="image/webp" srcSet="/static/8f15082e67d772dd339121432ea649d9/e5d6f/plakat_2023_01.webp 750w,/static/8f15082e67d772dd339121432ea649d9/0671f/plakat_2023_01.webp 1080w,/static/8f15082e67d772dd339121432ea649d9/7e884/plakat_2023_01.webp 1366w,/static/8f15082e67d772dd339121432ea649d9/e2c0d/plakat_2023_01.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt einen Laborkittel und eine Schutzbrille. In der Hand trägt er zwei Reagenzgläser. Scheinbar ist bei seinem Experiment etwas explodiert denn über Jürgen und den Gläsern ziehen Rauchschwaden auf, Jürgen ist komplett grau vom Explosionsstaub." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/8f15082e67d772dd339121432ea649d9/84817/plakat_2023_01.png" srcSet="/static/8f15082e67d772dd339121432ea649d9/b8e70/plakat_2023_01.png 750w,/static/8f15082e67d772dd339121432ea649d9/e5839/plakat_2023_01.png 1080w,/static/8f15082e67d772dd339121432ea649d9/f51d5/plakat_2023_01.png 1366w,/static/8f15082e67d772dd339121432ea649d9/84817/plakat_2023_01.png 1920w" alt="Poster: Jürgen trägt einen Laborkittel und eine Schutzbrille. In der Hand trägt er zwei Reagenzgläser. Scheinbar ist bei seinem Experiment etwas explodiert denn über Jürgen und den Gläsern ziehen Rauchschwaden auf, Jürgen ist komplett grau vom Explosionsstaub."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="0b48a461-1420-5309-b315-926387e3fc44"><a href="/talks/2022-11-30-iam-keycloak/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#f8f8f8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/4313899aa2d31ed4b1e24d7d91e8c20a/e5d6f/plakat_2022_11.webp 750w,/static/4313899aa2d31ed4b1e24d7d91e8c20a/0671f/plakat_2022_11.webp 1080w,/static/4313899aa2d31ed4b1e24d7d91e8c20a/7e884/plakat_2022_11.webp 1366w,/static/4313899aa2d31ed4b1e24d7d91e8c20a/e2c0d/plakat_2022_11.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/4313899aa2d31ed4b1e24d7d91e8c20a/84817/plakat_2022_11.png" data-srcset="/static/4313899aa2d31ed4b1e24d7d91e8c20a/b8e70/plakat_2022_11.png 750w,/static/4313899aa2d31ed4b1e24d7d91e8c20a/e5839/plakat_2022_11.png 1080w,/static/4313899aa2d31ed4b1e24d7d91e8c20a/f51d5/plakat_2022_11.png 1366w,/static/4313899aa2d31ed4b1e24d7d91e8c20a/84817/plakat_2022_11.png 1920w" alt="Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten."/></picture><noscript><picture><source type="image/webp" srcSet="/static/4313899aa2d31ed4b1e24d7d91e8c20a/e5d6f/plakat_2022_11.webp 750w,/static/4313899aa2d31ed4b1e24d7d91e8c20a/0671f/plakat_2022_11.webp 1080w,/static/4313899aa2d31ed4b1e24d7d91e8c20a/7e884/plakat_2022_11.webp 1366w,/static/4313899aa2d31ed4b1e24d7d91e8c20a/e2c0d/plakat_2022_11.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/4313899aa2d31ed4b1e24d7d91e8c20a/84817/plakat_2022_11.png" srcSet="/static/4313899aa2d31ed4b1e24d7d91e8c20a/b8e70/plakat_2022_11.png 750w,/static/4313899aa2d31ed4b1e24d7d91e8c20a/e5839/plakat_2022_11.png 1080w,/static/4313899aa2d31ed4b1e24d7d91e8c20a/f51d5/plakat_2022_11.png 1366w,/static/4313899aa2d31ed4b1e24d7d91e8c20a/84817/plakat_2022_11.png 1920w" alt="Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="1a0dbc74-dd80-5566-aa7d-5a4aac2ba518"><a href="/talks/2022-10-12-indistrie_4.0/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#28b898;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/f522849df2b2b8add5330999b1f5a484/e5d6f/plakat_2022_10.webp 750w,/static/f522849df2b2b8add5330999b1f5a484/0671f/plakat_2022_10.webp 1080w,/static/f522849df2b2b8add5330999b1f5a484/7e884/plakat_2022_10.webp 1366w,/static/f522849df2b2b8add5330999b1f5a484/e2c0d/plakat_2022_10.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und auf der Wolke ist ein Baukran zusehen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/f522849df2b2b8add5330999b1f5a484/84817/plakat_2022_10.png" data-srcset="/static/f522849df2b2b8add5330999b1f5a484/b8e70/plakat_2022_10.png 750w,/static/f522849df2b2b8add5330999b1f5a484/e5839/plakat_2022_10.png 1080w,/static/f522849df2b2b8add5330999b1f5a484/f51d5/plakat_2022_10.png 1366w,/static/f522849df2b2b8add5330999b1f5a484/84817/plakat_2022_10.png 1920w" alt="Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und auf der Wolke ist ein Baukran zusehen."/></picture><noscript><picture><source type="image/webp" srcSet="/static/f522849df2b2b8add5330999b1f5a484/e5d6f/plakat_2022_10.webp 750w,/static/f522849df2b2b8add5330999b1f5a484/0671f/plakat_2022_10.webp 1080w,/static/f522849df2b2b8add5330999b1f5a484/7e884/plakat_2022_10.webp 1366w,/static/f522849df2b2b8add5330999b1f5a484/e2c0d/plakat_2022_10.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und auf der Wolke ist ein Baukran zusehen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/f522849df2b2b8add5330999b1f5a484/84817/plakat_2022_10.png" srcSet="/static/f522849df2b2b8add5330999b1f5a484/b8e70/plakat_2022_10.png 750w,/static/f522849df2b2b8add5330999b1f5a484/e5839/plakat_2022_10.png 1080w,/static/f522849df2b2b8add5330999b1f5a484/f51d5/plakat_2022_10.png 1366w,/static/f522849df2b2b8add5330999b1f5a484/84817/plakat_2022_10.png 1920w" alt="Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und auf der Wolke ist ein Baukran zusehen."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="fff1b9ff-e9ff-5fc3-ac26-c00c71f16bde"><a href="/talks/2022-06-22-iot-infrastruktur-serverless/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#f8b838;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/16e022022a45fa9f5687edc16e865aec/e5d6f/plakat_2022_06.webp 750w,/static/16e022022a45fa9f5687edc16e865aec/0671f/plakat_2022_06.webp 1080w,/static/16e022022a45fa9f5687edc16e865aec/7e884/plakat_2022_06.webp 1366w,/static/16e022022a45fa9f5687edc16e865aec/e2c0d/plakat_2022_06.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen spielt eine Flöte. Hinter ihm sieht man einen Weg auf dem Jürgen gelaufen kommt. Hinter ihm ist ein Smartphone und eine Waschmaschine, jeweils mit Armen, Beinen und Gesicht. Die Gesichter der Geräte sehen aus wie paralysiert und sie halten ihre Arme wie Zombies nach Vorn. Sie folgen Jürgen, so als wäre er der Rattenfänger von Hameln." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/16e022022a45fa9f5687edc16e865aec/84817/plakat_2022_06.png" data-srcset="/static/16e022022a45fa9f5687edc16e865aec/b8e70/plakat_2022_06.png 750w,/static/16e022022a45fa9f5687edc16e865aec/e5839/plakat_2022_06.png 1080w,/static/16e022022a45fa9f5687edc16e865aec/f51d5/plakat_2022_06.png 1366w,/static/16e022022a45fa9f5687edc16e865aec/84817/plakat_2022_06.png 1920w" alt="Poster: Jürgen spielt eine Flöte. Hinter ihm sieht man einen Weg auf dem Jürgen gelaufen kommt. Hinter ihm ist ein Smartphone und eine Waschmaschine, jeweils mit Armen, Beinen und Gesicht. Die Gesichter der Geräte sehen aus wie paralysiert und sie halten ihre Arme wie Zombies nach Vorn. Sie folgen Jürgen, so als wäre er der Rattenfänger von Hameln."/></picture><noscript><picture><source type="image/webp" srcSet="/static/16e022022a45fa9f5687edc16e865aec/e5d6f/plakat_2022_06.webp 750w,/static/16e022022a45fa9f5687edc16e865aec/0671f/plakat_2022_06.webp 1080w,/static/16e022022a45fa9f5687edc16e865aec/7e884/plakat_2022_06.webp 1366w,/static/16e022022a45fa9f5687edc16e865aec/e2c0d/plakat_2022_06.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen spielt eine Flöte. Hinter ihm sieht man einen Weg auf dem Jürgen gelaufen kommt. Hinter ihm ist ein Smartphone und eine Waschmaschine, jeweils mit Armen, Beinen und Gesicht. Die Gesichter der Geräte sehen aus wie paralysiert und sie halten ihre Arme wie Zombies nach Vorn. Sie folgen Jürgen, so als wäre er der Rattenfänger von Hameln." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/16e022022a45fa9f5687edc16e865aec/84817/plakat_2022_06.png" srcSet="/static/16e022022a45fa9f5687edc16e865aec/b8e70/plakat_2022_06.png 750w,/static/16e022022a45fa9f5687edc16e865aec/e5839/plakat_2022_06.png 1080w,/static/16e022022a45fa9f5687edc16e865aec/f51d5/plakat_2022_06.png 1366w,/static/16e022022a45fa9f5687edc16e865aec/84817/plakat_2022_06.png 1920w" alt="Poster: Jürgen spielt eine Flöte. Hinter ihm sieht man einen Weg auf dem Jürgen gelaufen kommt. Hinter ihm ist ein Smartphone und eine Waschmaschine, jeweils mit Armen, Beinen und Gesicht. Die Gesichter der Geräte sehen aus wie paralysiert und sie halten ihre Arme wie Zombies nach Vorn. Sie folgen Jürgen, so als wäre er der Rattenfänger von Hameln."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="1567f34a-c228-511c-a368-2041cf79e3fa"><a href="/talks/2021-06-30-microstream/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#f85838;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/8f427a4552cb3ca64fe96511228f5a57/e5d6f/plakat_2021_06.webp 750w,/static/8f427a4552cb3ca64fe96511228f5a57/0671f/plakat_2021_06.webp 1080w,/static/8f427a4552cb3ca64fe96511228f5a57/7e884/plakat_2021_06.webp 1366w,/static/8f427a4552cb3ca64fe96511228f5a57/e2c0d/plakat_2021_06.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen sitzt am Tisch und überlegt. Er spielt Memory und hat gerade eine aufgedeckte Memory-Karte mit dem Java-Duke darauf in der Hand. Auf dem Tisch sind die anderen Karten zugedeckt, bis auf eine offene Karte. Auf dieser ist ein Datenbank-Symbol zu sehen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/8f427a4552cb3ca64fe96511228f5a57/84817/plakat_2021_06.png" data-srcset="/static/8f427a4552cb3ca64fe96511228f5a57/b8e70/plakat_2021_06.png 750w,/static/8f427a4552cb3ca64fe96511228f5a57/e5839/plakat_2021_06.png 1080w,/static/8f427a4552cb3ca64fe96511228f5a57/f51d5/plakat_2021_06.png 1366w,/static/8f427a4552cb3ca64fe96511228f5a57/84817/plakat_2021_06.png 1920w" alt="Poster: Jürgen sitzt am Tisch und überlegt. Er spielt Memory und hat gerade eine aufgedeckte Memory-Karte mit dem Java-Duke darauf in der Hand. Auf dem Tisch sind die anderen Karten zugedeckt, bis auf eine offene Karte. Auf dieser ist ein Datenbank-Symbol zu sehen."/></picture><noscript><picture><source type="image/webp" srcSet="/static/8f427a4552cb3ca64fe96511228f5a57/e5d6f/plakat_2021_06.webp 750w,/static/8f427a4552cb3ca64fe96511228f5a57/0671f/plakat_2021_06.webp 1080w,/static/8f427a4552cb3ca64fe96511228f5a57/7e884/plakat_2021_06.webp 1366w,/static/8f427a4552cb3ca64fe96511228f5a57/e2c0d/plakat_2021_06.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen sitzt am Tisch und überlegt. Er spielt Memory und hat gerade eine aufgedeckte Memory-Karte mit dem Java-Duke darauf in der Hand. Auf dem Tisch sind die anderen Karten zugedeckt, bis auf eine offene Karte. Auf dieser ist ein Datenbank-Symbol zu sehen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/8f427a4552cb3ca64fe96511228f5a57/84817/plakat_2021_06.png" srcSet="/static/8f427a4552cb3ca64fe96511228f5a57/b8e70/plakat_2021_06.png 750w,/static/8f427a4552cb3ca64fe96511228f5a57/e5839/plakat_2021_06.png 1080w,/static/8f427a4552cb3ca64fe96511228f5a57/f51d5/plakat_2021_06.png 1366w,/static/8f427a4552cb3ca64fe96511228f5a57/84817/plakat_2021_06.png 1920w" alt="Poster: Jürgen sitzt am Tisch und überlegt. Er spielt Memory und hat gerade eine aufgedeckte Memory-Karte mit dem Java-Duke darauf in der Hand. Auf dem Tisch sind die anderen Karten zugedeckt, bis auf eine offene Karte. Auf dieser ist ein Datenbank-Symbol zu sehen."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="9bba5bef-9d0e-50c8-b451-ffed64ad6bd4"><a href="/talks/2021-01-27-webcomponents/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#981848;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/540abccd98049d14ae192d2ada3cbcc3/e5d6f/plakat_2021_01.webp 750w,/static/540abccd98049d14ae192d2ada3cbcc3/0671f/plakat_2021_01.webp 1080w,/static/540abccd98049d14ae192d2ada3cbcc3/7e884/plakat_2021_01.webp 1366w,/static/540abccd98049d14ae192d2ada3cbcc3/e2c0d/plakat_2021_01.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Wir sehen ein großes Spinnennetz, in dem Jürgen gefangen ist. Er hängt verkehrt herum im Netz und sieht ziemlich erschrocken aus." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/540abccd98049d14ae192d2ada3cbcc3/84817/plakat_2021_01.png" data-srcset="/static/540abccd98049d14ae192d2ada3cbcc3/b8e70/plakat_2021_01.png 750w,/static/540abccd98049d14ae192d2ada3cbcc3/e5839/plakat_2021_01.png 1080w,/static/540abccd98049d14ae192d2ada3cbcc3/f51d5/plakat_2021_01.png 1366w,/static/540abccd98049d14ae192d2ada3cbcc3/84817/plakat_2021_01.png 1920w" alt="Poster: Wir sehen ein großes Spinnennetz, in dem Jürgen gefangen ist. Er hängt verkehrt herum im Netz und sieht ziemlich erschrocken aus."/></picture><noscript><picture><source type="image/webp" srcSet="/static/540abccd98049d14ae192d2ada3cbcc3/e5d6f/plakat_2021_01.webp 750w,/static/540abccd98049d14ae192d2ada3cbcc3/0671f/plakat_2021_01.webp 1080w,/static/540abccd98049d14ae192d2ada3cbcc3/7e884/plakat_2021_01.webp 1366w,/static/540abccd98049d14ae192d2ada3cbcc3/e2c0d/plakat_2021_01.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Wir sehen ein großes Spinnennetz, in dem Jürgen gefangen ist. Er hängt verkehrt herum im Netz und sieht ziemlich erschrocken aus." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/540abccd98049d14ae192d2ada3cbcc3/84817/plakat_2021_01.png" srcSet="/static/540abccd98049d14ae192d2ada3cbcc3/b8e70/plakat_2021_01.png 750w,/static/540abccd98049d14ae192d2ada3cbcc3/e5839/plakat_2021_01.png 1080w,/static/540abccd98049d14ae192d2ada3cbcc3/f51d5/plakat_2021_01.png 1366w,/static/540abccd98049d14ae192d2ada3cbcc3/84817/plakat_2021_01.png 1920w" alt="Poster: Wir sehen ein großes Spinnennetz, in dem Jürgen gefangen ist. Er hängt verkehrt herum im Netz und sieht ziemlich erschrocken aus."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="b5a8cec9-632e-5d2d-acc3-45cfdedb6dfa"><a href="/talks/2020-11-25-secure_coding/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#182838;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/c2b6e13c2719de1c7a0da2b790067455/e5d6f/plakat_2020_11.webp 750w,/static/c2b6e13c2719de1c7a0da2b790067455/0671f/plakat_2020_11.webp 1080w,/static/c2b6e13c2719de1c7a0da2b790067455/7e884/plakat_2020_11.webp 1366w,/static/c2b6e13c2719de1c7a0da2b790067455/e2c0d/plakat_2020_11.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt eine schwarze Woll-Mütze und eine schwarze Maske. Er trägt Handschuhe und sieht aus wie ein Einbrecher. Im Hintergrund sieht man eine Wohnungstür, vor der Jürgen kniet. Er hat einen Dietrich in der Hand und versucht gerade, dass Schloß zu knacken. Wir sehen Jürgens Rücken und er schaut zu uns über die Schulter. Seinem Blick zu urteilen, ist er überrascht weil wir ihn beim Einbrechen erwischt haben." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/c2b6e13c2719de1c7a0da2b790067455/84817/plakat_2020_11.png" data-srcset="/static/c2b6e13c2719de1c7a0da2b790067455/b8e70/plakat_2020_11.png 750w,/static/c2b6e13c2719de1c7a0da2b790067455/e5839/plakat_2020_11.png 1080w,/static/c2b6e13c2719de1c7a0da2b790067455/f51d5/plakat_2020_11.png 1366w,/static/c2b6e13c2719de1c7a0da2b790067455/84817/plakat_2020_11.png 1920w" alt="Poster: Jürgen trägt eine schwarze Woll-Mütze und eine schwarze Maske. Er trägt Handschuhe und sieht aus wie ein Einbrecher. Im Hintergrund sieht man eine Wohnungstür, vor der Jürgen kniet. Er hat einen Dietrich in der Hand und versucht gerade, dass Schloß zu knacken. Wir sehen Jürgens Rücken und er schaut zu uns über die Schulter. Seinem Blick zu urteilen, ist er überrascht weil wir ihn beim Einbrechen erwischt haben."/></picture><noscript><picture><source type="image/webp" srcSet="/static/c2b6e13c2719de1c7a0da2b790067455/e5d6f/plakat_2020_11.webp 750w,/static/c2b6e13c2719de1c7a0da2b790067455/0671f/plakat_2020_11.webp 1080w,/static/c2b6e13c2719de1c7a0da2b790067455/7e884/plakat_2020_11.webp 1366w,/static/c2b6e13c2719de1c7a0da2b790067455/e2c0d/plakat_2020_11.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt eine schwarze Woll-Mütze und eine schwarze Maske. Er trägt Handschuhe und sieht aus wie ein Einbrecher. Im Hintergrund sieht man eine Wohnungstür, vor der Jürgen kniet. Er hat einen Dietrich in der Hand und versucht gerade, dass Schloß zu knacken. Wir sehen Jürgens Rücken und er schaut zu uns über die Schulter. Seinem Blick zu urteilen, ist er überrascht weil wir ihn beim Einbrechen erwischt haben." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/c2b6e13c2719de1c7a0da2b790067455/84817/plakat_2020_11.png" srcSet="/static/c2b6e13c2719de1c7a0da2b790067455/b8e70/plakat_2020_11.png 750w,/static/c2b6e13c2719de1c7a0da2b790067455/e5839/plakat_2020_11.png 1080w,/static/c2b6e13c2719de1c7a0da2b790067455/f51d5/plakat_2020_11.png 1366w,/static/c2b6e13c2719de1c7a0da2b790067455/84817/plakat_2020_11.png 1920w" alt="Poster: Jürgen trägt eine schwarze Woll-Mütze und eine schwarze Maske. Er trägt Handschuhe und sieht aus wie ein Einbrecher. Im Hintergrund sieht man eine Wohnungstür, vor der Jürgen kniet. Er hat einen Dietrich in der Hand und versucht gerade, dass Schloß zu knacken. Wir sehen Jürgens Rücken und er schaut zu uns über die Schulter. Seinem Blick zu urteilen, ist er überrascht weil wir ihn beim Einbrechen erwischt haben."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="1908832c-2f77-598f-a24b-2bcdee954b3a"><a href="/talks/2020-07-22-branching_modelle/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#d86838;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/595b224b634a1c6694d94578a61bc06c/e5d6f/plakat_2020_07.webp 750w,/static/595b224b634a1c6694d94578a61bc06c/0671f/plakat_2020_07.webp 1080w,/static/595b224b634a1c6694d94578a61bc06c/7e884/plakat_2020_07.webp 1366w,/static/595b224b634a1c6694d94578a61bc06c/e2c0d/plakat_2020_07.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hat einen Schaffner-Hut auf dem Kopf. Er hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier mit der Überschrift 'Fahrplan' geheftet ist. Unter der Überschrift ist ein Streckenplan mit Verzweigungen angedeutet." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/595b224b634a1c6694d94578a61bc06c/84817/plakat_2020_07.png" data-srcset="/static/595b224b634a1c6694d94578a61bc06c/b8e70/plakat_2020_07.png 750w,/static/595b224b634a1c6694d94578a61bc06c/e5839/plakat_2020_07.png 1080w,/static/595b224b634a1c6694d94578a61bc06c/f51d5/plakat_2020_07.png 1366w,/static/595b224b634a1c6694d94578a61bc06c/84817/plakat_2020_07.png 1920w" alt="Poster: Jürgen hat einen Schaffner-Hut auf dem Kopf. Er hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier mit der Überschrift 'Fahrplan' geheftet ist. Unter der Überschrift ist ein Streckenplan mit Verzweigungen angedeutet."/></picture><noscript><picture><source type="image/webp" srcSet="/static/595b224b634a1c6694d94578a61bc06c/e5d6f/plakat_2020_07.webp 750w,/static/595b224b634a1c6694d94578a61bc06c/0671f/plakat_2020_07.webp 1080w,/static/595b224b634a1c6694d94578a61bc06c/7e884/plakat_2020_07.webp 1366w,/static/595b224b634a1c6694d94578a61bc06c/e2c0d/plakat_2020_07.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hat einen Schaffner-Hut auf dem Kopf. Er hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier mit der Überschrift 'Fahrplan' geheftet ist. Unter der Überschrift ist ein Streckenplan mit Verzweigungen angedeutet." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/595b224b634a1c6694d94578a61bc06c/84817/plakat_2020_07.png" srcSet="/static/595b224b634a1c6694d94578a61bc06c/b8e70/plakat_2020_07.png 750w,/static/595b224b634a1c6694d94578a61bc06c/e5839/plakat_2020_07.png 1080w,/static/595b224b634a1c6694d94578a61bc06c/f51d5/plakat_2020_07.png 1366w,/static/595b224b634a1c6694d94578a61bc06c/84817/plakat_2020_07.png 1920w" alt="Poster: Jürgen hat einen Schaffner-Hut auf dem Kopf. Er hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier mit der Überschrift 'Fahrplan' geheftet ist. Unter der Überschrift ist ein Streckenplan mit Verzweigungen angedeutet."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="59ef0a09-a854-5bc5-a122-2d35ddcf6987"><a href="/talks/2020-04-29-jdk14_graalvm/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#486888;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/1b5849494114993b21e29316b4af1f35/e5d6f/plakat_2020_04.webp 750w,/static/1b5849494114993b21e29316b4af1f35/0671f/plakat_2020_04.webp 1080w,/static/1b5849494114993b21e29316b4af1f35/7e884/plakat_2020_04.webp 1366w,/static/1b5849494114993b21e29316b4af1f35/e2c0d/plakat_2020_04.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen sitzt in seinem Sessel. Er trägt sein übliches Jacket, eine Schlafanzug-Hose und Latschen. Neben dem Sessel sieht man seine üblichen schicken Schnürschuhe herumliegen. Er hat ein Headset aufgesetzt und seinen Laptop im Schoß. Jürgen verfolgt den Vortrag aus dem Home-Office. Auf dem Laptop-Deckel ist eine angebissene Banane zusehen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/1b5849494114993b21e29316b4af1f35/84817/plakat_2020_04.png" data-srcset="/static/1b5849494114993b21e29316b4af1f35/b8e70/plakat_2020_04.png 750w,/static/1b5849494114993b21e29316b4af1f35/e5839/plakat_2020_04.png 1080w,/static/1b5849494114993b21e29316b4af1f35/f51d5/plakat_2020_04.png 1366w,/static/1b5849494114993b21e29316b4af1f35/84817/plakat_2020_04.png 1920w" alt="Poster: Jürgen sitzt in seinem Sessel. Er trägt sein übliches Jacket, eine Schlafanzug-Hose und Latschen. Neben dem Sessel sieht man seine üblichen schicken Schnürschuhe herumliegen. Er hat ein Headset aufgesetzt und seinen Laptop im Schoß. Jürgen verfolgt den Vortrag aus dem Home-Office. Auf dem Laptop-Deckel ist eine angebissene Banane zusehen."/></picture><noscript><picture><source type="image/webp" srcSet="/static/1b5849494114993b21e29316b4af1f35/e5d6f/plakat_2020_04.webp 750w,/static/1b5849494114993b21e29316b4af1f35/0671f/plakat_2020_04.webp 1080w,/static/1b5849494114993b21e29316b4af1f35/7e884/plakat_2020_04.webp 1366w,/static/1b5849494114993b21e29316b4af1f35/e2c0d/plakat_2020_04.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen sitzt in seinem Sessel. Er trägt sein übliches Jacket, eine Schlafanzug-Hose und Latschen. Neben dem Sessel sieht man seine üblichen schicken Schnürschuhe herumliegen. Er hat ein Headset aufgesetzt und seinen Laptop im Schoß. Jürgen verfolgt den Vortrag aus dem Home-Office. Auf dem Laptop-Deckel ist eine angebissene Banane zusehen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/1b5849494114993b21e29316b4af1f35/84817/plakat_2020_04.png" srcSet="/static/1b5849494114993b21e29316b4af1f35/b8e70/plakat_2020_04.png 750w,/static/1b5849494114993b21e29316b4af1f35/e5839/plakat_2020_04.png 1080w,/static/1b5849494114993b21e29316b4af1f35/f51d5/plakat_2020_04.png 1366w,/static/1b5849494114993b21e29316b4af1f35/84817/plakat_2020_04.png 1920w" alt="Poster: Jürgen sitzt in seinem Sessel. Er trägt sein übliches Jacket, eine Schlafanzug-Hose und Latschen. Neben dem Sessel sieht man seine üblichen schicken Schnürschuhe herumliegen. Er hat ein Headset aufgesetzt und seinen Laptop im Schoß. Jürgen verfolgt den Vortrag aus dem Home-Office. Auf dem Laptop-Deckel ist eine angebissene Banane zusehen."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="abe046a7-29a3-5710-9b2b-cf4a5ff0c1a2"><a href="/talks/2020-01-27-cloud-foundry/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#583898;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/5ef746b99e05db0762f96d0a28f278da/e5d6f/plakat_2020-01.webp 750w,/static/5ef746b99e05db0762f96d0a28f278da/0671f/plakat_2020-01.webp 1080w,/static/5ef746b99e05db0762f96d0a28f278da/7e884/plakat_2020-01.webp 1366w,/static/5ef746b99e05db0762f96d0a28f278da/e2c0d/plakat_2020-01.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Wir sehen das typische Cloud-Symbol einer Wolke im Vordergrund. Jürgen stützt sich auf die Wolke, so als wäre es ein Kopfkissen. Er stützt seinen Kopf mit einem Arm ab und schaut ein bisschen verträumt. Er wirkt wie in Gedanken versunken." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/5ef746b99e05db0762f96d0a28f278da/84817/plakat_2020-01.png" data-srcset="/static/5ef746b99e05db0762f96d0a28f278da/b8e70/plakat_2020-01.png 750w,/static/5ef746b99e05db0762f96d0a28f278da/e5839/plakat_2020-01.png 1080w,/static/5ef746b99e05db0762f96d0a28f278da/f51d5/plakat_2020-01.png 1366w,/static/5ef746b99e05db0762f96d0a28f278da/84817/plakat_2020-01.png 1920w" alt="Wir sehen das typische Cloud-Symbol einer Wolke im Vordergrund. Jürgen stützt sich auf die Wolke, so als wäre es ein Kopfkissen. Er stützt seinen Kopf mit einem Arm ab und schaut ein bisschen verträumt. Er wirkt wie in Gedanken versunken."/></picture><noscript><picture><source type="image/webp" srcSet="/static/5ef746b99e05db0762f96d0a28f278da/e5d6f/plakat_2020-01.webp 750w,/static/5ef746b99e05db0762f96d0a28f278da/0671f/plakat_2020-01.webp 1080w,/static/5ef746b99e05db0762f96d0a28f278da/7e884/plakat_2020-01.webp 1366w,/static/5ef746b99e05db0762f96d0a28f278da/e2c0d/plakat_2020-01.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Wir sehen das typische Cloud-Symbol einer Wolke im Vordergrund. Jürgen stützt sich auf die Wolke, so als wäre es ein Kopfkissen. Er stützt seinen Kopf mit einem Arm ab und schaut ein bisschen verträumt. Er wirkt wie in Gedanken versunken." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/5ef746b99e05db0762f96d0a28f278da/84817/plakat_2020-01.png" srcSet="/static/5ef746b99e05db0762f96d0a28f278da/b8e70/plakat_2020-01.png 750w,/static/5ef746b99e05db0762f96d0a28f278da/e5839/plakat_2020-01.png 1080w,/static/5ef746b99e05db0762f96d0a28f278da/f51d5/plakat_2020-01.png 1366w,/static/5ef746b99e05db0762f96d0a28f278da/84817/plakat_2020-01.png 1920w" alt="Wir sehen das typische Cloud-Symbol einer Wolke im Vordergrund. Jürgen stützt sich auf die Wolke, so als wäre es ein Kopfkissen. Er stützt seinen Kopf mit einem Arm ab und schaut ein bisschen verträumt. Er wirkt wie in Gedanken versunken."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="6f443280-7e6e-5951-ab2a-0815064e81b4"><a href="/talks/2019-11-28-advanced-bdd-tests/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.45833333333334%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#d86868;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/c5e4690e979964e9c44af61d883856f8/ebc34/plakat_2019_11.webp 750w,/static/c5e4690e979964e9c44af61d883856f8/47da9/plakat_2019_11.webp 1080w,/static/c5e4690e979964e9c44af61d883856f8/659f9/plakat_2019_11.webp 1366w,/static/c5e4690e979964e9c44af61d883856f8/c86cf/plakat_2019_11.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier zusehen ist. Auf dem Blatt steht 'Testplan' oben und darunter sind drei Checkboxen mit angedeuteten Textzeilen daneben." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/c5e4690e979964e9c44af61d883856f8/b6707/plakat_2019_11.png" data-srcset="/static/c5e4690e979964e9c44af61d883856f8/0e3b9/plakat_2019_11.png 750w,/static/c5e4690e979964e9c44af61d883856f8/7aaf4/plakat_2019_11.png 1080w,/static/c5e4690e979964e9c44af61d883856f8/006ba/plakat_2019_11.png 1366w,/static/c5e4690e979964e9c44af61d883856f8/b6707/plakat_2019_11.png 1920w" alt="Poster: Jürgen hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier zusehen ist. Auf dem Blatt steht 'Testplan' oben und darunter sind drei Checkboxen mit angedeuteten Textzeilen daneben."/></picture><noscript><picture><source type="image/webp" srcSet="/static/c5e4690e979964e9c44af61d883856f8/ebc34/plakat_2019_11.webp 750w,/static/c5e4690e979964e9c44af61d883856f8/47da9/plakat_2019_11.webp 1080w,/static/c5e4690e979964e9c44af61d883856f8/659f9/plakat_2019_11.webp 1366w,/static/c5e4690e979964e9c44af61d883856f8/c86cf/plakat_2019_11.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier zusehen ist. Auf dem Blatt steht 'Testplan' oben und darunter sind drei Checkboxen mit angedeuteten Textzeilen daneben." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/c5e4690e979964e9c44af61d883856f8/b6707/plakat_2019_11.png" srcSet="/static/c5e4690e979964e9c44af61d883856f8/0e3b9/plakat_2019_11.png 750w,/static/c5e4690e979964e9c44af61d883856f8/7aaf4/plakat_2019_11.png 1080w,/static/c5e4690e979964e9c44af61d883856f8/006ba/plakat_2019_11.png 1366w,/static/c5e4690e979964e9c44af61d883856f8/b6707/plakat_2019_11.png 1920w" alt="Poster: Jürgen hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier zusehen ist. Auf dem Blatt steht 'Testplan' oben und darunter sind drei Checkboxen mit angedeuteten Textzeilen daneben."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="ecc9b098-2be1-50e1-87d8-48488a256061"><a href="/talks/2019-06-26-collection-framework/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.45833333333334%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#389838;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/359c95f2d624a1b8d7167b6ff2c5340c/ebc34/plakat_2019_06.webp 750w,/static/359c95f2d624a1b8d7167b6ff2c5340c/47da9/plakat_2019_06.webp 1080w,/static/359c95f2d624a1b8d7167b6ff2c5340c/659f9/plakat_2019_06.webp 1366w,/static/359c95f2d624a1b8d7167b6ff2c5340c/c86cf/plakat_2019_06.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt eine Sonnenbrille und ein buntes Hemd mit Blumen darauf. Er hält sich die Hand ans Kinn und grinst, so als würde er gerade einen Plan schmieden. An seinem Hemd hängt ein Schild mit der Aufschrift 'Sommer Collection'." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/359c95f2d624a1b8d7167b6ff2c5340c/b6707/plakat_2019_06.png" data-srcset="/static/359c95f2d624a1b8d7167b6ff2c5340c/0e3b9/plakat_2019_06.png 750w,/static/359c95f2d624a1b8d7167b6ff2c5340c/7aaf4/plakat_2019_06.png 1080w,/static/359c95f2d624a1b8d7167b6ff2c5340c/006ba/plakat_2019_06.png 1366w,/static/359c95f2d624a1b8d7167b6ff2c5340c/b6707/plakat_2019_06.png 1920w" alt="Poster: Jürgen trägt eine Sonnenbrille und ein buntes Hemd mit Blumen darauf. Er hält sich die Hand ans Kinn und grinst, so als würde er gerade einen Plan schmieden. An seinem Hemd hängt ein Schild mit der Aufschrift 'Sommer Collection'."/></picture><noscript><picture><source type="image/webp" srcSet="/static/359c95f2d624a1b8d7167b6ff2c5340c/ebc34/plakat_2019_06.webp 750w,/static/359c95f2d624a1b8d7167b6ff2c5340c/47da9/plakat_2019_06.webp 1080w,/static/359c95f2d624a1b8d7167b6ff2c5340c/659f9/plakat_2019_06.webp 1366w,/static/359c95f2d624a1b8d7167b6ff2c5340c/c86cf/plakat_2019_06.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt eine Sonnenbrille und ein buntes Hemd mit Blumen darauf. Er hält sich die Hand ans Kinn und grinst, so als würde er gerade einen Plan schmieden. An seinem Hemd hängt ein Schild mit der Aufschrift 'Sommer Collection'." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/359c95f2d624a1b8d7167b6ff2c5340c/b6707/plakat_2019_06.png" srcSet="/static/359c95f2d624a1b8d7167b6ff2c5340c/0e3b9/plakat_2019_06.png 750w,/static/359c95f2d624a1b8d7167b6ff2c5340c/7aaf4/plakat_2019_06.png 1080w,/static/359c95f2d624a1b8d7167b6ff2c5340c/006ba/plakat_2019_06.png 1366w,/static/359c95f2d624a1b8d7167b6ff2c5340c/b6707/plakat_2019_06.png 1920w" alt="Poster: Jürgen trägt eine Sonnenbrille und ein buntes Hemd mit Blumen darauf. Er hält sich die Hand ans Kinn und grinst, so als würde er gerade einen Plan schmieden. An seinem Hemd hängt ein Schild mit der Aufschrift 'Sommer Collection'."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="cb4beaed-8514-5a8a-8dfe-7bec12fbdd27"><a href="/talks/2019-05-29-oauth/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.45833333333334%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#386898;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/eaf6c5845a5ab5a40e0dd634a7eaed23/ebc34/plakat_2019_05.webp 750w,/static/eaf6c5845a5ab5a40e0dd634a7eaed23/47da9/plakat_2019_05.webp 1080w,/static/eaf6c5845a5ab5a40e0dd634a7eaed23/659f9/plakat_2019_05.webp 1366w,/static/eaf6c5845a5ab5a40e0dd634a7eaed23/c86cf/plakat_2019_05.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/eaf6c5845a5ab5a40e0dd634a7eaed23/b6707/plakat_2019_05.png" data-srcset="/static/eaf6c5845a5ab5a40e0dd634a7eaed23/0e3b9/plakat_2019_05.png 750w,/static/eaf6c5845a5ab5a40e0dd634a7eaed23/7aaf4/plakat_2019_05.png 1080w,/static/eaf6c5845a5ab5a40e0dd634a7eaed23/006ba/plakat_2019_05.png 1366w,/static/eaf6c5845a5ab5a40e0dd634a7eaed23/b6707/plakat_2019_05.png 1920w" alt="Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten."/></picture><noscript><picture><source type="image/webp" srcSet="/static/eaf6c5845a5ab5a40e0dd634a7eaed23/ebc34/plakat_2019_05.webp 750w,/static/eaf6c5845a5ab5a40e0dd634a7eaed23/47da9/plakat_2019_05.webp 1080w,/static/eaf6c5845a5ab5a40e0dd634a7eaed23/659f9/plakat_2019_05.webp 1366w,/static/eaf6c5845a5ab5a40e0dd634a7eaed23/c86cf/plakat_2019_05.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/eaf6c5845a5ab5a40e0dd634a7eaed23/b6707/plakat_2019_05.png" srcSet="/static/eaf6c5845a5ab5a40e0dd634a7eaed23/0e3b9/plakat_2019_05.png 750w,/static/eaf6c5845a5ab5a40e0dd634a7eaed23/7aaf4/plakat_2019_05.png 1080w,/static/eaf6c5845a5ab5a40e0dd634a7eaed23/006ba/plakat_2019_05.png 1366w,/static/eaf6c5845a5ab5a40e0dd634a7eaed23/b6707/plakat_2019_05.png 1920w" alt="Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="e335d1a1-3789-5e42-9670-a3e1c361eadc"><a href="/talks/2019-04-24_jdk_jungle/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.45833333333334%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#f8f8f8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/32de550f9e63747cb85192fa0598ae2c/ebc34/plakat_2019_04.webp 750w,/static/32de550f9e63747cb85192fa0598ae2c/47da9/plakat_2019_04.webp 1080w,/static/32de550f9e63747cb85192fa0598ae2c/659f9/plakat_2019_04.webp 1366w,/static/32de550f9e63747cb85192fa0598ae2c/c86cf/plakat_2019_04.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält eine Schriftrolle mit offiziellen Siegel in der Hand und liest wie ein mittelalterlicher Herold daraus vor. Wir sehen leider nicht den Text auf der Schriftrolle." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/32de550f9e63747cb85192fa0598ae2c/b6707/plakat_2019_04.png" data-srcset="/static/32de550f9e63747cb85192fa0598ae2c/0e3b9/plakat_2019_04.png 750w,/static/32de550f9e63747cb85192fa0598ae2c/7aaf4/plakat_2019_04.png 1080w,/static/32de550f9e63747cb85192fa0598ae2c/006ba/plakat_2019_04.png 1366w,/static/32de550f9e63747cb85192fa0598ae2c/b6707/plakat_2019_04.png 1920w" alt="Poster: Jürgen hält eine Schriftrolle mit offiziellen Siegel in der Hand und liest wie ein mittelalterlicher Herold daraus vor. Wir sehen leider nicht den Text auf der Schriftrolle."/></picture><noscript><picture><source type="image/webp" srcSet="/static/32de550f9e63747cb85192fa0598ae2c/ebc34/plakat_2019_04.webp 750w,/static/32de550f9e63747cb85192fa0598ae2c/47da9/plakat_2019_04.webp 1080w,/static/32de550f9e63747cb85192fa0598ae2c/659f9/plakat_2019_04.webp 1366w,/static/32de550f9e63747cb85192fa0598ae2c/c86cf/plakat_2019_04.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält eine Schriftrolle mit offiziellen Siegel in der Hand und liest wie ein mittelalterlicher Herold daraus vor. Wir sehen leider nicht den Text auf der Schriftrolle." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/32de550f9e63747cb85192fa0598ae2c/b6707/plakat_2019_04.png" srcSet="/static/32de550f9e63747cb85192fa0598ae2c/0e3b9/plakat_2019_04.png 750w,/static/32de550f9e63747cb85192fa0598ae2c/7aaf4/plakat_2019_04.png 1080w,/static/32de550f9e63747cb85192fa0598ae2c/006ba/plakat_2019_04.png 1366w,/static/32de550f9e63747cb85192fa0598ae2c/b6707/plakat_2019_04.png 1920w" alt="Poster: Jürgen hält eine Schriftrolle mit offiziellen Siegel in der Hand und liest wie ein mittelalterlicher Herold daraus vor. Wir sehen leider nicht den Text auf der Schriftrolle."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="bffb7b05-0e58-5922-92df-21ce241ccd84"><a href="/talks/2019-03-27-static-site-generators/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.45161290322582%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#a8c868;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/a69cadfbb400620dadfb89d178c1c8db/ebc34/plakat_2019_03.webp 750w,/static/a69cadfbb400620dadfb89d178c1c8db/47da9/plakat_2019_03.webp 1080w,/static/a69cadfbb400620dadfb89d178c1c8db/5c55f/plakat_2019_03.webp 1240w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält einen Kasten in der Hand mit jeweils einem Trichter oben und unten. Oben gibt er zwei Dokumente hinein und unten fällt das Bild einer Webseite heraus. Auf dem Kasten ist das Logo von Gatsbyjs zu sehen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/a69cadfbb400620dadfb89d178c1c8db/a6b6d/plakat_2019_03.png" data-srcset="/static/a69cadfbb400620dadfb89d178c1c8db/0e3b9/plakat_2019_03.png 750w,/static/a69cadfbb400620dadfb89d178c1c8db/7aaf4/plakat_2019_03.png 1080w,/static/a69cadfbb400620dadfb89d178c1c8db/a6b6d/plakat_2019_03.png 1240w" alt="Poster: Jürgen hält einen Kasten in der Hand mit jeweils einem Trichter oben und unten. Oben gibt er zwei Dokumente hinein und unten fällt das Bild einer Webseite heraus. Auf dem Kasten ist das Logo von Gatsbyjs zu sehen."/></picture><noscript><picture><source type="image/webp" srcSet="/static/a69cadfbb400620dadfb89d178c1c8db/ebc34/plakat_2019_03.webp 750w,/static/a69cadfbb400620dadfb89d178c1c8db/47da9/plakat_2019_03.webp 1080w,/static/a69cadfbb400620dadfb89d178c1c8db/5c55f/plakat_2019_03.webp 1240w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält einen Kasten in der Hand mit jeweils einem Trichter oben und unten. Oben gibt er zwei Dokumente hinein und unten fällt das Bild einer Webseite heraus. Auf dem Kasten ist das Logo von Gatsbyjs zu sehen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/a69cadfbb400620dadfb89d178c1c8db/a6b6d/plakat_2019_03.png" srcSet="/static/a69cadfbb400620dadfb89d178c1c8db/0e3b9/plakat_2019_03.png 750w,/static/a69cadfbb400620dadfb89d178c1c8db/7aaf4/plakat_2019_03.png 1080w,/static/a69cadfbb400620dadfb89d178c1c8db/a6b6d/plakat_2019_03.png 1240w" alt="Poster: Jürgen hält einen Kasten in der Hand mit jeweils einem Trichter oben und unten. Oben gibt er zwei Dokumente hinein und unten fällt das Bild einer Webseite heraus. Auf dem Kasten ist das Logo von Gatsbyjs zu sehen."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="b2cb5256-0c61-5e8b-8a34-23f74562f16f"><a href="/talks/2019-02-27_reflection/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#78b8b8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/15923e5b77de857597a70091dfe03bd5/e5d6f/plakat_2019_02.webp 750w,/static/15923e5b77de857597a70091dfe03bd5/0671f/plakat_2019_02.webp 1080w,/static/15923e5b77de857597a70091dfe03bd5/7e884/plakat_2019_02.webp 1366w,/static/15923e5b77de857597a70091dfe03bd5/e2c0d/plakat_2019_02.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/15923e5b77de857597a70091dfe03bd5/84817/plakat_2019_02.png" data-srcset="/static/15923e5b77de857597a70091dfe03bd5/b8e70/plakat_2019_02.png 750w,/static/15923e5b77de857597a70091dfe03bd5/e5839/plakat_2019_02.png 1080w,/static/15923e5b77de857597a70091dfe03bd5/f51d5/plakat_2019_02.png 1366w,/static/15923e5b77de857597a70091dfe03bd5/84817/plakat_2019_02.png 1920w" alt="Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand."/></picture><noscript><picture><source type="image/webp" srcSet="/static/15923e5b77de857597a70091dfe03bd5/e5d6f/plakat_2019_02.webp 750w,/static/15923e5b77de857597a70091dfe03bd5/0671f/plakat_2019_02.webp 1080w,/static/15923e5b77de857597a70091dfe03bd5/7e884/plakat_2019_02.webp 1366w,/static/15923e5b77de857597a70091dfe03bd5/e2c0d/plakat_2019_02.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/15923e5b77de857597a70091dfe03bd5/84817/plakat_2019_02.png" srcSet="/static/15923e5b77de857597a70091dfe03bd5/b8e70/plakat_2019_02.png 750w,/static/15923e5b77de857597a70091dfe03bd5/e5839/plakat_2019_02.png 1080w,/static/15923e5b77de857597a70091dfe03bd5/f51d5/plakat_2019_02.png 1366w,/static/15923e5b77de857597a70091dfe03bd5/84817/plakat_2019_02.png 1920w" alt="Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="8509bc59-0ad5-5d24-87e3-f253d53d68b2"><a href="/talks/2019-01-31_java_apis_missing_manual/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#3858b8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/8c4759d0cca5ff005992863b4cbbfd0c/e5d6f/plakat_2019_01.webp 750w,/static/8c4759d0cca5ff005992863b4cbbfd0c/0671f/plakat_2019_01.webp 1080w,/static/8c4759d0cca5ff005992863b4cbbfd0c/7e884/plakat_2019_01.webp 1366w,/static/8c4759d0cca5ff005992863b4cbbfd0c/e2c0d/plakat_2019_01.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen sitzt mit seiner Lesebrille in seinem Sessel und liest ein Buch. Auf dem Buchrücken steht 'Javadoc'" data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/8c4759d0cca5ff005992863b4cbbfd0c/84817/plakat_2019_01.png" data-srcset="/static/8c4759d0cca5ff005992863b4cbbfd0c/b8e70/plakat_2019_01.png 750w,/static/8c4759d0cca5ff005992863b4cbbfd0c/e5839/plakat_2019_01.png 1080w,/static/8c4759d0cca5ff005992863b4cbbfd0c/f51d5/plakat_2019_01.png 1366w,/static/8c4759d0cca5ff005992863b4cbbfd0c/84817/plakat_2019_01.png 1920w" alt="Poster: Jürgen sitzt mit seiner Lesebrille in seinem Sessel und liest ein Buch. Auf dem Buchrücken steht 'Javadoc'"/></picture><noscript><picture><source type="image/webp" srcSet="/static/8c4759d0cca5ff005992863b4cbbfd0c/e5d6f/plakat_2019_01.webp 750w,/static/8c4759d0cca5ff005992863b4cbbfd0c/0671f/plakat_2019_01.webp 1080w,/static/8c4759d0cca5ff005992863b4cbbfd0c/7e884/plakat_2019_01.webp 1366w,/static/8c4759d0cca5ff005992863b4cbbfd0c/e2c0d/plakat_2019_01.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen sitzt mit seiner Lesebrille in seinem Sessel und liest ein Buch. Auf dem Buchrücken steht 'Javadoc'" data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/8c4759d0cca5ff005992863b4cbbfd0c/84817/plakat_2019_01.png" srcSet="/static/8c4759d0cca5ff005992863b4cbbfd0c/b8e70/plakat_2019_01.png 750w,/static/8c4759d0cca5ff005992863b4cbbfd0c/e5839/plakat_2019_01.png 1080w,/static/8c4759d0cca5ff005992863b4cbbfd0c/f51d5/plakat_2019_01.png 1366w,/static/8c4759d0cca5ff005992863b4cbbfd0c/84817/plakat_2019_01.png 1920w" alt="Poster: Jürgen sitzt mit seiner Lesebrille in seinem Sessel und liest ein Buch. Auf dem Buchrücken steht 'Javadoc'"/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="918002c9-e393-5b8d-a2d6-ee73c1735383"><a href="/talks/2018-11-23-monadische_transaktionen/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#680838;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/d29473cce93e3ade3231fd7ea7b0188e/e5d6f/plakat_2018_11.webp 750w,/static/d29473cce93e3ade3231fd7ea7b0188e/0671f/plakat_2018_11.webp 1080w,/static/d29473cce93e3ade3231fd7ea7b0188e/7e884/plakat_2018_11.webp 1366w,/static/d29473cce93e3ade3231fd7ea7b0188e/e2c0d/plakat_2018_11.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen grinst und hält ein Tablett in der Hand. Auf dem Tablett steht eine durchsichtige Flasche mit gelber Limo darin. Auf dem Etikett steht 'Li-Monade' geschrieben." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/d29473cce93e3ade3231fd7ea7b0188e/84817/plakat_2018_11.png" data-srcset="/static/d29473cce93e3ade3231fd7ea7b0188e/b8e70/plakat_2018_11.png 750w,/static/d29473cce93e3ade3231fd7ea7b0188e/e5839/plakat_2018_11.png 1080w,/static/d29473cce93e3ade3231fd7ea7b0188e/f51d5/plakat_2018_11.png 1366w,/static/d29473cce93e3ade3231fd7ea7b0188e/84817/plakat_2018_11.png 1920w" alt="Poster: Jürgen grinst und hält ein Tablett in der Hand. Auf dem Tablett steht eine durchsichtige Flasche mit gelber Limo darin. Auf dem Etikett steht 'Li-Monade' geschrieben."/></picture><noscript><picture><source type="image/webp" srcSet="/static/d29473cce93e3ade3231fd7ea7b0188e/e5d6f/plakat_2018_11.webp 750w,/static/d29473cce93e3ade3231fd7ea7b0188e/0671f/plakat_2018_11.webp 1080w,/static/d29473cce93e3ade3231fd7ea7b0188e/7e884/plakat_2018_11.webp 1366w,/static/d29473cce93e3ade3231fd7ea7b0188e/e2c0d/plakat_2018_11.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen grinst und hält ein Tablett in der Hand. Auf dem Tablett steht eine durchsichtige Flasche mit gelber Limo darin. Auf dem Etikett steht 'Li-Monade' geschrieben." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/d29473cce93e3ade3231fd7ea7b0188e/84817/plakat_2018_11.png" srcSet="/static/d29473cce93e3ade3231fd7ea7b0188e/b8e70/plakat_2018_11.png 750w,/static/d29473cce93e3ade3231fd7ea7b0188e/e5839/plakat_2018_11.png 1080w,/static/d29473cce93e3ade3231fd7ea7b0188e/f51d5/plakat_2018_11.png 1366w,/static/d29473cce93e3ade3231fd7ea7b0188e/84817/plakat_2018_11.png 1920w" alt="Poster: Jürgen grinst und hält ein Tablett in der Hand. Auf dem Tablett steht eine durchsichtige Flasche mit gelber Limo darin. Auf dem Etikett steht 'Li-Monade' geschrieben."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="f72f3e37-dad2-51b5-9e2a-b6413a70715c"><a href="/posts/2018-07-31-grillabend/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#d88828;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/ef0ba78d7c603390b50fd5bee9599b5a/e5d6f/plakat_2017_07.webp 750w,/static/ef0ba78d7c603390b50fd5bee9599b5a/0671f/plakat_2017_07.webp 1080w,/static/ef0ba78d7c603390b50fd5bee9599b5a/7e884/plakat_2017_07.webp 1366w,/static/ef0ba78d7c603390b50fd5bee9599b5a/e2c0d/plakat_2017_07.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen grinst und hält einen Teller mit Bratwürsten in der Hand" data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/ef0ba78d7c603390b50fd5bee9599b5a/84817/plakat_2017_07.png" data-srcset="/static/ef0ba78d7c603390b50fd5bee9599b5a/b8e70/plakat_2017_07.png 750w,/static/ef0ba78d7c603390b50fd5bee9599b5a/e5839/plakat_2017_07.png 1080w,/static/ef0ba78d7c603390b50fd5bee9599b5a/f51d5/plakat_2017_07.png 1366w,/static/ef0ba78d7c603390b50fd5bee9599b5a/84817/plakat_2017_07.png 1920w" alt="Poster: Jürgen grinst und hält einen Teller mit Bratwürsten in der Hand"/></picture><noscript><picture><source type="image/webp" srcSet="/static/ef0ba78d7c603390b50fd5bee9599b5a/e5d6f/plakat_2017_07.webp 750w,/static/ef0ba78d7c603390b50fd5bee9599b5a/0671f/plakat_2017_07.webp 1080w,/static/ef0ba78d7c603390b50fd5bee9599b5a/7e884/plakat_2017_07.webp 1366w,/static/ef0ba78d7c603390b50fd5bee9599b5a/e2c0d/plakat_2017_07.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen grinst und hält einen Teller mit Bratwürsten in der Hand" data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/ef0ba78d7c603390b50fd5bee9599b5a/84817/plakat_2017_07.png" srcSet="/static/ef0ba78d7c603390b50fd5bee9599b5a/b8e70/plakat_2017_07.png 750w,/static/ef0ba78d7c603390b50fd5bee9599b5a/e5839/plakat_2017_07.png 1080w,/static/ef0ba78d7c603390b50fd5bee9599b5a/f51d5/plakat_2017_07.png 1366w,/static/ef0ba78d7c603390b50fd5bee9599b5a/84817/plakat_2017_07.png 1920w" alt="Poster: Jürgen grinst und hält einen Teller mit Bratwürsten in der Hand"/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="314ba704-f1f4-5d2c-8535-b32da028a3c9"><a href="/talks/2018-06-27-immutable-data/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#780838;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/1fae33eb72f57d492a22e010e53219f1/e5d6f/plakat_2018_06.webp 750w,/static/1fae33eb72f57d492a22e010e53219f1/0671f/plakat_2018_06.webp 1080w,/static/1fae33eb72f57d492a22e010e53219f1/7e884/plakat_2018_06.webp 1366w,/static/1fae33eb72f57d492a22e010e53219f1/e2c0d/plakat_2018_06.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen steht vor einem großen Steinblock, der fast aussieht wie ein Grabstein. Auf dem Stein sind lauter Nullen und Einsen eingraviert. Er hält einen Hammer und Meißel in der Hand." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/1fae33eb72f57d492a22e010e53219f1/84817/plakat_2018_06.png" data-srcset="/static/1fae33eb72f57d492a22e010e53219f1/b8e70/plakat_2018_06.png 750w,/static/1fae33eb72f57d492a22e010e53219f1/e5839/plakat_2018_06.png 1080w,/static/1fae33eb72f57d492a22e010e53219f1/f51d5/plakat_2018_06.png 1366w,/static/1fae33eb72f57d492a22e010e53219f1/84817/plakat_2018_06.png 1920w" alt="Poster: Jürgen steht vor einem großen Steinblock, der fast aussieht wie ein Grabstein. Auf dem Stein sind lauter Nullen und Einsen eingraviert. Er hält einen Hammer und Meißel in der Hand."/></picture><noscript><picture><source type="image/webp" srcSet="/static/1fae33eb72f57d492a22e010e53219f1/e5d6f/plakat_2018_06.webp 750w,/static/1fae33eb72f57d492a22e010e53219f1/0671f/plakat_2018_06.webp 1080w,/static/1fae33eb72f57d492a22e010e53219f1/7e884/plakat_2018_06.webp 1366w,/static/1fae33eb72f57d492a22e010e53219f1/e2c0d/plakat_2018_06.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen steht vor einem großen Steinblock, der fast aussieht wie ein Grabstein. Auf dem Stein sind lauter Nullen und Einsen eingraviert. Er hält einen Hammer und Meißel in der Hand." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/1fae33eb72f57d492a22e010e53219f1/84817/plakat_2018_06.png" srcSet="/static/1fae33eb72f57d492a22e010e53219f1/b8e70/plakat_2018_06.png 750w,/static/1fae33eb72f57d492a22e010e53219f1/e5839/plakat_2018_06.png 1080w,/static/1fae33eb72f57d492a22e010e53219f1/f51d5/plakat_2018_06.png 1366w,/static/1fae33eb72f57d492a22e010e53219f1/84817/plakat_2018_06.png 1920w" alt="Poster: Jürgen steht vor einem großen Steinblock, der fast aussieht wie ein Grabstein. Auf dem Stein sind lauter Nullen und Einsen eingraviert. Er hält einen Hammer und Meißel in der Hand."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="90e1be0b-07fd-5977-ad85-c716671424c1"><a href="/talks/2018-05-30-graphql/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#e838a8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/70801d1cf0778b63b022c58e167483bf/e5d6f/plakat_2018_05.webp 750w,/static/70801d1cf0778b63b022c58e167483bf/0671f/plakat_2018_05.webp 1080w,/static/70801d1cf0778b63b022c58e167483bf/7e884/plakat_2018_05.webp 1366w,/static/70801d1cf0778b63b022c58e167483bf/e2c0d/plakat_2018_05.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das GraphQL-Logo zu sehen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/70801d1cf0778b63b022c58e167483bf/84817/plakat_2018_05.png" data-srcset="/static/70801d1cf0778b63b022c58e167483bf/b8e70/plakat_2018_05.png 750w,/static/70801d1cf0778b63b022c58e167483bf/e5839/plakat_2018_05.png 1080w,/static/70801d1cf0778b63b022c58e167483bf/f51d5/plakat_2018_05.png 1366w,/static/70801d1cf0778b63b022c58e167483bf/84817/plakat_2018_05.png 1920w" alt="Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das GraphQL-Logo zu sehen."/></picture><noscript><picture><source type="image/webp" srcSet="/static/70801d1cf0778b63b022c58e167483bf/e5d6f/plakat_2018_05.webp 750w,/static/70801d1cf0778b63b022c58e167483bf/0671f/plakat_2018_05.webp 1080w,/static/70801d1cf0778b63b022c58e167483bf/7e884/plakat_2018_05.webp 1366w,/static/70801d1cf0778b63b022c58e167483bf/e2c0d/plakat_2018_05.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das GraphQL-Logo zu sehen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/70801d1cf0778b63b022c58e167483bf/84817/plakat_2018_05.png" srcSet="/static/70801d1cf0778b63b022c58e167483bf/b8e70/plakat_2018_05.png 750w,/static/70801d1cf0778b63b022c58e167483bf/e5839/plakat_2018_05.png 1080w,/static/70801d1cf0778b63b022c58e167483bf/f51d5/plakat_2018_05.png 1366w,/static/70801d1cf0778b63b022c58e167483bf/84817/plakat_2018_05.png 1920w" alt="Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das GraphQL-Logo zu sehen."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="1a259f6b-01d1-58d9-9813-e4fb56a34153"><a href="/talks/2018-04-25-kotlin/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#d8b808;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/7425eb2154d8ac0def6b6a91b1bc7b2d/ebc34/plakat_2018_04.webp 750w,/static/7425eb2154d8ac0def6b6a91b1bc7b2d/0671f/plakat_2018_04.webp 1080w,/static/7425eb2154d8ac0def6b6a91b1bc7b2d/659f9/plakat_2018_04.webp 1366w,/static/7425eb2154d8ac0def6b6a91b1bc7b2d/e2c0d/plakat_2018_04.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält einen Globus in der Hand und platziert eine kleine Fahne an die Stelle der russischen Insel 'Kotlin'. Er trägt eine russische Fell-Mütze" data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/7425eb2154d8ac0def6b6a91b1bc7b2d/84817/plakat_2018_04.png" data-srcset="/static/7425eb2154d8ac0def6b6a91b1bc7b2d/0e3b9/plakat_2018_04.png 750w,/static/7425eb2154d8ac0def6b6a91b1bc7b2d/e5839/plakat_2018_04.png 1080w,/static/7425eb2154d8ac0def6b6a91b1bc7b2d/006ba/plakat_2018_04.png 1366w,/static/7425eb2154d8ac0def6b6a91b1bc7b2d/84817/plakat_2018_04.png 1920w" alt="Poster: Jürgen hält einen Globus in der Hand und platziert eine kleine Fahne an die Stelle der russischen Insel 'Kotlin'. Er trägt eine russische Fell-Mütze"/></picture><noscript><picture><source type="image/webp" srcSet="/static/7425eb2154d8ac0def6b6a91b1bc7b2d/ebc34/plakat_2018_04.webp 750w,/static/7425eb2154d8ac0def6b6a91b1bc7b2d/0671f/plakat_2018_04.webp 1080w,/static/7425eb2154d8ac0def6b6a91b1bc7b2d/659f9/plakat_2018_04.webp 1366w,/static/7425eb2154d8ac0def6b6a91b1bc7b2d/e2c0d/plakat_2018_04.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält einen Globus in der Hand und platziert eine kleine Fahne an die Stelle der russischen Insel 'Kotlin'. Er trägt eine russische Fell-Mütze" data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/7425eb2154d8ac0def6b6a91b1bc7b2d/84817/plakat_2018_04.png" srcSet="/static/7425eb2154d8ac0def6b6a91b1bc7b2d/0e3b9/plakat_2018_04.png 750w,/static/7425eb2154d8ac0def6b6a91b1bc7b2d/e5839/plakat_2018_04.png 1080w,/static/7425eb2154d8ac0def6b6a91b1bc7b2d/006ba/plakat_2018_04.png 1366w,/static/7425eb2154d8ac0def6b6a91b1bc7b2d/84817/plakat_2018_04.png 1920w" alt="Poster: Jürgen hält einen Globus in der Hand und platziert eine kleine Fahne an die Stelle der russischen Insel 'Kotlin'. Er trägt eine russische Fell-Mütze"/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="96d1873a-e218-5bea-9d77-8dc2e42dbbc6"><a href="/talks/2018-03-20-mikro_vs_makroarchitektur/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#082868;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/6067d1db118af9c9218894cda3ecec37/ebc34/plakat_2018_03.webp 750w,/static/6067d1db118af9c9218894cda3ecec37/0671f/plakat_2018_03.webp 1080w,/static/6067d1db118af9c9218894cda3ecec37/659f9/plakat_2018_03.webp 1366w,/static/6067d1db118af9c9218894cda3ecec37/e2c0d/plakat_2018_03.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen freut sich und hält einen Bauplan in der Hand." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/6067d1db118af9c9218894cda3ecec37/84817/plakat_2018_03.png" data-srcset="/static/6067d1db118af9c9218894cda3ecec37/0e3b9/plakat_2018_03.png 750w,/static/6067d1db118af9c9218894cda3ecec37/e5839/plakat_2018_03.png 1080w,/static/6067d1db118af9c9218894cda3ecec37/006ba/plakat_2018_03.png 1366w,/static/6067d1db118af9c9218894cda3ecec37/84817/plakat_2018_03.png 1920w" alt="Poster: Jürgen freut sich und hält einen Bauplan in der Hand."/></picture><noscript><picture><source type="image/webp" srcSet="/static/6067d1db118af9c9218894cda3ecec37/ebc34/plakat_2018_03.webp 750w,/static/6067d1db118af9c9218894cda3ecec37/0671f/plakat_2018_03.webp 1080w,/static/6067d1db118af9c9218894cda3ecec37/659f9/plakat_2018_03.webp 1366w,/static/6067d1db118af9c9218894cda3ecec37/e2c0d/plakat_2018_03.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen freut sich und hält einen Bauplan in der Hand." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/6067d1db118af9c9218894cda3ecec37/84817/plakat_2018_03.png" srcSet="/static/6067d1db118af9c9218894cda3ecec37/0e3b9/plakat_2018_03.png 750w,/static/6067d1db118af9c9218894cda3ecec37/e5839/plakat_2018_03.png 1080w,/static/6067d1db118af9c9218894cda3ecec37/006ba/plakat_2018_03.png 1366w,/static/6067d1db118af9c9218894cda3ecec37/84817/plakat_2018_03.png 1920w" alt="Poster: Jürgen freut sich und hält einen Bauplan in der Hand."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="65d7329c-3fb6-5a77-8b25-3984a599f9e8"><a href="/talks/2018-02-28-java_auf_sap_cloud/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#78b8b8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/55c9a31f3c453bcd2592f54f307655df/ebc34/plakat_2018_02.webp 750w,/static/55c9a31f3c453bcd2592f54f307655df/0671f/plakat_2018_02.webp 1080w,/static/55c9a31f3c453bcd2592f54f307655df/659f9/plakat_2018_02.webp 1366w,/static/55c9a31f3c453bcd2592f54f307655df/e2c0d/plakat_2018_02.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält einige kleine Programm-Fenster in der Hand. Er hebt die Programme in eine Wolke, die sich hinter ihm befindet. Die Wolke sieht aus wie das Cloud-Symbol." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/55c9a31f3c453bcd2592f54f307655df/84817/plakat_2018_02.png" data-srcset="/static/55c9a31f3c453bcd2592f54f307655df/0e3b9/plakat_2018_02.png 750w,/static/55c9a31f3c453bcd2592f54f307655df/e5839/plakat_2018_02.png 1080w,/static/55c9a31f3c453bcd2592f54f307655df/006ba/plakat_2018_02.png 1366w,/static/55c9a31f3c453bcd2592f54f307655df/84817/plakat_2018_02.png 1920w" alt="Poster: Jürgen hält einige kleine Programm-Fenster in der Hand. Er hebt die Programme in eine Wolke, die sich hinter ihm befindet. Die Wolke sieht aus wie das Cloud-Symbol."/></picture><noscript><picture><source type="image/webp" srcSet="/static/55c9a31f3c453bcd2592f54f307655df/ebc34/plakat_2018_02.webp 750w,/static/55c9a31f3c453bcd2592f54f307655df/0671f/plakat_2018_02.webp 1080w,/static/55c9a31f3c453bcd2592f54f307655df/659f9/plakat_2018_02.webp 1366w,/static/55c9a31f3c453bcd2592f54f307655df/e2c0d/plakat_2018_02.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält einige kleine Programm-Fenster in der Hand. Er hebt die Programme in eine Wolke, die sich hinter ihm befindet. Die Wolke sieht aus wie das Cloud-Symbol." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/55c9a31f3c453bcd2592f54f307655df/84817/plakat_2018_02.png" srcSet="/static/55c9a31f3c453bcd2592f54f307655df/0e3b9/plakat_2018_02.png 750w,/static/55c9a31f3c453bcd2592f54f307655df/e5839/plakat_2018_02.png 1080w,/static/55c9a31f3c453bcd2592f54f307655df/006ba/plakat_2018_02.png 1366w,/static/55c9a31f3c453bcd2592f54f307655df/84817/plakat_2018_02.png 1920w" alt="Poster: Jürgen hält einige kleine Programm-Fenster in der Hand. Er hebt die Programme in eine Wolke, die sich hinter ihm befindet. Die Wolke sieht aus wie das Cloud-Symbol."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="9685adbf-d27b-5f98-934a-54d7dc3fcdb8"><a href="/talks/2018-01-31-system_of_systems/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.41821112006448%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#383898;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/88afeee4b9b4d069f5896633d252a8d6/ebc34/plakat_2018_01.webp 750w,/static/88afeee4b9b4d069f5896633d252a8d6/0671f/plakat_2018_01.webp 1080w,/static/88afeee4b9b4d069f5896633d252a8d6/cbc2f/plakat_2018_01.webp 1241w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Wir sehen Jürgen über die Schulter, wie er einen Bauplan in der Hand hält und mit einer Schere in kleinere Stücke zerschneidet." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/88afeee4b9b4d069f5896633d252a8d6/242cd/plakat_2018_01.png" data-srcset="/static/88afeee4b9b4d069f5896633d252a8d6/0e3b9/plakat_2018_01.png 750w,/static/88afeee4b9b4d069f5896633d252a8d6/e5839/plakat_2018_01.png 1080w,/static/88afeee4b9b4d069f5896633d252a8d6/242cd/plakat_2018_01.png 1241w" alt="Poster: Wir sehen Jürgen über die Schulter, wie er einen Bauplan in der Hand hält und mit einer Schere in kleinere Stücke zerschneidet."/></picture><noscript><picture><source type="image/webp" srcSet="/static/88afeee4b9b4d069f5896633d252a8d6/ebc34/plakat_2018_01.webp 750w,/static/88afeee4b9b4d069f5896633d252a8d6/0671f/plakat_2018_01.webp 1080w,/static/88afeee4b9b4d069f5896633d252a8d6/cbc2f/plakat_2018_01.webp 1241w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Wir sehen Jürgen über die Schulter, wie er einen Bauplan in der Hand hält und mit einer Schere in kleinere Stücke zerschneidet." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/88afeee4b9b4d069f5896633d252a8d6/242cd/plakat_2018_01.png" srcSet="/static/88afeee4b9b4d069f5896633d252a8d6/0e3b9/plakat_2018_01.png 750w,/static/88afeee4b9b4d069f5896633d252a8d6/e5839/plakat_2018_01.png 1080w,/static/88afeee4b9b4d069f5896633d252a8d6/242cd/plakat_2018_01.png 1241w" alt="Poster: Wir sehen Jürgen über die Schulter, wie er einen Bauplan in der Hand hält und mit einer Schere in kleinere Stücke zerschneidet."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="0d8148d9-9587-5da3-aaf0-f92c5603d344"><a href="/talks/2017-11-29-neo4j/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#587828;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/b722dd1b2e5bde00c9706fb3bb19bd30/ebc34/plakat_2017_11.webp 750w,/static/b722dd1b2e5bde00c9706fb3bb19bd30/0671f/plakat_2017_11.webp 1080w,/static/b722dd1b2e5bde00c9706fb3bb19bd30/659f9/plakat_2017_11.webp 1366w,/static/b722dd1b2e5bde00c9706fb3bb19bd30/e2c0d/plakat_2017_11.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen sitzt im Sessel mit seiner Lesebrille und liest ein Buch. Auf dem Buch ist der Neo4J-Schriftzug zu lesen und darunter der Titel 'Graf Datenbankula' als Anspielung auf Graf Drakula. Entsprechend sieht man bei Jurgen spitze Schneidezähne, wie bei einem Vampir." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/b722dd1b2e5bde00c9706fb3bb19bd30/84817/plakat_2017_11.png" data-srcset="/static/b722dd1b2e5bde00c9706fb3bb19bd30/0e3b9/plakat_2017_11.png 750w,/static/b722dd1b2e5bde00c9706fb3bb19bd30/e5839/plakat_2017_11.png 1080w,/static/b722dd1b2e5bde00c9706fb3bb19bd30/006ba/plakat_2017_11.png 1366w,/static/b722dd1b2e5bde00c9706fb3bb19bd30/84817/plakat_2017_11.png 1920w" alt="Poster: Jürgen sitzt im Sessel mit seiner Lesebrille und liest ein Buch. Auf dem Buch ist der Neo4J-Schriftzug zu lesen und darunter der Titel 'Graf Datenbankula' als Anspielung auf Graf Drakula. Entsprechend sieht man bei Jurgen spitze Schneidezähne, wie bei einem Vampir."/></picture><noscript><picture><source type="image/webp" srcSet="/static/b722dd1b2e5bde00c9706fb3bb19bd30/ebc34/plakat_2017_11.webp 750w,/static/b722dd1b2e5bde00c9706fb3bb19bd30/0671f/plakat_2017_11.webp 1080w,/static/b722dd1b2e5bde00c9706fb3bb19bd30/659f9/plakat_2017_11.webp 1366w,/static/b722dd1b2e5bde00c9706fb3bb19bd30/e2c0d/plakat_2017_11.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen sitzt im Sessel mit seiner Lesebrille und liest ein Buch. Auf dem Buch ist der Neo4J-Schriftzug zu lesen und darunter der Titel 'Graf Datenbankula' als Anspielung auf Graf Drakula. Entsprechend sieht man bei Jurgen spitze Schneidezähne, wie bei einem Vampir." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/b722dd1b2e5bde00c9706fb3bb19bd30/84817/plakat_2017_11.png" srcSet="/static/b722dd1b2e5bde00c9706fb3bb19bd30/0e3b9/plakat_2017_11.png 750w,/static/b722dd1b2e5bde00c9706fb3bb19bd30/e5839/plakat_2017_11.png 1080w,/static/b722dd1b2e5bde00c9706fb3bb19bd30/006ba/plakat_2017_11.png 1366w,/static/b722dd1b2e5bde00c9706fb3bb19bd30/84817/plakat_2017_11.png 1920w" alt="Poster: Jürgen sitzt im Sessel mit seiner Lesebrille und liest ein Buch. Auf dem Buch ist der Neo4J-Schriftzug zu lesen und darunter der Titel 'Graf Datenbankula' als Anspielung auf Graf Drakula. Entsprechend sieht man bei Jurgen spitze Schneidezähne, wie bei einem Vampir."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="754076b2-57c3-5796-89f2-711200e78c58"><a href="/talks/2017-10-25-serverless/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.45234493192135%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#389858;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/2d68f12104a5e2d317ff8ac24a6467cc/fa5c8/plakat_2017_10.webp 661w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/2d68f12104a5e2d317ff8ac24a6467cc/b2ce9/plakat_2017_10.png" data-srcset="/static/2d68f12104a5e2d317ff8ac24a6467cc/b2ce9/plakat_2017_10.png 661w" alt="Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand."/></picture><noscript><picture><source type="image/webp" srcSet="/static/2d68f12104a5e2d317ff8ac24a6467cc/fa5c8/plakat_2017_10.webp 661w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/2d68f12104a5e2d317ff8ac24a6467cc/b2ce9/plakat_2017_10.png" srcSet="/static/2d68f12104a5e2d317ff8ac24a6467cc/b2ce9/plakat_2017_10.png 661w" alt="Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="6b8717ce-a995-58f6-82e5-62fb5ef3cca9"><a href="/talks/2017-05-31-react/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.19791666666669%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#58c8d8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/55786/plakat_2017_05.webp 750w,/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/8631a/plakat_2017_05.webp 1080w,/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/9b1f9/plakat_2017_05.webp 1366w,/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/fc882/plakat_2017_05.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält einen Kasten in der Hand, welcher oben und unten Trichter-Öffnungen besitzt. In den oberen Trichter gibt er zwei Dokumente hinein, während beim unteren Trichter das Bild einer Webseite herausfällt. Auf der Box ist das Logo von React zu sehen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/a2ae3/plakat_2017_05.png" data-srcset="/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/f1722/plakat_2017_05.png 750w,/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/3e58d/plakat_2017_05.png 1080w,/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/8b6fa/plakat_2017_05.png 1366w,/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/a2ae3/plakat_2017_05.png 1920w" alt="Poster: Jürgen hält einen Kasten in der Hand, welcher oben und unten Trichter-Öffnungen besitzt. In den oberen Trichter gibt er zwei Dokumente hinein, während beim unteren Trichter das Bild einer Webseite herausfällt. Auf der Box ist das Logo von React zu sehen."/></picture><noscript><picture><source type="image/webp" srcSet="/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/55786/plakat_2017_05.webp 750w,/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/8631a/plakat_2017_05.webp 1080w,/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/9b1f9/plakat_2017_05.webp 1366w,/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/fc882/plakat_2017_05.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält einen Kasten in der Hand, welcher oben und unten Trichter-Öffnungen besitzt. In den oberen Trichter gibt er zwei Dokumente hinein, während beim unteren Trichter das Bild einer Webseite herausfällt. Auf der Box ist das Logo von React zu sehen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/a2ae3/plakat_2017_05.png" srcSet="/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/f1722/plakat_2017_05.png 750w,/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/3e58d/plakat_2017_05.png 1080w,/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/8b6fa/plakat_2017_05.png 1366w,/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/a2ae3/plakat_2017_05.png 1920w" alt="Poster: Jürgen hält einen Kasten in der Hand, welcher oben und unten Trichter-Öffnungen besitzt. In den oberen Trichter gibt er zwei Dokumente hinein, während beim unteren Trichter das Bild einer Webseite herausfällt. Auf der Box ist das Logo von React zu sehen."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="2573407c-9387-55d4-81ac-f02dffdbfe14"><a href="/talks/2017-04-26-jdk9/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#38a838;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/68885bd1bc71b7c02926be143e289b72/ebc34/plakat_2017_04.webp 750w,/static/68885bd1bc71b7c02926be143e289b72/0671f/plakat_2017_04.webp 1080w,/static/68885bd1bc71b7c02926be143e289b72/659f9/plakat_2017_04.webp 1366w,/static/68885bd1bc71b7c02926be143e289b72/e2c0d/plakat_2017_04.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen sitzt am Tisch vor einem Puzzle. Er überlegt, wo er das nächste Puzzle-Teil einsetzen soll. Man erkennt bereits, dass das Puzzle ein Java-Duke darstellt, das Maskottchen von Java." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/68885bd1bc71b7c02926be143e289b72/84817/plakat_2017_04.png" data-srcset="/static/68885bd1bc71b7c02926be143e289b72/0e3b9/plakat_2017_04.png 750w,/static/68885bd1bc71b7c02926be143e289b72/e5839/plakat_2017_04.png 1080w,/static/68885bd1bc71b7c02926be143e289b72/006ba/plakat_2017_04.png 1366w,/static/68885bd1bc71b7c02926be143e289b72/84817/plakat_2017_04.png 1920w" alt="Poster: Jürgen sitzt am Tisch vor einem Puzzle. Er überlegt, wo er das nächste Puzzle-Teil einsetzen soll. Man erkennt bereits, dass das Puzzle ein Java-Duke darstellt, das Maskottchen von Java."/></picture><noscript><picture><source type="image/webp" srcSet="/static/68885bd1bc71b7c02926be143e289b72/ebc34/plakat_2017_04.webp 750w,/static/68885bd1bc71b7c02926be143e289b72/0671f/plakat_2017_04.webp 1080w,/static/68885bd1bc71b7c02926be143e289b72/659f9/plakat_2017_04.webp 1366w,/static/68885bd1bc71b7c02926be143e289b72/e2c0d/plakat_2017_04.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen sitzt am Tisch vor einem Puzzle. Er überlegt, wo er das nächste Puzzle-Teil einsetzen soll. Man erkennt bereits, dass das Puzzle ein Java-Duke darstellt, das Maskottchen von Java." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/68885bd1bc71b7c02926be143e289b72/84817/plakat_2017_04.png" srcSet="/static/68885bd1bc71b7c02926be143e289b72/0e3b9/plakat_2017_04.png 750w,/static/68885bd1bc71b7c02926be143e289b72/e5839/plakat_2017_04.png 1080w,/static/68885bd1bc71b7c02926be143e289b72/006ba/plakat_2017_04.png 1366w,/static/68885bd1bc71b7c02926be143e289b72/84817/plakat_2017_04.png 1920w" alt="Poster: Jürgen sitzt am Tisch vor einem Puzzle. Er überlegt, wo er das nächste Puzzle-Teil einsetzen soll. Man erkennt bereits, dass das Puzzle ein Java-Duke darstellt, das Maskottchen von Java."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="eddd4dc5-4156-509b-bf5c-e09b0c5c330e"><a href="/talks/2017-03-22-angular/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#084858;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/402904640aadf345c0f4e136c31ec42a/ebc34/plakat_2017_03.webp 750w,/static/402904640aadf345c0f4e136c31ec42a/0671f/plakat_2017_03.webp 1080w,/static/402904640aadf345c0f4e136c31ec42a/659f9/plakat_2017_03.webp 1366w,/static/402904640aadf345c0f4e136c31ec42a/e2c0d/plakat_2017_03.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen schaut ernst. Er trägt ein Schwert in der Hand und ein Schild mit dem einem großen A darauf. Das Schild ist eine Referenz auf das Angular-Logo, welches ebenfalls wie ein Schild aussieht." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/402904640aadf345c0f4e136c31ec42a/84817/plakat_2017_03.png" data-srcset="/static/402904640aadf345c0f4e136c31ec42a/0e3b9/plakat_2017_03.png 750w,/static/402904640aadf345c0f4e136c31ec42a/e5839/plakat_2017_03.png 1080w,/static/402904640aadf345c0f4e136c31ec42a/006ba/plakat_2017_03.png 1366w,/static/402904640aadf345c0f4e136c31ec42a/84817/plakat_2017_03.png 1920w" alt="Poster: Jürgen schaut ernst. Er trägt ein Schwert in der Hand und ein Schild mit dem einem großen A darauf. Das Schild ist eine Referenz auf das Angular-Logo, welches ebenfalls wie ein Schild aussieht."/></picture><noscript><picture><source type="image/webp" srcSet="/static/402904640aadf345c0f4e136c31ec42a/ebc34/plakat_2017_03.webp 750w,/static/402904640aadf345c0f4e136c31ec42a/0671f/plakat_2017_03.webp 1080w,/static/402904640aadf345c0f4e136c31ec42a/659f9/plakat_2017_03.webp 1366w,/static/402904640aadf345c0f4e136c31ec42a/e2c0d/plakat_2017_03.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen schaut ernst. Er trägt ein Schwert in der Hand und ein Schild mit dem einem großen A darauf. Das Schild ist eine Referenz auf das Angular-Logo, welches ebenfalls wie ein Schild aussieht." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/402904640aadf345c0f4e136c31ec42a/84817/plakat_2017_03.png" srcSet="/static/402904640aadf345c0f4e136c31ec42a/0e3b9/plakat_2017_03.png 750w,/static/402904640aadf345c0f4e136c31ec42a/e5839/plakat_2017_03.png 1080w,/static/402904640aadf345c0f4e136c31ec42a/006ba/plakat_2017_03.png 1366w,/static/402904640aadf345c0f4e136c31ec42a/84817/plakat_2017_03.png 1920w" alt="Poster: Jürgen schaut ernst. Er trägt ein Schwert in der Hand und ein Schild mit dem einem großen A darauf. Das Schild ist eine Referenz auf das Angular-Logo, welches ebenfalls wie ein Schild aussieht."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="f98f07d3-05f0-5b44-a8c4-f59df52e978d"><a href="/talks/2017-02-22-css/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#087868;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/17a163b60d0c34cbe1f0cc72f8380225/ebc34/plakat_2017_02.webp 750w,/static/17a163b60d0c34cbe1f0cc72f8380225/0671f/plakat_2017_02.webp 1080w,/static/17a163b60d0c34cbe1f0cc72f8380225/659f9/plakat_2017_02.webp 1366w,/static/17a163b60d0c34cbe1f0cc72f8380225/e2c0d/plakat_2017_02.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt eine Künstler-Mütze zu seinem Anzug. In der Hand hält er eine Maler-Palette und einen Pinsel." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/17a163b60d0c34cbe1f0cc72f8380225/84817/plakat_2017_02.png" data-srcset="/static/17a163b60d0c34cbe1f0cc72f8380225/0e3b9/plakat_2017_02.png 750w,/static/17a163b60d0c34cbe1f0cc72f8380225/e5839/plakat_2017_02.png 1080w,/static/17a163b60d0c34cbe1f0cc72f8380225/006ba/plakat_2017_02.png 1366w,/static/17a163b60d0c34cbe1f0cc72f8380225/84817/plakat_2017_02.png 1920w" alt="Poster: Jürgen trägt eine Künstler-Mütze zu seinem Anzug. In der Hand hält er eine Maler-Palette und einen Pinsel."/></picture><noscript><picture><source type="image/webp" srcSet="/static/17a163b60d0c34cbe1f0cc72f8380225/ebc34/plakat_2017_02.webp 750w,/static/17a163b60d0c34cbe1f0cc72f8380225/0671f/plakat_2017_02.webp 1080w,/static/17a163b60d0c34cbe1f0cc72f8380225/659f9/plakat_2017_02.webp 1366w,/static/17a163b60d0c34cbe1f0cc72f8380225/e2c0d/plakat_2017_02.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt eine Künstler-Mütze zu seinem Anzug. In der Hand hält er eine Maler-Palette und einen Pinsel." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/17a163b60d0c34cbe1f0cc72f8380225/84817/plakat_2017_02.png" srcSet="/static/17a163b60d0c34cbe1f0cc72f8380225/0e3b9/plakat_2017_02.png 750w,/static/17a163b60d0c34cbe1f0cc72f8380225/e5839/plakat_2017_02.png 1080w,/static/17a163b60d0c34cbe1f0cc72f8380225/006ba/plakat_2017_02.png 1366w,/static/17a163b60d0c34cbe1f0cc72f8380225/84817/plakat_2017_02.png 1920w" alt="Poster: Jürgen trägt eine Künstler-Mütze zu seinem Anzug. In der Hand hält er eine Maler-Palette und einen Pinsel."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="389f1a05-558e-58a8-a8f2-8f0f783fbb5f"><a href="/talks/2017-01-25-junit5/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#3868c8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/c46109cdd380f6d96989746b9b268b59/ebc34/plakat_2017_01.webp 750w,/static/c46109cdd380f6d96989746b9b268b59/0671f/plakat_2017_01.webp 1080w,/static/c46109cdd380f6d96989746b9b268b59/659f9/plakat_2017_01.webp 1366w,/static/c46109cdd380f6d96989746b9b268b59/e2c0d/plakat_2017_01.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt einen roten Bauarbeiter-Helm zu seinem Anzug. In der Hand hält er ein Klemmbrett mit dem Logo von JUnit 5 darauf" data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/c46109cdd380f6d96989746b9b268b59/84817/plakat_2017_01.png" data-srcset="/static/c46109cdd380f6d96989746b9b268b59/0e3b9/plakat_2017_01.png 750w,/static/c46109cdd380f6d96989746b9b268b59/e5839/plakat_2017_01.png 1080w,/static/c46109cdd380f6d96989746b9b268b59/006ba/plakat_2017_01.png 1366w,/static/c46109cdd380f6d96989746b9b268b59/84817/plakat_2017_01.png 1920w" alt="Poster: Jürgen trägt einen roten Bauarbeiter-Helm zu seinem Anzug. In der Hand hält er ein Klemmbrett mit dem Logo von JUnit 5 darauf"/></picture><noscript><picture><source type="image/webp" srcSet="/static/c46109cdd380f6d96989746b9b268b59/ebc34/plakat_2017_01.webp 750w,/static/c46109cdd380f6d96989746b9b268b59/0671f/plakat_2017_01.webp 1080w,/static/c46109cdd380f6d96989746b9b268b59/659f9/plakat_2017_01.webp 1366w,/static/c46109cdd380f6d96989746b9b268b59/e2c0d/plakat_2017_01.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt einen roten Bauarbeiter-Helm zu seinem Anzug. In der Hand hält er ein Klemmbrett mit dem Logo von JUnit 5 darauf" data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/c46109cdd380f6d96989746b9b268b59/84817/plakat_2017_01.png" srcSet="/static/c46109cdd380f6d96989746b9b268b59/0e3b9/plakat_2017_01.png 750w,/static/c46109cdd380f6d96989746b9b268b59/e5839/plakat_2017_01.png 1080w,/static/c46109cdd380f6d96989746b9b268b59/006ba/plakat_2017_01.png 1366w,/static/c46109cdd380f6d96989746b9b268b59/84817/plakat_2017_01.png 1920w" alt="Poster: Jürgen trägt einen roten Bauarbeiter-Helm zu seinem Anzug. In der Hand hält er ein Klemmbrett mit dem Logo von JUnit 5 darauf"/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="d5ac0466-71cb-5950-ad4c-692645dec780"><a href="/talks/2016-11-30-inside_jvm/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#185818;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/df12c15a6674e50adc8ef8427b49c6e7/ebc34/plakat_2016_11.webp 750w,/static/df12c15a6674e50adc8ef8427b49c6e7/0671f/plakat_2016_11.webp 1080w,/static/df12c15a6674e50adc8ef8427b49c6e7/659f9/plakat_2016_11.webp 1366w,/static/df12c15a6674e50adc8ef8427b49c6e7/e2c0d/plakat_2016_11.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen grinst und trägt eine Weihnachtsmütze zu seinem üblichen Anzug. Er hält einen Teller mit Keksen vor sich." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/df12c15a6674e50adc8ef8427b49c6e7/84817/plakat_2016_11.png" data-srcset="/static/df12c15a6674e50adc8ef8427b49c6e7/0e3b9/plakat_2016_11.png 750w,/static/df12c15a6674e50adc8ef8427b49c6e7/e5839/plakat_2016_11.png 1080w,/static/df12c15a6674e50adc8ef8427b49c6e7/006ba/plakat_2016_11.png 1366w,/static/df12c15a6674e50adc8ef8427b49c6e7/84817/plakat_2016_11.png 1920w" alt="Poster: Jürgen grinst und trägt eine Weihnachtsmütze zu seinem üblichen Anzug. Er hält einen Teller mit Keksen vor sich."/></picture><noscript><picture><source type="image/webp" srcSet="/static/df12c15a6674e50adc8ef8427b49c6e7/ebc34/plakat_2016_11.webp 750w,/static/df12c15a6674e50adc8ef8427b49c6e7/0671f/plakat_2016_11.webp 1080w,/static/df12c15a6674e50adc8ef8427b49c6e7/659f9/plakat_2016_11.webp 1366w,/static/df12c15a6674e50adc8ef8427b49c6e7/e2c0d/plakat_2016_11.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen grinst und trägt eine Weihnachtsmütze zu seinem üblichen Anzug. Er hält einen Teller mit Keksen vor sich." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/df12c15a6674e50adc8ef8427b49c6e7/84817/plakat_2016_11.png" srcSet="/static/df12c15a6674e50adc8ef8427b49c6e7/0e3b9/plakat_2016_11.png 750w,/static/df12c15a6674e50adc8ef8427b49c6e7/e5839/plakat_2016_11.png 1080w,/static/df12c15a6674e50adc8ef8427b49c6e7/006ba/plakat_2016_11.png 1366w,/static/df12c15a6674e50adc8ef8427b49c6e7/84817/plakat_2016_11.png 1920w" alt="Poster: Jürgen grinst und trägt eine Weihnachtsmütze zu seinem üblichen Anzug. Er hält einen Teller mit Keksen vor sich."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="d76f475f-a8c8-5319-96d2-a1474885f516"><a href="/talks/2016-09-21-kommunikationskultur/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.45833333333334%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#788818;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/614b8174b903933ed9c7392c29039be7/ebc34/plakat_2016_09.webp 750w,/static/614b8174b903933ed9c7392c29039be7/47da9/plakat_2016_09.webp 1080w,/static/614b8174b903933ed9c7392c29039be7/659f9/plakat_2016_09.webp 1366w,/static/614b8174b903933ed9c7392c29039be7/c86cf/plakat_2016_09.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen benutzt ein uraltes Telefon mit separatem Hörer und Mikrofon. Er hält sich den kabelgebundenen Hörer ans Ohr und hält das Mikrofon vor sich in der Hand" data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/614b8174b903933ed9c7392c29039be7/b6707/plakat_2016_09.png" data-srcset="/static/614b8174b903933ed9c7392c29039be7/0e3b9/plakat_2016_09.png 750w,/static/614b8174b903933ed9c7392c29039be7/7aaf4/plakat_2016_09.png 1080w,/static/614b8174b903933ed9c7392c29039be7/006ba/plakat_2016_09.png 1366w,/static/614b8174b903933ed9c7392c29039be7/b6707/plakat_2016_09.png 1920w" alt="Poster: Jürgen benutzt ein uraltes Telefon mit separatem Hörer und Mikrofon. Er hält sich den kabelgebundenen Hörer ans Ohr und hält das Mikrofon vor sich in der Hand"/></picture><noscript><picture><source type="image/webp" srcSet="/static/614b8174b903933ed9c7392c29039be7/ebc34/plakat_2016_09.webp 750w,/static/614b8174b903933ed9c7392c29039be7/47da9/plakat_2016_09.webp 1080w,/static/614b8174b903933ed9c7392c29039be7/659f9/plakat_2016_09.webp 1366w,/static/614b8174b903933ed9c7392c29039be7/c86cf/plakat_2016_09.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen benutzt ein uraltes Telefon mit separatem Hörer und Mikrofon. Er hält sich den kabelgebundenen Hörer ans Ohr und hält das Mikrofon vor sich in der Hand" data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/614b8174b903933ed9c7392c29039be7/b6707/plakat_2016_09.png" srcSet="/static/614b8174b903933ed9c7392c29039be7/0e3b9/plakat_2016_09.png 750w,/static/614b8174b903933ed9c7392c29039be7/7aaf4/plakat_2016_09.png 1080w,/static/614b8174b903933ed9c7392c29039be7/006ba/plakat_2016_09.png 1366w,/static/614b8174b903933ed9c7392c29039be7/b6707/plakat_2016_09.png 1920w" alt="Poster: Jürgen benutzt ein uraltes Telefon mit separatem Hörer und Mikrofon. Er hält sich den kabelgebundenen Hörer ans Ohr und hält das Mikrofon vor sich in der Hand"/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="34708531-529f-5d8b-9a4f-7e69705d60db"><a href="/talks/2016-05-25-performance-analyse-inspectit/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.39784946236557%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#880818;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/db7f178be40d0c331569338538d31bac/874d1/plakat_2016_05.webp 744w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/db7f178be40d0c331569338538d31bac/5ffd7/plakat_2016_05.png" data-srcset="/static/db7f178be40d0c331569338538d31bac/5ffd7/plakat_2016_05.png 744w" alt="Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert."/></picture><noscript><picture><source type="image/webp" srcSet="/static/db7f178be40d0c331569338538d31bac/874d1/plakat_2016_05.webp 744w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/db7f178be40d0c331569338538d31bac/5ffd7/plakat_2016_05.png" srcSet="/static/db7f178be40d0c331569338538d31bac/5ffd7/plakat_2016_05.png 744w" alt="Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="5c9d56a7-72a3-5960-83a9-42dc599be063"><a href="/talks/2016-03-30-haskell_frege/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.39784946236557%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#588888;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/64acc764c3779735c4ad382e9f9c0e6e/874d1/plakat_2016_03.webp 744w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen sitzt auf einem Sessel und liest ein Buch. Er trägt eine Lese-Brille und schaut konzentriert aus. Auf dem Buch ist das Haskell-Logo, ein Lambda-Symbol, zusehen" data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/64acc764c3779735c4ad382e9f9c0e6e/5ffd7/plakat_2016_03.png" data-srcset="/static/64acc764c3779735c4ad382e9f9c0e6e/5ffd7/plakat_2016_03.png 744w" alt="Poster: Jürgen sitzt auf einem Sessel und liest ein Buch. Er trägt eine Lese-Brille und schaut konzentriert aus. Auf dem Buch ist das Haskell-Logo, ein Lambda-Symbol, zusehen"/></picture><noscript><picture><source type="image/webp" srcSet="/static/64acc764c3779735c4ad382e9f9c0e6e/874d1/plakat_2016_03.webp 744w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen sitzt auf einem Sessel und liest ein Buch. Er trägt eine Lese-Brille und schaut konzentriert aus. Auf dem Buch ist das Haskell-Logo, ein Lambda-Symbol, zusehen" data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/64acc764c3779735c4ad382e9f9c0e6e/5ffd7/plakat_2016_03.png" srcSet="/static/64acc764c3779735c4ad382e9f9c0e6e/5ffd7/plakat_2016_03.png 744w" alt="Poster: Jürgen sitzt auf einem Sessel und liest ein Buch. Er trägt eine Lese-Brille und schaut konzentriert aus. Auf dem Buch ist das Haskell-Logo, ein Lambda-Symbol, zusehen"/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="627917ce-c50f-59e9-98d8-4897b4f220c5"><a href="/talks/2016-01-27-functional_java/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.45833333333334%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#d86838;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/1c76b19b6896e55dd13bb48cd2313b20/ebc34/plakat_2016_01.webp 750w,/static/1c76b19b6896e55dd13bb48cd2313b20/47da9/plakat_2016_01.webp 1080w,/static/1c76b19b6896e55dd13bb48cd2313b20/659f9/plakat_2016_01.webp 1366w,/static/1c76b19b6896e55dd13bb48cd2313b20/c86cf/plakat_2016_01.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt einen Anzug und grinst. Er hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das griechische Zeichen Lambda zu sehen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/1c76b19b6896e55dd13bb48cd2313b20/b6707/plakat_2016_01.png" data-srcset="/static/1c76b19b6896e55dd13bb48cd2313b20/0e3b9/plakat_2016_01.png 750w,/static/1c76b19b6896e55dd13bb48cd2313b20/7aaf4/plakat_2016_01.png 1080w,/static/1c76b19b6896e55dd13bb48cd2313b20/006ba/plakat_2016_01.png 1366w,/static/1c76b19b6896e55dd13bb48cd2313b20/b6707/plakat_2016_01.png 1920w" alt="Poster: Jürgen trägt einen Anzug und grinst. Er hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das griechische Zeichen Lambda zu sehen."/></picture><noscript><picture><source type="image/webp" srcSet="/static/1c76b19b6896e55dd13bb48cd2313b20/ebc34/plakat_2016_01.webp 750w,/static/1c76b19b6896e55dd13bb48cd2313b20/47da9/plakat_2016_01.webp 1080w,/static/1c76b19b6896e55dd13bb48cd2313b20/659f9/plakat_2016_01.webp 1366w,/static/1c76b19b6896e55dd13bb48cd2313b20/c86cf/plakat_2016_01.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt einen Anzug und grinst. Er hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das griechische Zeichen Lambda zu sehen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/1c76b19b6896e55dd13bb48cd2313b20/b6707/plakat_2016_01.png" srcSet="/static/1c76b19b6896e55dd13bb48cd2313b20/0e3b9/plakat_2016_01.png 750w,/static/1c76b19b6896e55dd13bb48cd2313b20/7aaf4/plakat_2016_01.png 1080w,/static/1c76b19b6896e55dd13bb48cd2313b20/006ba/plakat_2016_01.png 1366w,/static/1c76b19b6896e55dd13bb48cd2313b20/b6707/plakat_2016_01.png 1920w" alt="Poster: Jürgen trägt einen Anzug und grinst. Er hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das griechische Zeichen Lambda zu sehen."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div></div></div></div><div class="col-md-3"><div class="sidebar"><div><div class="row"><div class="col-12 col-sm-6 col-md-12"><img alt="Logo der JUG Görlitz" src="/static/logo-1d738a22f39c568c148bd4f6433b2ff4.png"/></div><div class="col-12 col-sm-6 col-md-12"><strong>Organisiert vom <br/><a href="https://digitale-oberlausitz.eu">Digitale Oberlausitz e.V.</a></strong><p>Wir sind Mitglied im<br/><a href="http://www.ijug.eu/">iJUG Verband</a></p><p>Links:</p><ul class="list-unstyled"><li><a href="https://ijug.social/@Juggr"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="mastodon" class="svg-inline--fa fa-mastodon " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.54 102.54 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z"></path></svg> Mastodon</a></li><li><a href="https://twitter.com/jug_gr"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="twitter" class="svg-inline--fa fa-twitter " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"></path></svg> Twitter</a></li><li><a href="https://www.facebook.com/juggr"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="facebook" class="svg-inline--fa fa-facebook " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z"></path></svg> Facebook</a></li><li><a href="https://groups.google.com/d/forum/juggr"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="envelope" class="svg-inline--fa fa-envelope " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM0 176V384c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V176L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z"></path></svg> Mailing-List</a></li><li><a href="https://github.com/juggr"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="github" class="svg-inline--fa fa-github " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path fill="currentColor" d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg> Github</a></li><li><a href="/jug-goerlitz.ics"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="calendar-days" class="svg-inline--fa fa-calendar-days " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm64 80v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm128 0v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H336zM64 400v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H208zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H336c-8.8 0-16 7.2-16 16z"></path></svg> Kalender (ICAL)</a></li><li><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="rss" class="svg-inline--fa fa-rss " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM128 416c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z"></path></svg> Feeds:<ul><li><a href="/atom.xml">Atom</a></li><li><a href="/rss.xml">RSS</a></li><li><a href="/feed.json">JSON</a></li></ul></li></ul></div></div></div><br/><div class="banner"><a href="https://www.javaland.eu/"><img alt="Banner für JavaLand 2024" src="/static/javaland_2024_banner-5b59695001cca42ff6a67f0eae6c1923.jpg"/></a></div></div></div></div></div><footer class="container footer"><p><a href="/impressum/">Impressum</a> | <a href="/datenschutz/">Datenschutz</a></p></footer></div><div id="gatsby-announcer" style="position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0" aria-live="assertive" aria-atomic="true"></div></div><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/posters/";/*]]>*/</script><!-- slice-start id="_gatsby-scripts-1" --> +</style><style>.gatsby-image-wrapper{position:relative;overflow:hidden}.gatsby-image-wrapper picture.object-fit-polyfill{position:static!important}.gatsby-image-wrapper img{bottom:0;height:100%;left:0;margin:0;max-width:none;padding:0;position:absolute;right:0;top:0;width:100%;object-fit:cover}.gatsby-image-wrapper [data-main-image]{opacity:0;transform:translateZ(0);transition:opacity .25s linear;will-change:opacity}.gatsby-image-wrapper-constrained{display:inline-block;vertical-align:top}</style><noscript><style>.gatsby-image-wrapper noscript [data-main-image]{opacity:1!important}.gatsby-image-wrapper [data-placeholder-image]{opacity:0!important}</style></noscript><script type="module">const e="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;e&&document.body.addEventListener("load",(function(e){const t=e.target;if(void 0===t.dataset.mainImage)return;if(void 0===t.dataset.gatsbyImageSsr)return;let a=null,n=t;for(;null===a&&n;)void 0!==n.parentNode.dataset.gatsbyImageWrapper&&(a=n.parentNode),n=n.parentNode;const o=a.querySelector("[data-placeholder-image]"),r=new Image;r.src=t.currentSrc,r.decode().catch((()=>{})).then((()=>{t.style.opacity=1,o&&(o.style.opacity=0,o.style.transition="opacity 500ms linear")}))}),!0);</script><link rel="icon" href="/favicon-32x32.png?v=2ded17e3b6b8ff05cfb961a4ec8d0c25" type="image/png"/><link rel="manifest" href="/manifest.webmanifest" crossorigin="anonymous"/><link rel="apple-touch-icon" sizes="48x48" href="/icons/icon-48x48.png?v=2ded17e3b6b8ff05cfb961a4ec8d0c25"/><link rel="apple-touch-icon" sizes="72x72" href="/icons/icon-72x72.png?v=2ded17e3b6b8ff05cfb961a4ec8d0c25"/><link rel="apple-touch-icon" sizes="96x96" href="/icons/icon-96x96.png?v=2ded17e3b6b8ff05cfb961a4ec8d0c25"/><link rel="apple-touch-icon" sizes="144x144" href="/icons/icon-144x144.png?v=2ded17e3b6b8ff05cfb961a4ec8d0c25"/><link rel="apple-touch-icon" sizes="192x192" href="/icons/icon-192x192.png?v=2ded17e3b6b8ff05cfb961a4ec8d0c25"/><link rel="apple-touch-icon" sizes="256x256" href="/icons/icon-256x256.png?v=2ded17e3b6b8ff05cfb961a4ec8d0c25"/><link rel="apple-touch-icon" sizes="384x384" href="/icons/icon-384x384.png?v=2ded17e3b6b8ff05cfb961a4ec8d0c25"/><link rel="apple-touch-icon" sizes="512x512" href="/icons/icon-512x512.png?v=2ded17e3b6b8ff05cfb961a4ec8d0c25"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" id="gatsby-focus-wrapper"><nav class="navbar navbar-expand-sm navbar-light bg-light"><div class="container"><a class="navbar-brand" href="/">Java User Group Görlitz</a><button aria-label="Toggle navigation" type="button" class="navbar-toggler"><span class="navbar-toggler-icon"></span></button><div class="collapse navbar-collapse"><ul class="ml-auto navbar-nav"><li class="nav-item"><a class="link-item nav-link" href="/">Aktuell</a></li><li class="nav-item"><a class="link-item nav-link" href="/talks/">Vorträge</a></li><li class="nav-item"><a aria-current="page" class="link-item nav-link active" href="/posters/">Plakate</a></li><li class="nav-item"><a class="link-item nav-link" href="/unterstuetzer/">Unterstützer</a></li><li class="nav-item"><a class="link-item nav-link" href="/about/">About</a></li><li class="nav-item"><a class="link-item nav-link" href="/mitmachen/">Mitmachen</a></li></ul></div></div></nav><div style="margin-top:1em" class="container"><div class="row"><div class="col-md-9"><h2>Alle JUG-Plakate</h2><div class="container"><p>Unsere Plakate werden von <a href="/speakers/marlene_knoche/">Marlene Knoche</a> gestaltet. Sie macht auch viele andere Kunstprojekte. <br/>Schaut doch mal auf ihrer Webseite <a href="https://www.sanguinik.de/">www.sanguinik.de</a> vorbei.</p><div class="row"><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="6540f80b-99c8-5564-862b-6fa611e899df"><a href="/talks/2024-01-31-flutter/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#c8a858;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/1d7a6f48e70fdbaa09372642cdcfc472/e5d6f/plakat_2024_01.webp 750w,/static/1d7a6f48e70fdbaa09372642cdcfc472/0671f/plakat_2024_01.webp 1080w,/static/1d7a6f48e70fdbaa09372642cdcfc472/7e884/plakat_2024_01.webp 1366w,/static/1d7a6f48e70fdbaa09372642cdcfc472/e2c0d/plakat_2024_01.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt einen Hut und eine Umhängetasche und hat eine Peitsche in der linken Hand. In der rechten Hand hat er einen Gral mit Flügeln, den er begeistert ansieht." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/1d7a6f48e70fdbaa09372642cdcfc472/84817/plakat_2024_01.png" data-srcset="/static/1d7a6f48e70fdbaa09372642cdcfc472/b8e70/plakat_2024_01.png 750w,/static/1d7a6f48e70fdbaa09372642cdcfc472/e5839/plakat_2024_01.png 1080w,/static/1d7a6f48e70fdbaa09372642cdcfc472/f51d5/plakat_2024_01.png 1366w,/static/1d7a6f48e70fdbaa09372642cdcfc472/84817/plakat_2024_01.png 1920w" alt="Poster: Jürgen trägt einen Hut und eine Umhängetasche und hat eine Peitsche in der linken Hand. In der rechten Hand hat er einen Gral mit Flügeln, den er begeistert ansieht."/></picture><noscript><picture><source type="image/webp" srcSet="/static/1d7a6f48e70fdbaa09372642cdcfc472/e5d6f/plakat_2024_01.webp 750w,/static/1d7a6f48e70fdbaa09372642cdcfc472/0671f/plakat_2024_01.webp 1080w,/static/1d7a6f48e70fdbaa09372642cdcfc472/7e884/plakat_2024_01.webp 1366w,/static/1d7a6f48e70fdbaa09372642cdcfc472/e2c0d/plakat_2024_01.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt einen Hut und eine Umhängetasche und hat eine Peitsche in der linken Hand. In der rechten Hand hat er einen Gral mit Flügeln, den er begeistert ansieht." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/1d7a6f48e70fdbaa09372642cdcfc472/84817/plakat_2024_01.png" srcSet="/static/1d7a6f48e70fdbaa09372642cdcfc472/b8e70/plakat_2024_01.png 750w,/static/1d7a6f48e70fdbaa09372642cdcfc472/e5839/plakat_2024_01.png 1080w,/static/1d7a6f48e70fdbaa09372642cdcfc472/f51d5/plakat_2024_01.png 1366w,/static/1d7a6f48e70fdbaa09372642cdcfc472/84817/plakat_2024_01.png 1920w" alt="Poster: Jürgen trägt einen Hut und eine Umhängetasche und hat eine Peitsche in der linken Hand. In der rechten Hand hat er einen Gral mit Flügeln, den er begeistert ansieht."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="83946b5b-e38c-5b7d-ac9b-81ea660c5ee7"><a href="/talks/2023-11-29-crac/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#e85848;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/44456e47b4e2d92792552c2d411e2518/e5d6f/plakat_2023_11.webp 750w,/static/44456e47b4e2d92792552c2d411e2518/0671f/plakat_2023_11.webp 1080w,/static/44456e47b4e2d92792552c2d411e2518/7e884/plakat_2023_11.webp 1366w,/static/44456e47b4e2d92792552c2d411e2518/e2c0d/plakat_2023_11.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen ist auf einem Fahrrad und hat einen alten Helm mit Fliegerbrille auf. Man sieht, dass er ziemlich schnell fährt." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/44456e47b4e2d92792552c2d411e2518/84817/plakat_2023_11.png" data-srcset="/static/44456e47b4e2d92792552c2d411e2518/b8e70/plakat_2023_11.png 750w,/static/44456e47b4e2d92792552c2d411e2518/e5839/plakat_2023_11.png 1080w,/static/44456e47b4e2d92792552c2d411e2518/f51d5/plakat_2023_11.png 1366w,/static/44456e47b4e2d92792552c2d411e2518/84817/plakat_2023_11.png 1920w" alt="Poster: Jürgen ist auf einem Fahrrad und hat einen alten Helm mit Fliegerbrille auf. Man sieht, dass er ziemlich schnell fährt."/></picture><noscript><picture><source type="image/webp" srcSet="/static/44456e47b4e2d92792552c2d411e2518/e5d6f/plakat_2023_11.webp 750w,/static/44456e47b4e2d92792552c2d411e2518/0671f/plakat_2023_11.webp 1080w,/static/44456e47b4e2d92792552c2d411e2518/7e884/plakat_2023_11.webp 1366w,/static/44456e47b4e2d92792552c2d411e2518/e2c0d/plakat_2023_11.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen ist auf einem Fahrrad und hat einen alten Helm mit Fliegerbrille auf. Man sieht, dass er ziemlich schnell fährt." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/44456e47b4e2d92792552c2d411e2518/84817/plakat_2023_11.png" srcSet="/static/44456e47b4e2d92792552c2d411e2518/b8e70/plakat_2023_11.png 750w,/static/44456e47b4e2d92792552c2d411e2518/e5839/plakat_2023_11.png 1080w,/static/44456e47b4e2d92792552c2d411e2518/f51d5/plakat_2023_11.png 1366w,/static/44456e47b4e2d92792552c2d411e2518/84817/plakat_2023_11.png 1920w" alt="Poster: Jürgen ist auf einem Fahrrad und hat einen alten Helm mit Fliegerbrille auf. Man sieht, dass er ziemlich schnell fährt."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="322b1b28-3c01-54d5-88d6-d64abf4078e4"><a href="/talks/2023-10-25-aws_cdk_in_action/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#d89878;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/434d9c3e2846cfe979a57d975235808c/e5d6f/plakat_2023_10.webp 750w,/static/434d9c3e2846cfe979a57d975235808c/0671f/plakat_2023_10.webp 1080w,/static/434d9c3e2846cfe979a57d975235808c/7e884/plakat_2023_10.webp 1366w,/static/434d9c3e2846cfe979a57d975235808c/e2c0d/plakat_2023_10.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und grinst verschmitzt Auf der Wolke ist ein Baukran zu sehen. Am Baukran hängt eine kleine Wolke und zusätzlich fliegen noch Wolken umher." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/434d9c3e2846cfe979a57d975235808c/84817/plakat_2023_10.png" data-srcset="/static/434d9c3e2846cfe979a57d975235808c/b8e70/plakat_2023_10.png 750w,/static/434d9c3e2846cfe979a57d975235808c/e5839/plakat_2023_10.png 1080w,/static/434d9c3e2846cfe979a57d975235808c/f51d5/plakat_2023_10.png 1366w,/static/434d9c3e2846cfe979a57d975235808c/84817/plakat_2023_10.png 1920w" alt="Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und grinst verschmitzt Auf der Wolke ist ein Baukran zu sehen. Am Baukran hängt eine kleine Wolke und zusätzlich fliegen noch Wolken umher."/></picture><noscript><picture><source type="image/webp" srcSet="/static/434d9c3e2846cfe979a57d975235808c/e5d6f/plakat_2023_10.webp 750w,/static/434d9c3e2846cfe979a57d975235808c/0671f/plakat_2023_10.webp 1080w,/static/434d9c3e2846cfe979a57d975235808c/7e884/plakat_2023_10.webp 1366w,/static/434d9c3e2846cfe979a57d975235808c/e2c0d/plakat_2023_10.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und grinst verschmitzt Auf der Wolke ist ein Baukran zu sehen. Am Baukran hängt eine kleine Wolke und zusätzlich fliegen noch Wolken umher." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/434d9c3e2846cfe979a57d975235808c/84817/plakat_2023_10.png" srcSet="/static/434d9c3e2846cfe979a57d975235808c/b8e70/plakat_2023_10.png 750w,/static/434d9c3e2846cfe979a57d975235808c/e5839/plakat_2023_10.png 1080w,/static/434d9c3e2846cfe979a57d975235808c/f51d5/plakat_2023_10.png 1366w,/static/434d9c3e2846cfe979a57d975235808c/84817/plakat_2023_10.png 1920w" alt="Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und grinst verschmitzt Auf der Wolke ist ein Baukran zu sehen. Am Baukran hängt eine kleine Wolke und zusätzlich fliegen noch Wolken umher."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="c6ed33d8-5c5c-5ba5-bf35-c5d30ff717b8"><a href="/talks/2023-09-27-virtual-threads/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#289898;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/7809ea1a362146b531abece65510447f/e5d6f/plakat_2023_09.webp 750w,/static/7809ea1a362146b531abece65510447f/0671f/plakat_2023_09.webp 1080w,/static/7809ea1a362146b531abece65510447f/7e884/plakat_2023_09.webp 1366w,/static/7809ea1a362146b531abece65510447f/e2c0d/plakat_2023_09.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hat sich in einem virtuellen Faden verheddert und schaut etwas verzweifelt." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/7809ea1a362146b531abece65510447f/84817/plakat_2023_09.png" data-srcset="/static/7809ea1a362146b531abece65510447f/b8e70/plakat_2023_09.png 750w,/static/7809ea1a362146b531abece65510447f/e5839/plakat_2023_09.png 1080w,/static/7809ea1a362146b531abece65510447f/f51d5/plakat_2023_09.png 1366w,/static/7809ea1a362146b531abece65510447f/84817/plakat_2023_09.png 1920w" alt="Poster: Jürgen hat sich in einem virtuellen Faden verheddert und schaut etwas verzweifelt."/></picture><noscript><picture><source type="image/webp" srcSet="/static/7809ea1a362146b531abece65510447f/e5d6f/plakat_2023_09.webp 750w,/static/7809ea1a362146b531abece65510447f/0671f/plakat_2023_09.webp 1080w,/static/7809ea1a362146b531abece65510447f/7e884/plakat_2023_09.webp 1366w,/static/7809ea1a362146b531abece65510447f/e2c0d/plakat_2023_09.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hat sich in einem virtuellen Faden verheddert und schaut etwas verzweifelt." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/7809ea1a362146b531abece65510447f/84817/plakat_2023_09.png" srcSet="/static/7809ea1a362146b531abece65510447f/b8e70/plakat_2023_09.png 750w,/static/7809ea1a362146b531abece65510447f/e5839/plakat_2023_09.png 1080w,/static/7809ea1a362146b531abece65510447f/f51d5/plakat_2023_09.png 1366w,/static/7809ea1a362146b531abece65510447f/84817/plakat_2023_09.png 1920w" alt="Poster: Jürgen hat sich in einem virtuellen Faden verheddert und schaut etwas verzweifelt."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="61b0d0a8-fa3a-58b5-b6f0-eef9f3716b60"><a href="/talks/2023-06-28-graalvm_23/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#b878a8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/d62e1742243833e9e67ff3a5e8ba41e0/e5d6f/plakat_2023_06.webp 750w,/static/d62e1742243833e9e67ff3a5e8ba41e0/0671f/plakat_2023_06.webp 1080w,/static/d62e1742243833e9e67ff3a5e8ba41e0/7e884/plakat_2023_06.webp 1366w,/static/d62e1742243833e9e67ff3a5e8ba41e0/e2c0d/plakat_2023_06.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hat ein Prisma in der Hand aus dem ein regenbogenfarbener Lichtstrahl ausdringt. Er schaut erstaunt auf das Prisma." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/d62e1742243833e9e67ff3a5e8ba41e0/84817/plakat_2023_06.png" data-srcset="/static/d62e1742243833e9e67ff3a5e8ba41e0/b8e70/plakat_2023_06.png 750w,/static/d62e1742243833e9e67ff3a5e8ba41e0/e5839/plakat_2023_06.png 1080w,/static/d62e1742243833e9e67ff3a5e8ba41e0/f51d5/plakat_2023_06.png 1366w,/static/d62e1742243833e9e67ff3a5e8ba41e0/84817/plakat_2023_06.png 1920w" alt="Poster: Jürgen hat ein Prisma in der Hand aus dem ein regenbogenfarbener Lichtstrahl ausdringt. Er schaut erstaunt auf das Prisma."/></picture><noscript><picture><source type="image/webp" srcSet="/static/d62e1742243833e9e67ff3a5e8ba41e0/e5d6f/plakat_2023_06.webp 750w,/static/d62e1742243833e9e67ff3a5e8ba41e0/0671f/plakat_2023_06.webp 1080w,/static/d62e1742243833e9e67ff3a5e8ba41e0/7e884/plakat_2023_06.webp 1366w,/static/d62e1742243833e9e67ff3a5e8ba41e0/e2c0d/plakat_2023_06.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hat ein Prisma in der Hand aus dem ein regenbogenfarbener Lichtstrahl ausdringt. Er schaut erstaunt auf das Prisma." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/d62e1742243833e9e67ff3a5e8ba41e0/84817/plakat_2023_06.png" srcSet="/static/d62e1742243833e9e67ff3a5e8ba41e0/b8e70/plakat_2023_06.png 750w,/static/d62e1742243833e9e67ff3a5e8ba41e0/e5839/plakat_2023_06.png 1080w,/static/d62e1742243833e9e67ff3a5e8ba41e0/f51d5/plakat_2023_06.png 1366w,/static/d62e1742243833e9e67ff3a5e8ba41e0/84817/plakat_2023_06.png 1920w" alt="Poster: Jürgen hat ein Prisma in der Hand aus dem ein regenbogenfarbener Lichtstrahl ausdringt. Er schaut erstaunt auf das Prisma."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="2289c524-859b-5899-a8d7-b9ae17afcad5"><a href="/talks/2023-05-31-accessibility_in_the_wild/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#e85888;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/4d37935c5d380cb8d64e34d12cbd80d2/e5d6f/plakat_2023_05.webp 750w,/static/4d37935c5d380cb8d64e34d12cbd80d2/0671f/plakat_2023_05.webp 1080w,/static/4d37935c5d380cb8d64e34d12cbd80d2/7e884/plakat_2023_05.webp 1366w,/static/4d37935c5d380cb8d64e34d12cbd80d2/e2c0d/plakat_2023_05.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hat einen Baseballschläger in den Händen und zerstört damit eine Verkehrsbake." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/4d37935c5d380cb8d64e34d12cbd80d2/84817/plakat_2023_05.png" data-srcset="/static/4d37935c5d380cb8d64e34d12cbd80d2/b8e70/plakat_2023_05.png 750w,/static/4d37935c5d380cb8d64e34d12cbd80d2/e5839/plakat_2023_05.png 1080w,/static/4d37935c5d380cb8d64e34d12cbd80d2/f51d5/plakat_2023_05.png 1366w,/static/4d37935c5d380cb8d64e34d12cbd80d2/84817/plakat_2023_05.png 1920w" alt="Poster: Jürgen hat einen Baseballschläger in den Händen und zerstört damit eine Verkehrsbake."/></picture><noscript><picture><source type="image/webp" srcSet="/static/4d37935c5d380cb8d64e34d12cbd80d2/e5d6f/plakat_2023_05.webp 750w,/static/4d37935c5d380cb8d64e34d12cbd80d2/0671f/plakat_2023_05.webp 1080w,/static/4d37935c5d380cb8d64e34d12cbd80d2/7e884/plakat_2023_05.webp 1366w,/static/4d37935c5d380cb8d64e34d12cbd80d2/e2c0d/plakat_2023_05.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hat einen Baseballschläger in den Händen und zerstört damit eine Verkehrsbake." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/4d37935c5d380cb8d64e34d12cbd80d2/84817/plakat_2023_05.png" srcSet="/static/4d37935c5d380cb8d64e34d12cbd80d2/b8e70/plakat_2023_05.png 750w,/static/4d37935c5d380cb8d64e34d12cbd80d2/e5839/plakat_2023_05.png 1080w,/static/4d37935c5d380cb8d64e34d12cbd80d2/f51d5/plakat_2023_05.png 1366w,/static/4d37935c5d380cb8d64e34d12cbd80d2/84817/plakat_2023_05.png 1920w" alt="Poster: Jürgen hat einen Baseballschläger in den Händen und zerstört damit eine Verkehrsbake."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="197c670b-992f-54d0-9a49-0aac78c4b5e4"><a href="/talks/2023-04-26-archunit_unit_tests_java_architektur/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#58a848;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/3783aca0b180d59828528ae2e9f37788/e5d6f/plakat_2023_04.webp 750w,/static/3783aca0b180d59828528ae2e9f37788/0671f/plakat_2023_04.webp 1080w,/static/3783aca0b180d59828528ae2e9f37788/7e884/plakat_2023_04.webp 1366w,/static/3783aca0b180d59828528ae2e9f37788/e2c0d/plakat_2023_04.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgens trägt ein grünes Cape und einen Hut mit einer Feder. Er sieht aus wie Robin Hood. In den Händen hat er Pfeil und Bogen parat, am Rücken trägt er einen Köcher mit weiteren Pfeilen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/3783aca0b180d59828528ae2e9f37788/84817/plakat_2023_04.png" data-srcset="/static/3783aca0b180d59828528ae2e9f37788/b8e70/plakat_2023_04.png 750w,/static/3783aca0b180d59828528ae2e9f37788/e5839/plakat_2023_04.png 1080w,/static/3783aca0b180d59828528ae2e9f37788/f51d5/plakat_2023_04.png 1366w,/static/3783aca0b180d59828528ae2e9f37788/84817/plakat_2023_04.png 1920w" alt="Poster: Jürgens trägt ein grünes Cape und einen Hut mit einer Feder. Er sieht aus wie Robin Hood. In den Händen hat er Pfeil und Bogen parat, am Rücken trägt er einen Köcher mit weiteren Pfeilen."/></picture><noscript><picture><source type="image/webp" srcSet="/static/3783aca0b180d59828528ae2e9f37788/e5d6f/plakat_2023_04.webp 750w,/static/3783aca0b180d59828528ae2e9f37788/0671f/plakat_2023_04.webp 1080w,/static/3783aca0b180d59828528ae2e9f37788/7e884/plakat_2023_04.webp 1366w,/static/3783aca0b180d59828528ae2e9f37788/e2c0d/plakat_2023_04.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgens trägt ein grünes Cape und einen Hut mit einer Feder. Er sieht aus wie Robin Hood. In den Händen hat er Pfeil und Bogen parat, am Rücken trägt er einen Köcher mit weiteren Pfeilen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/3783aca0b180d59828528ae2e9f37788/84817/plakat_2023_04.png" srcSet="/static/3783aca0b180d59828528ae2e9f37788/b8e70/plakat_2023_04.png 750w,/static/3783aca0b180d59828528ae2e9f37788/e5839/plakat_2023_04.png 1080w,/static/3783aca0b180d59828528ae2e9f37788/f51d5/plakat_2023_04.png 1366w,/static/3783aca0b180d59828528ae2e9f37788/84817/plakat_2023_04.png 1920w" alt="Poster: Jürgens trägt ein grünes Cape und einen Hut mit einer Feder. Er sieht aus wie Robin Hood. In den Händen hat er Pfeil und Bogen parat, am Rücken trägt er einen Köcher mit weiteren Pfeilen."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="ab1c70db-cea4-586b-be81-643ef56fc65a"><a href="/talks/2023-03-29-spring_fuer_architekturinteressierte_entwickler_innen/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#f8a808;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/bd3df371bc1bfedf9acf732740ac6b34/e5d6f/plakat_2023_03.webp 750w,/static/bd3df371bc1bfedf9acf732740ac6b34/0671f/plakat_2023_03.webp 1080w,/static/bd3df371bc1bfedf9acf732740ac6b34/7e884/plakat_2023_03.webp 1366w,/static/bd3df371bc1bfedf9acf732740ac6b34/e2c0d/plakat_2023_03.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgens Kopf ist auf einer Sprungfeder in einer Box, die wie ein Springteufel herausragt." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/bd3df371bc1bfedf9acf732740ac6b34/84817/plakat_2023_03.png" data-srcset="/static/bd3df371bc1bfedf9acf732740ac6b34/b8e70/plakat_2023_03.png 750w,/static/bd3df371bc1bfedf9acf732740ac6b34/e5839/plakat_2023_03.png 1080w,/static/bd3df371bc1bfedf9acf732740ac6b34/f51d5/plakat_2023_03.png 1366w,/static/bd3df371bc1bfedf9acf732740ac6b34/84817/plakat_2023_03.png 1920w" alt="Poster: Jürgens Kopf ist auf einer Sprungfeder in einer Box, die wie ein Springteufel herausragt."/></picture><noscript><picture><source type="image/webp" srcSet="/static/bd3df371bc1bfedf9acf732740ac6b34/e5d6f/plakat_2023_03.webp 750w,/static/bd3df371bc1bfedf9acf732740ac6b34/0671f/plakat_2023_03.webp 1080w,/static/bd3df371bc1bfedf9acf732740ac6b34/7e884/plakat_2023_03.webp 1366w,/static/bd3df371bc1bfedf9acf732740ac6b34/e2c0d/plakat_2023_03.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgens Kopf ist auf einer Sprungfeder in einer Box, die wie ein Springteufel herausragt." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/bd3df371bc1bfedf9acf732740ac6b34/84817/plakat_2023_03.png" srcSet="/static/bd3df371bc1bfedf9acf732740ac6b34/b8e70/plakat_2023_03.png 750w,/static/bd3df371bc1bfedf9acf732740ac6b34/e5839/plakat_2023_03.png 1080w,/static/bd3df371bc1bfedf9acf732740ac6b34/f51d5/plakat_2023_03.png 1366w,/static/bd3df371bc1bfedf9acf732740ac6b34/84817/plakat_2023_03.png 1920w" alt="Poster: Jürgens Kopf ist auf einer Sprungfeder in einer Box, die wie ein Springteufel herausragt."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="85b5c33a-1b3d-5625-8375-408b5c1f84bf"><a href="/talks/2023-02-22-exception_first/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#e88838;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/69a227ac221f5d70680e1772e2b66652/e5d6f/plakat_2023_02.webp 750w,/static/69a227ac221f5d70680e1772e2b66652/0671f/plakat_2023_02.webp 1080w,/static/69a227ac221f5d70680e1772e2b66652/7e884/plakat_2023_02.webp 1366w,/static/69a227ac221f5d70680e1772e2b66652/e2c0d/plakat_2023_02.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/69a227ac221f5d70680e1772e2b66652/84817/plakat_2023_02.png" data-srcset="/static/69a227ac221f5d70680e1772e2b66652/b8e70/plakat_2023_02.png 750w,/static/69a227ac221f5d70680e1772e2b66652/e5839/plakat_2023_02.png 1080w,/static/69a227ac221f5d70680e1772e2b66652/f51d5/plakat_2023_02.png 1366w,/static/69a227ac221f5d70680e1772e2b66652/84817/plakat_2023_02.png 1920w" alt="Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert."/></picture><noscript><picture><source type="image/webp" srcSet="/static/69a227ac221f5d70680e1772e2b66652/e5d6f/plakat_2023_02.webp 750w,/static/69a227ac221f5d70680e1772e2b66652/0671f/plakat_2023_02.webp 1080w,/static/69a227ac221f5d70680e1772e2b66652/7e884/plakat_2023_02.webp 1366w,/static/69a227ac221f5d70680e1772e2b66652/e2c0d/plakat_2023_02.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/69a227ac221f5d70680e1772e2b66652/84817/plakat_2023_02.png" srcSet="/static/69a227ac221f5d70680e1772e2b66652/b8e70/plakat_2023_02.png 750w,/static/69a227ac221f5d70680e1772e2b66652/e5839/plakat_2023_02.png 1080w,/static/69a227ac221f5d70680e1772e2b66652/f51d5/plakat_2023_02.png 1366w,/static/69a227ac221f5d70680e1772e2b66652/84817/plakat_2023_02.png 1920w" alt="Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="86c1c8d2-94ea-5866-bbdb-3ac21398dcc3"><a href="/talks/2023-01-25-contentlab/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#9868a8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/8f15082e67d772dd339121432ea649d9/e5d6f/plakat_2023_01.webp 750w,/static/8f15082e67d772dd339121432ea649d9/0671f/plakat_2023_01.webp 1080w,/static/8f15082e67d772dd339121432ea649d9/7e884/plakat_2023_01.webp 1366w,/static/8f15082e67d772dd339121432ea649d9/e2c0d/plakat_2023_01.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt einen Laborkittel und eine Schutzbrille. In der Hand trägt er zwei Reagenzgläser. Scheinbar ist bei seinem Experiment etwas explodiert denn über Jürgen und den Gläsern ziehen Rauchschwaden auf, Jürgen ist komplett grau vom Explosionsstaub." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/8f15082e67d772dd339121432ea649d9/84817/plakat_2023_01.png" data-srcset="/static/8f15082e67d772dd339121432ea649d9/b8e70/plakat_2023_01.png 750w,/static/8f15082e67d772dd339121432ea649d9/e5839/plakat_2023_01.png 1080w,/static/8f15082e67d772dd339121432ea649d9/f51d5/plakat_2023_01.png 1366w,/static/8f15082e67d772dd339121432ea649d9/84817/plakat_2023_01.png 1920w" alt="Poster: Jürgen trägt einen Laborkittel und eine Schutzbrille. In der Hand trägt er zwei Reagenzgläser. Scheinbar ist bei seinem Experiment etwas explodiert denn über Jürgen und den Gläsern ziehen Rauchschwaden auf, Jürgen ist komplett grau vom Explosionsstaub."/></picture><noscript><picture><source type="image/webp" srcSet="/static/8f15082e67d772dd339121432ea649d9/e5d6f/plakat_2023_01.webp 750w,/static/8f15082e67d772dd339121432ea649d9/0671f/plakat_2023_01.webp 1080w,/static/8f15082e67d772dd339121432ea649d9/7e884/plakat_2023_01.webp 1366w,/static/8f15082e67d772dd339121432ea649d9/e2c0d/plakat_2023_01.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt einen Laborkittel und eine Schutzbrille. In der Hand trägt er zwei Reagenzgläser. Scheinbar ist bei seinem Experiment etwas explodiert denn über Jürgen und den Gläsern ziehen Rauchschwaden auf, Jürgen ist komplett grau vom Explosionsstaub." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/8f15082e67d772dd339121432ea649d9/84817/plakat_2023_01.png" srcSet="/static/8f15082e67d772dd339121432ea649d9/b8e70/plakat_2023_01.png 750w,/static/8f15082e67d772dd339121432ea649d9/e5839/plakat_2023_01.png 1080w,/static/8f15082e67d772dd339121432ea649d9/f51d5/plakat_2023_01.png 1366w,/static/8f15082e67d772dd339121432ea649d9/84817/plakat_2023_01.png 1920w" alt="Poster: Jürgen trägt einen Laborkittel und eine Schutzbrille. In der Hand trägt er zwei Reagenzgläser. Scheinbar ist bei seinem Experiment etwas explodiert denn über Jürgen und den Gläsern ziehen Rauchschwaden auf, Jürgen ist komplett grau vom Explosionsstaub."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="0b48a461-1420-5309-b315-926387e3fc44"><a href="/talks/2022-11-30-iam-keycloak/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#f8f8f8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/4313899aa2d31ed4b1e24d7d91e8c20a/e5d6f/plakat_2022_11.webp 750w,/static/4313899aa2d31ed4b1e24d7d91e8c20a/0671f/plakat_2022_11.webp 1080w,/static/4313899aa2d31ed4b1e24d7d91e8c20a/7e884/plakat_2022_11.webp 1366w,/static/4313899aa2d31ed4b1e24d7d91e8c20a/e2c0d/plakat_2022_11.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/4313899aa2d31ed4b1e24d7d91e8c20a/84817/plakat_2022_11.png" data-srcset="/static/4313899aa2d31ed4b1e24d7d91e8c20a/b8e70/plakat_2022_11.png 750w,/static/4313899aa2d31ed4b1e24d7d91e8c20a/e5839/plakat_2022_11.png 1080w,/static/4313899aa2d31ed4b1e24d7d91e8c20a/f51d5/plakat_2022_11.png 1366w,/static/4313899aa2d31ed4b1e24d7d91e8c20a/84817/plakat_2022_11.png 1920w" alt="Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten."/></picture><noscript><picture><source type="image/webp" srcSet="/static/4313899aa2d31ed4b1e24d7d91e8c20a/e5d6f/plakat_2022_11.webp 750w,/static/4313899aa2d31ed4b1e24d7d91e8c20a/0671f/plakat_2022_11.webp 1080w,/static/4313899aa2d31ed4b1e24d7d91e8c20a/7e884/plakat_2022_11.webp 1366w,/static/4313899aa2d31ed4b1e24d7d91e8c20a/e2c0d/plakat_2022_11.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/4313899aa2d31ed4b1e24d7d91e8c20a/84817/plakat_2022_11.png" srcSet="/static/4313899aa2d31ed4b1e24d7d91e8c20a/b8e70/plakat_2022_11.png 750w,/static/4313899aa2d31ed4b1e24d7d91e8c20a/e5839/plakat_2022_11.png 1080w,/static/4313899aa2d31ed4b1e24d7d91e8c20a/f51d5/plakat_2022_11.png 1366w,/static/4313899aa2d31ed4b1e24d7d91e8c20a/84817/plakat_2022_11.png 1920w" alt="Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="1a0dbc74-dd80-5566-aa7d-5a4aac2ba518"><a href="/talks/2022-10-12-indistrie_4.0/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#28b898;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/f522849df2b2b8add5330999b1f5a484/e5d6f/plakat_2022_10.webp 750w,/static/f522849df2b2b8add5330999b1f5a484/0671f/plakat_2022_10.webp 1080w,/static/f522849df2b2b8add5330999b1f5a484/7e884/plakat_2022_10.webp 1366w,/static/f522849df2b2b8add5330999b1f5a484/e2c0d/plakat_2022_10.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und auf der Wolke ist ein Baukran zusehen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/f522849df2b2b8add5330999b1f5a484/84817/plakat_2022_10.png" data-srcset="/static/f522849df2b2b8add5330999b1f5a484/b8e70/plakat_2022_10.png 750w,/static/f522849df2b2b8add5330999b1f5a484/e5839/plakat_2022_10.png 1080w,/static/f522849df2b2b8add5330999b1f5a484/f51d5/plakat_2022_10.png 1366w,/static/f522849df2b2b8add5330999b1f5a484/84817/plakat_2022_10.png 1920w" alt="Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und auf der Wolke ist ein Baukran zusehen."/></picture><noscript><picture><source type="image/webp" srcSet="/static/f522849df2b2b8add5330999b1f5a484/e5d6f/plakat_2022_10.webp 750w,/static/f522849df2b2b8add5330999b1f5a484/0671f/plakat_2022_10.webp 1080w,/static/f522849df2b2b8add5330999b1f5a484/7e884/plakat_2022_10.webp 1366w,/static/f522849df2b2b8add5330999b1f5a484/e2c0d/plakat_2022_10.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und auf der Wolke ist ein Baukran zusehen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/f522849df2b2b8add5330999b1f5a484/84817/plakat_2022_10.png" srcSet="/static/f522849df2b2b8add5330999b1f5a484/b8e70/plakat_2022_10.png 750w,/static/f522849df2b2b8add5330999b1f5a484/e5839/plakat_2022_10.png 1080w,/static/f522849df2b2b8add5330999b1f5a484/f51d5/plakat_2022_10.png 1366w,/static/f522849df2b2b8add5330999b1f5a484/84817/plakat_2022_10.png 1920w" alt="Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und auf der Wolke ist ein Baukran zusehen."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="fff1b9ff-e9ff-5fc3-ac26-c00c71f16bde"><a href="/talks/2022-06-22-iot-infrastruktur-serverless/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#f8b838;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/16e022022a45fa9f5687edc16e865aec/e5d6f/plakat_2022_06.webp 750w,/static/16e022022a45fa9f5687edc16e865aec/0671f/plakat_2022_06.webp 1080w,/static/16e022022a45fa9f5687edc16e865aec/7e884/plakat_2022_06.webp 1366w,/static/16e022022a45fa9f5687edc16e865aec/e2c0d/plakat_2022_06.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen spielt eine Flöte. Hinter ihm sieht man einen Weg auf dem Jürgen gelaufen kommt. Hinter ihm ist ein Smartphone und eine Waschmaschine, jeweils mit Armen, Beinen und Gesicht. Die Gesichter der Geräte sehen aus wie paralysiert und sie halten ihre Arme wie Zombies nach Vorn. Sie folgen Jürgen, so als wäre er der Rattenfänger von Hameln." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/16e022022a45fa9f5687edc16e865aec/84817/plakat_2022_06.png" data-srcset="/static/16e022022a45fa9f5687edc16e865aec/b8e70/plakat_2022_06.png 750w,/static/16e022022a45fa9f5687edc16e865aec/e5839/plakat_2022_06.png 1080w,/static/16e022022a45fa9f5687edc16e865aec/f51d5/plakat_2022_06.png 1366w,/static/16e022022a45fa9f5687edc16e865aec/84817/plakat_2022_06.png 1920w" alt="Poster: Jürgen spielt eine Flöte. Hinter ihm sieht man einen Weg auf dem Jürgen gelaufen kommt. Hinter ihm ist ein Smartphone und eine Waschmaschine, jeweils mit Armen, Beinen und Gesicht. Die Gesichter der Geräte sehen aus wie paralysiert und sie halten ihre Arme wie Zombies nach Vorn. Sie folgen Jürgen, so als wäre er der Rattenfänger von Hameln."/></picture><noscript><picture><source type="image/webp" srcSet="/static/16e022022a45fa9f5687edc16e865aec/e5d6f/plakat_2022_06.webp 750w,/static/16e022022a45fa9f5687edc16e865aec/0671f/plakat_2022_06.webp 1080w,/static/16e022022a45fa9f5687edc16e865aec/7e884/plakat_2022_06.webp 1366w,/static/16e022022a45fa9f5687edc16e865aec/e2c0d/plakat_2022_06.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen spielt eine Flöte. Hinter ihm sieht man einen Weg auf dem Jürgen gelaufen kommt. Hinter ihm ist ein Smartphone und eine Waschmaschine, jeweils mit Armen, Beinen und Gesicht. Die Gesichter der Geräte sehen aus wie paralysiert und sie halten ihre Arme wie Zombies nach Vorn. Sie folgen Jürgen, so als wäre er der Rattenfänger von Hameln." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/16e022022a45fa9f5687edc16e865aec/84817/plakat_2022_06.png" srcSet="/static/16e022022a45fa9f5687edc16e865aec/b8e70/plakat_2022_06.png 750w,/static/16e022022a45fa9f5687edc16e865aec/e5839/plakat_2022_06.png 1080w,/static/16e022022a45fa9f5687edc16e865aec/f51d5/plakat_2022_06.png 1366w,/static/16e022022a45fa9f5687edc16e865aec/84817/plakat_2022_06.png 1920w" alt="Poster: Jürgen spielt eine Flöte. Hinter ihm sieht man einen Weg auf dem Jürgen gelaufen kommt. Hinter ihm ist ein Smartphone und eine Waschmaschine, jeweils mit Armen, Beinen und Gesicht. Die Gesichter der Geräte sehen aus wie paralysiert und sie halten ihre Arme wie Zombies nach Vorn. Sie folgen Jürgen, so als wäre er der Rattenfänger von Hameln."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="1567f34a-c228-511c-a368-2041cf79e3fa"><a href="/talks/2021-06-30-microstream/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#f85838;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/8f427a4552cb3ca64fe96511228f5a57/e5d6f/plakat_2021_06.webp 750w,/static/8f427a4552cb3ca64fe96511228f5a57/0671f/plakat_2021_06.webp 1080w,/static/8f427a4552cb3ca64fe96511228f5a57/7e884/plakat_2021_06.webp 1366w,/static/8f427a4552cb3ca64fe96511228f5a57/e2c0d/plakat_2021_06.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen sitzt am Tisch und überlegt. Er spielt Memory und hat gerade eine aufgedeckte Memory-Karte mit dem Java-Duke darauf in der Hand. Auf dem Tisch sind die anderen Karten zugedeckt, bis auf eine offene Karte. Auf dieser ist ein Datenbank-Symbol zu sehen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/8f427a4552cb3ca64fe96511228f5a57/84817/plakat_2021_06.png" data-srcset="/static/8f427a4552cb3ca64fe96511228f5a57/b8e70/plakat_2021_06.png 750w,/static/8f427a4552cb3ca64fe96511228f5a57/e5839/plakat_2021_06.png 1080w,/static/8f427a4552cb3ca64fe96511228f5a57/f51d5/plakat_2021_06.png 1366w,/static/8f427a4552cb3ca64fe96511228f5a57/84817/plakat_2021_06.png 1920w" alt="Poster: Jürgen sitzt am Tisch und überlegt. Er spielt Memory und hat gerade eine aufgedeckte Memory-Karte mit dem Java-Duke darauf in der Hand. Auf dem Tisch sind die anderen Karten zugedeckt, bis auf eine offene Karte. Auf dieser ist ein Datenbank-Symbol zu sehen."/></picture><noscript><picture><source type="image/webp" srcSet="/static/8f427a4552cb3ca64fe96511228f5a57/e5d6f/plakat_2021_06.webp 750w,/static/8f427a4552cb3ca64fe96511228f5a57/0671f/plakat_2021_06.webp 1080w,/static/8f427a4552cb3ca64fe96511228f5a57/7e884/plakat_2021_06.webp 1366w,/static/8f427a4552cb3ca64fe96511228f5a57/e2c0d/plakat_2021_06.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen sitzt am Tisch und überlegt. Er spielt Memory und hat gerade eine aufgedeckte Memory-Karte mit dem Java-Duke darauf in der Hand. Auf dem Tisch sind die anderen Karten zugedeckt, bis auf eine offene Karte. Auf dieser ist ein Datenbank-Symbol zu sehen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/8f427a4552cb3ca64fe96511228f5a57/84817/plakat_2021_06.png" srcSet="/static/8f427a4552cb3ca64fe96511228f5a57/b8e70/plakat_2021_06.png 750w,/static/8f427a4552cb3ca64fe96511228f5a57/e5839/plakat_2021_06.png 1080w,/static/8f427a4552cb3ca64fe96511228f5a57/f51d5/plakat_2021_06.png 1366w,/static/8f427a4552cb3ca64fe96511228f5a57/84817/plakat_2021_06.png 1920w" alt="Poster: Jürgen sitzt am Tisch und überlegt. Er spielt Memory und hat gerade eine aufgedeckte Memory-Karte mit dem Java-Duke darauf in der Hand. Auf dem Tisch sind die anderen Karten zugedeckt, bis auf eine offene Karte. Auf dieser ist ein Datenbank-Symbol zu sehen."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="9bba5bef-9d0e-50c8-b451-ffed64ad6bd4"><a href="/talks/2021-01-27-webcomponents/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#981848;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/540abccd98049d14ae192d2ada3cbcc3/e5d6f/plakat_2021_01.webp 750w,/static/540abccd98049d14ae192d2ada3cbcc3/0671f/plakat_2021_01.webp 1080w,/static/540abccd98049d14ae192d2ada3cbcc3/7e884/plakat_2021_01.webp 1366w,/static/540abccd98049d14ae192d2ada3cbcc3/e2c0d/plakat_2021_01.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Wir sehen ein großes Spinnennetz, in dem Jürgen gefangen ist. Er hängt verkehrt herum im Netz und sieht ziemlich erschrocken aus." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/540abccd98049d14ae192d2ada3cbcc3/84817/plakat_2021_01.png" data-srcset="/static/540abccd98049d14ae192d2ada3cbcc3/b8e70/plakat_2021_01.png 750w,/static/540abccd98049d14ae192d2ada3cbcc3/e5839/plakat_2021_01.png 1080w,/static/540abccd98049d14ae192d2ada3cbcc3/f51d5/plakat_2021_01.png 1366w,/static/540abccd98049d14ae192d2ada3cbcc3/84817/plakat_2021_01.png 1920w" alt="Poster: Wir sehen ein großes Spinnennetz, in dem Jürgen gefangen ist. Er hängt verkehrt herum im Netz und sieht ziemlich erschrocken aus."/></picture><noscript><picture><source type="image/webp" srcSet="/static/540abccd98049d14ae192d2ada3cbcc3/e5d6f/plakat_2021_01.webp 750w,/static/540abccd98049d14ae192d2ada3cbcc3/0671f/plakat_2021_01.webp 1080w,/static/540abccd98049d14ae192d2ada3cbcc3/7e884/plakat_2021_01.webp 1366w,/static/540abccd98049d14ae192d2ada3cbcc3/e2c0d/plakat_2021_01.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Wir sehen ein großes Spinnennetz, in dem Jürgen gefangen ist. Er hängt verkehrt herum im Netz und sieht ziemlich erschrocken aus." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/540abccd98049d14ae192d2ada3cbcc3/84817/plakat_2021_01.png" srcSet="/static/540abccd98049d14ae192d2ada3cbcc3/b8e70/plakat_2021_01.png 750w,/static/540abccd98049d14ae192d2ada3cbcc3/e5839/plakat_2021_01.png 1080w,/static/540abccd98049d14ae192d2ada3cbcc3/f51d5/plakat_2021_01.png 1366w,/static/540abccd98049d14ae192d2ada3cbcc3/84817/plakat_2021_01.png 1920w" alt="Poster: Wir sehen ein großes Spinnennetz, in dem Jürgen gefangen ist. Er hängt verkehrt herum im Netz und sieht ziemlich erschrocken aus."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="b5a8cec9-632e-5d2d-acc3-45cfdedb6dfa"><a href="/talks/2020-11-25-secure_coding/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#182838;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/c2b6e13c2719de1c7a0da2b790067455/e5d6f/plakat_2020_11.webp 750w,/static/c2b6e13c2719de1c7a0da2b790067455/0671f/plakat_2020_11.webp 1080w,/static/c2b6e13c2719de1c7a0da2b790067455/7e884/plakat_2020_11.webp 1366w,/static/c2b6e13c2719de1c7a0da2b790067455/e2c0d/plakat_2020_11.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt eine schwarze Woll-Mütze und eine schwarze Maske. Er trägt Handschuhe und sieht aus wie ein Einbrecher. Im Hintergrund sieht man eine Wohnungstür, vor der Jürgen kniet. Er hat einen Dietrich in der Hand und versucht gerade, dass Schloß zu knacken. Wir sehen Jürgens Rücken und er schaut zu uns über die Schulter. Seinem Blick zu urteilen, ist er überrascht weil wir ihn beim Einbrechen erwischt haben." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/c2b6e13c2719de1c7a0da2b790067455/84817/plakat_2020_11.png" data-srcset="/static/c2b6e13c2719de1c7a0da2b790067455/b8e70/plakat_2020_11.png 750w,/static/c2b6e13c2719de1c7a0da2b790067455/e5839/plakat_2020_11.png 1080w,/static/c2b6e13c2719de1c7a0da2b790067455/f51d5/plakat_2020_11.png 1366w,/static/c2b6e13c2719de1c7a0da2b790067455/84817/plakat_2020_11.png 1920w" alt="Poster: Jürgen trägt eine schwarze Woll-Mütze und eine schwarze Maske. Er trägt Handschuhe und sieht aus wie ein Einbrecher. Im Hintergrund sieht man eine Wohnungstür, vor der Jürgen kniet. Er hat einen Dietrich in der Hand und versucht gerade, dass Schloß zu knacken. Wir sehen Jürgens Rücken und er schaut zu uns über die Schulter. Seinem Blick zu urteilen, ist er überrascht weil wir ihn beim Einbrechen erwischt haben."/></picture><noscript><picture><source type="image/webp" srcSet="/static/c2b6e13c2719de1c7a0da2b790067455/e5d6f/plakat_2020_11.webp 750w,/static/c2b6e13c2719de1c7a0da2b790067455/0671f/plakat_2020_11.webp 1080w,/static/c2b6e13c2719de1c7a0da2b790067455/7e884/plakat_2020_11.webp 1366w,/static/c2b6e13c2719de1c7a0da2b790067455/e2c0d/plakat_2020_11.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt eine schwarze Woll-Mütze und eine schwarze Maske. Er trägt Handschuhe und sieht aus wie ein Einbrecher. Im Hintergrund sieht man eine Wohnungstür, vor der Jürgen kniet. Er hat einen Dietrich in der Hand und versucht gerade, dass Schloß zu knacken. Wir sehen Jürgens Rücken und er schaut zu uns über die Schulter. Seinem Blick zu urteilen, ist er überrascht weil wir ihn beim Einbrechen erwischt haben." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/c2b6e13c2719de1c7a0da2b790067455/84817/plakat_2020_11.png" srcSet="/static/c2b6e13c2719de1c7a0da2b790067455/b8e70/plakat_2020_11.png 750w,/static/c2b6e13c2719de1c7a0da2b790067455/e5839/plakat_2020_11.png 1080w,/static/c2b6e13c2719de1c7a0da2b790067455/f51d5/plakat_2020_11.png 1366w,/static/c2b6e13c2719de1c7a0da2b790067455/84817/plakat_2020_11.png 1920w" alt="Poster: Jürgen trägt eine schwarze Woll-Mütze und eine schwarze Maske. Er trägt Handschuhe und sieht aus wie ein Einbrecher. Im Hintergrund sieht man eine Wohnungstür, vor der Jürgen kniet. Er hat einen Dietrich in der Hand und versucht gerade, dass Schloß zu knacken. Wir sehen Jürgens Rücken und er schaut zu uns über die Schulter. Seinem Blick zu urteilen, ist er überrascht weil wir ihn beim Einbrechen erwischt haben."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="1908832c-2f77-598f-a24b-2bcdee954b3a"><a href="/talks/2020-07-22-branching_modelle/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#d86838;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/595b224b634a1c6694d94578a61bc06c/e5d6f/plakat_2020_07.webp 750w,/static/595b224b634a1c6694d94578a61bc06c/0671f/plakat_2020_07.webp 1080w,/static/595b224b634a1c6694d94578a61bc06c/7e884/plakat_2020_07.webp 1366w,/static/595b224b634a1c6694d94578a61bc06c/e2c0d/plakat_2020_07.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hat einen Schaffner-Hut auf dem Kopf. Er hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier mit der Überschrift 'Fahrplan' geheftet ist. Unter der Überschrift ist ein Streckenplan mit Verzweigungen angedeutet." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/595b224b634a1c6694d94578a61bc06c/84817/plakat_2020_07.png" data-srcset="/static/595b224b634a1c6694d94578a61bc06c/b8e70/plakat_2020_07.png 750w,/static/595b224b634a1c6694d94578a61bc06c/e5839/plakat_2020_07.png 1080w,/static/595b224b634a1c6694d94578a61bc06c/f51d5/plakat_2020_07.png 1366w,/static/595b224b634a1c6694d94578a61bc06c/84817/plakat_2020_07.png 1920w" alt="Poster: Jürgen hat einen Schaffner-Hut auf dem Kopf. Er hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier mit der Überschrift 'Fahrplan' geheftet ist. Unter der Überschrift ist ein Streckenplan mit Verzweigungen angedeutet."/></picture><noscript><picture><source type="image/webp" srcSet="/static/595b224b634a1c6694d94578a61bc06c/e5d6f/plakat_2020_07.webp 750w,/static/595b224b634a1c6694d94578a61bc06c/0671f/plakat_2020_07.webp 1080w,/static/595b224b634a1c6694d94578a61bc06c/7e884/plakat_2020_07.webp 1366w,/static/595b224b634a1c6694d94578a61bc06c/e2c0d/plakat_2020_07.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hat einen Schaffner-Hut auf dem Kopf. Er hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier mit der Überschrift 'Fahrplan' geheftet ist. Unter der Überschrift ist ein Streckenplan mit Verzweigungen angedeutet." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/595b224b634a1c6694d94578a61bc06c/84817/plakat_2020_07.png" srcSet="/static/595b224b634a1c6694d94578a61bc06c/b8e70/plakat_2020_07.png 750w,/static/595b224b634a1c6694d94578a61bc06c/e5839/plakat_2020_07.png 1080w,/static/595b224b634a1c6694d94578a61bc06c/f51d5/plakat_2020_07.png 1366w,/static/595b224b634a1c6694d94578a61bc06c/84817/plakat_2020_07.png 1920w" alt="Poster: Jürgen hat einen Schaffner-Hut auf dem Kopf. Er hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier mit der Überschrift 'Fahrplan' geheftet ist. Unter der Überschrift ist ein Streckenplan mit Verzweigungen angedeutet."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="59ef0a09-a854-5bc5-a122-2d35ddcf6987"><a href="/talks/2020-04-29-jdk14_graalvm/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#486888;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/1b5849494114993b21e29316b4af1f35/e5d6f/plakat_2020_04.webp 750w,/static/1b5849494114993b21e29316b4af1f35/0671f/plakat_2020_04.webp 1080w,/static/1b5849494114993b21e29316b4af1f35/7e884/plakat_2020_04.webp 1366w,/static/1b5849494114993b21e29316b4af1f35/e2c0d/plakat_2020_04.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen sitzt in seinem Sessel. Er trägt sein übliches Jacket, eine Schlafanzug-Hose und Latschen. Neben dem Sessel sieht man seine üblichen schicken Schnürschuhe herumliegen. Er hat ein Headset aufgesetzt und seinen Laptop im Schoß. Jürgen verfolgt den Vortrag aus dem Home-Office. Auf dem Laptop-Deckel ist eine angebissene Banane zusehen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/1b5849494114993b21e29316b4af1f35/84817/plakat_2020_04.png" data-srcset="/static/1b5849494114993b21e29316b4af1f35/b8e70/plakat_2020_04.png 750w,/static/1b5849494114993b21e29316b4af1f35/e5839/plakat_2020_04.png 1080w,/static/1b5849494114993b21e29316b4af1f35/f51d5/plakat_2020_04.png 1366w,/static/1b5849494114993b21e29316b4af1f35/84817/plakat_2020_04.png 1920w" alt="Poster: Jürgen sitzt in seinem Sessel. Er trägt sein übliches Jacket, eine Schlafanzug-Hose und Latschen. Neben dem Sessel sieht man seine üblichen schicken Schnürschuhe herumliegen. Er hat ein Headset aufgesetzt und seinen Laptop im Schoß. Jürgen verfolgt den Vortrag aus dem Home-Office. Auf dem Laptop-Deckel ist eine angebissene Banane zusehen."/></picture><noscript><picture><source type="image/webp" srcSet="/static/1b5849494114993b21e29316b4af1f35/e5d6f/plakat_2020_04.webp 750w,/static/1b5849494114993b21e29316b4af1f35/0671f/plakat_2020_04.webp 1080w,/static/1b5849494114993b21e29316b4af1f35/7e884/plakat_2020_04.webp 1366w,/static/1b5849494114993b21e29316b4af1f35/e2c0d/plakat_2020_04.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen sitzt in seinem Sessel. Er trägt sein übliches Jacket, eine Schlafanzug-Hose und Latschen. Neben dem Sessel sieht man seine üblichen schicken Schnürschuhe herumliegen. Er hat ein Headset aufgesetzt und seinen Laptop im Schoß. Jürgen verfolgt den Vortrag aus dem Home-Office. Auf dem Laptop-Deckel ist eine angebissene Banane zusehen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/1b5849494114993b21e29316b4af1f35/84817/plakat_2020_04.png" srcSet="/static/1b5849494114993b21e29316b4af1f35/b8e70/plakat_2020_04.png 750w,/static/1b5849494114993b21e29316b4af1f35/e5839/plakat_2020_04.png 1080w,/static/1b5849494114993b21e29316b4af1f35/f51d5/plakat_2020_04.png 1366w,/static/1b5849494114993b21e29316b4af1f35/84817/plakat_2020_04.png 1920w" alt="Poster: Jürgen sitzt in seinem Sessel. Er trägt sein übliches Jacket, eine Schlafanzug-Hose und Latschen. Neben dem Sessel sieht man seine üblichen schicken Schnürschuhe herumliegen. Er hat ein Headset aufgesetzt und seinen Laptop im Schoß. Jürgen verfolgt den Vortrag aus dem Home-Office. Auf dem Laptop-Deckel ist eine angebissene Banane zusehen."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="abe046a7-29a3-5710-9b2b-cf4a5ff0c1a2"><a href="/talks/2020-01-27-cloud-foundry/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#583898;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/5ef746b99e05db0762f96d0a28f278da/e5d6f/plakat_2020-01.webp 750w,/static/5ef746b99e05db0762f96d0a28f278da/0671f/plakat_2020-01.webp 1080w,/static/5ef746b99e05db0762f96d0a28f278da/7e884/plakat_2020-01.webp 1366w,/static/5ef746b99e05db0762f96d0a28f278da/e2c0d/plakat_2020-01.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Wir sehen das typische Cloud-Symbol einer Wolke im Vordergrund. Jürgen stützt sich auf die Wolke, so als wäre es ein Kopfkissen. Er stützt seinen Kopf mit einem Arm ab und schaut ein bisschen verträumt. Er wirkt wie in Gedanken versunken." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/5ef746b99e05db0762f96d0a28f278da/84817/plakat_2020-01.png" data-srcset="/static/5ef746b99e05db0762f96d0a28f278da/b8e70/plakat_2020-01.png 750w,/static/5ef746b99e05db0762f96d0a28f278da/e5839/plakat_2020-01.png 1080w,/static/5ef746b99e05db0762f96d0a28f278da/f51d5/plakat_2020-01.png 1366w,/static/5ef746b99e05db0762f96d0a28f278da/84817/plakat_2020-01.png 1920w" alt="Wir sehen das typische Cloud-Symbol einer Wolke im Vordergrund. Jürgen stützt sich auf die Wolke, so als wäre es ein Kopfkissen. Er stützt seinen Kopf mit einem Arm ab und schaut ein bisschen verträumt. Er wirkt wie in Gedanken versunken."/></picture><noscript><picture><source type="image/webp" srcSet="/static/5ef746b99e05db0762f96d0a28f278da/e5d6f/plakat_2020-01.webp 750w,/static/5ef746b99e05db0762f96d0a28f278da/0671f/plakat_2020-01.webp 1080w,/static/5ef746b99e05db0762f96d0a28f278da/7e884/plakat_2020-01.webp 1366w,/static/5ef746b99e05db0762f96d0a28f278da/e2c0d/plakat_2020-01.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Wir sehen das typische Cloud-Symbol einer Wolke im Vordergrund. Jürgen stützt sich auf die Wolke, so als wäre es ein Kopfkissen. Er stützt seinen Kopf mit einem Arm ab und schaut ein bisschen verträumt. Er wirkt wie in Gedanken versunken." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/5ef746b99e05db0762f96d0a28f278da/84817/plakat_2020-01.png" srcSet="/static/5ef746b99e05db0762f96d0a28f278da/b8e70/plakat_2020-01.png 750w,/static/5ef746b99e05db0762f96d0a28f278da/e5839/plakat_2020-01.png 1080w,/static/5ef746b99e05db0762f96d0a28f278da/f51d5/plakat_2020-01.png 1366w,/static/5ef746b99e05db0762f96d0a28f278da/84817/plakat_2020-01.png 1920w" alt="Wir sehen das typische Cloud-Symbol einer Wolke im Vordergrund. Jürgen stützt sich auf die Wolke, so als wäre es ein Kopfkissen. Er stützt seinen Kopf mit einem Arm ab und schaut ein bisschen verträumt. Er wirkt wie in Gedanken versunken."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="6f443280-7e6e-5951-ab2a-0815064e81b4"><a href="/talks/2019-11-28-advanced-bdd-tests/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.45833333333334%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#d86868;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/c5e4690e979964e9c44af61d883856f8/ebc34/plakat_2019_11.webp 750w,/static/c5e4690e979964e9c44af61d883856f8/47da9/plakat_2019_11.webp 1080w,/static/c5e4690e979964e9c44af61d883856f8/659f9/plakat_2019_11.webp 1366w,/static/c5e4690e979964e9c44af61d883856f8/c86cf/plakat_2019_11.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier zusehen ist. Auf dem Blatt steht 'Testplan' oben und darunter sind drei Checkboxen mit angedeuteten Textzeilen daneben." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/c5e4690e979964e9c44af61d883856f8/b6707/plakat_2019_11.png" data-srcset="/static/c5e4690e979964e9c44af61d883856f8/0e3b9/plakat_2019_11.png 750w,/static/c5e4690e979964e9c44af61d883856f8/7aaf4/plakat_2019_11.png 1080w,/static/c5e4690e979964e9c44af61d883856f8/006ba/plakat_2019_11.png 1366w,/static/c5e4690e979964e9c44af61d883856f8/b6707/plakat_2019_11.png 1920w" alt="Poster: Jürgen hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier zusehen ist. Auf dem Blatt steht 'Testplan' oben und darunter sind drei Checkboxen mit angedeuteten Textzeilen daneben."/></picture><noscript><picture><source type="image/webp" srcSet="/static/c5e4690e979964e9c44af61d883856f8/ebc34/plakat_2019_11.webp 750w,/static/c5e4690e979964e9c44af61d883856f8/47da9/plakat_2019_11.webp 1080w,/static/c5e4690e979964e9c44af61d883856f8/659f9/plakat_2019_11.webp 1366w,/static/c5e4690e979964e9c44af61d883856f8/c86cf/plakat_2019_11.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier zusehen ist. Auf dem Blatt steht 'Testplan' oben und darunter sind drei Checkboxen mit angedeuteten Textzeilen daneben." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/c5e4690e979964e9c44af61d883856f8/b6707/plakat_2019_11.png" srcSet="/static/c5e4690e979964e9c44af61d883856f8/0e3b9/plakat_2019_11.png 750w,/static/c5e4690e979964e9c44af61d883856f8/7aaf4/plakat_2019_11.png 1080w,/static/c5e4690e979964e9c44af61d883856f8/006ba/plakat_2019_11.png 1366w,/static/c5e4690e979964e9c44af61d883856f8/b6707/plakat_2019_11.png 1920w" alt="Poster: Jürgen hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier zusehen ist. Auf dem Blatt steht 'Testplan' oben und darunter sind drei Checkboxen mit angedeuteten Textzeilen daneben."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="ecc9b098-2be1-50e1-87d8-48488a256061"><a href="/talks/2019-06-26-collection-framework/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.45833333333334%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#389838;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/359c95f2d624a1b8d7167b6ff2c5340c/ebc34/plakat_2019_06.webp 750w,/static/359c95f2d624a1b8d7167b6ff2c5340c/47da9/plakat_2019_06.webp 1080w,/static/359c95f2d624a1b8d7167b6ff2c5340c/659f9/plakat_2019_06.webp 1366w,/static/359c95f2d624a1b8d7167b6ff2c5340c/c86cf/plakat_2019_06.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt eine Sonnenbrille und ein buntes Hemd mit Blumen darauf. Er hält sich die Hand ans Kinn und grinst, so als würde er gerade einen Plan schmieden. An seinem Hemd hängt ein Schild mit der Aufschrift 'Sommer Collection'." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/359c95f2d624a1b8d7167b6ff2c5340c/b6707/plakat_2019_06.png" data-srcset="/static/359c95f2d624a1b8d7167b6ff2c5340c/0e3b9/plakat_2019_06.png 750w,/static/359c95f2d624a1b8d7167b6ff2c5340c/7aaf4/plakat_2019_06.png 1080w,/static/359c95f2d624a1b8d7167b6ff2c5340c/006ba/plakat_2019_06.png 1366w,/static/359c95f2d624a1b8d7167b6ff2c5340c/b6707/plakat_2019_06.png 1920w" alt="Poster: Jürgen trägt eine Sonnenbrille und ein buntes Hemd mit Blumen darauf. Er hält sich die Hand ans Kinn und grinst, so als würde er gerade einen Plan schmieden. An seinem Hemd hängt ein Schild mit der Aufschrift 'Sommer Collection'."/></picture><noscript><picture><source type="image/webp" srcSet="/static/359c95f2d624a1b8d7167b6ff2c5340c/ebc34/plakat_2019_06.webp 750w,/static/359c95f2d624a1b8d7167b6ff2c5340c/47da9/plakat_2019_06.webp 1080w,/static/359c95f2d624a1b8d7167b6ff2c5340c/659f9/plakat_2019_06.webp 1366w,/static/359c95f2d624a1b8d7167b6ff2c5340c/c86cf/plakat_2019_06.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt eine Sonnenbrille und ein buntes Hemd mit Blumen darauf. Er hält sich die Hand ans Kinn und grinst, so als würde er gerade einen Plan schmieden. An seinem Hemd hängt ein Schild mit der Aufschrift 'Sommer Collection'." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/359c95f2d624a1b8d7167b6ff2c5340c/b6707/plakat_2019_06.png" srcSet="/static/359c95f2d624a1b8d7167b6ff2c5340c/0e3b9/plakat_2019_06.png 750w,/static/359c95f2d624a1b8d7167b6ff2c5340c/7aaf4/plakat_2019_06.png 1080w,/static/359c95f2d624a1b8d7167b6ff2c5340c/006ba/plakat_2019_06.png 1366w,/static/359c95f2d624a1b8d7167b6ff2c5340c/b6707/plakat_2019_06.png 1920w" alt="Poster: Jürgen trägt eine Sonnenbrille und ein buntes Hemd mit Blumen darauf. Er hält sich die Hand ans Kinn und grinst, so als würde er gerade einen Plan schmieden. An seinem Hemd hängt ein Schild mit der Aufschrift 'Sommer Collection'."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="cb4beaed-8514-5a8a-8dfe-7bec12fbdd27"><a href="/talks/2019-05-29-oauth/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.45833333333334%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#386898;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/eaf6c5845a5ab5a40e0dd634a7eaed23/ebc34/plakat_2019_05.webp 750w,/static/eaf6c5845a5ab5a40e0dd634a7eaed23/47da9/plakat_2019_05.webp 1080w,/static/eaf6c5845a5ab5a40e0dd634a7eaed23/659f9/plakat_2019_05.webp 1366w,/static/eaf6c5845a5ab5a40e0dd634a7eaed23/c86cf/plakat_2019_05.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/eaf6c5845a5ab5a40e0dd634a7eaed23/b6707/plakat_2019_05.png" data-srcset="/static/eaf6c5845a5ab5a40e0dd634a7eaed23/0e3b9/plakat_2019_05.png 750w,/static/eaf6c5845a5ab5a40e0dd634a7eaed23/7aaf4/plakat_2019_05.png 1080w,/static/eaf6c5845a5ab5a40e0dd634a7eaed23/006ba/plakat_2019_05.png 1366w,/static/eaf6c5845a5ab5a40e0dd634a7eaed23/b6707/plakat_2019_05.png 1920w" alt="Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten."/></picture><noscript><picture><source type="image/webp" srcSet="/static/eaf6c5845a5ab5a40e0dd634a7eaed23/ebc34/plakat_2019_05.webp 750w,/static/eaf6c5845a5ab5a40e0dd634a7eaed23/47da9/plakat_2019_05.webp 1080w,/static/eaf6c5845a5ab5a40e0dd634a7eaed23/659f9/plakat_2019_05.webp 1366w,/static/eaf6c5845a5ab5a40e0dd634a7eaed23/c86cf/plakat_2019_05.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/eaf6c5845a5ab5a40e0dd634a7eaed23/b6707/plakat_2019_05.png" srcSet="/static/eaf6c5845a5ab5a40e0dd634a7eaed23/0e3b9/plakat_2019_05.png 750w,/static/eaf6c5845a5ab5a40e0dd634a7eaed23/7aaf4/plakat_2019_05.png 1080w,/static/eaf6c5845a5ab5a40e0dd634a7eaed23/006ba/plakat_2019_05.png 1366w,/static/eaf6c5845a5ab5a40e0dd634a7eaed23/b6707/plakat_2019_05.png 1920w" alt="Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="e335d1a1-3789-5e42-9670-a3e1c361eadc"><a href="/talks/2019-04-24_jdk_jungle/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.45833333333334%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#f8f8f8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/32de550f9e63747cb85192fa0598ae2c/ebc34/plakat_2019_04.webp 750w,/static/32de550f9e63747cb85192fa0598ae2c/47da9/plakat_2019_04.webp 1080w,/static/32de550f9e63747cb85192fa0598ae2c/659f9/plakat_2019_04.webp 1366w,/static/32de550f9e63747cb85192fa0598ae2c/c86cf/plakat_2019_04.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält eine Schriftrolle mit offiziellen Siegel in der Hand und liest wie ein mittelalterlicher Herold daraus vor. Wir sehen leider nicht den Text auf der Schriftrolle." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/32de550f9e63747cb85192fa0598ae2c/b6707/plakat_2019_04.png" data-srcset="/static/32de550f9e63747cb85192fa0598ae2c/0e3b9/plakat_2019_04.png 750w,/static/32de550f9e63747cb85192fa0598ae2c/7aaf4/plakat_2019_04.png 1080w,/static/32de550f9e63747cb85192fa0598ae2c/006ba/plakat_2019_04.png 1366w,/static/32de550f9e63747cb85192fa0598ae2c/b6707/plakat_2019_04.png 1920w" alt="Poster: Jürgen hält eine Schriftrolle mit offiziellen Siegel in der Hand und liest wie ein mittelalterlicher Herold daraus vor. Wir sehen leider nicht den Text auf der Schriftrolle."/></picture><noscript><picture><source type="image/webp" srcSet="/static/32de550f9e63747cb85192fa0598ae2c/ebc34/plakat_2019_04.webp 750w,/static/32de550f9e63747cb85192fa0598ae2c/47da9/plakat_2019_04.webp 1080w,/static/32de550f9e63747cb85192fa0598ae2c/659f9/plakat_2019_04.webp 1366w,/static/32de550f9e63747cb85192fa0598ae2c/c86cf/plakat_2019_04.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält eine Schriftrolle mit offiziellen Siegel in der Hand und liest wie ein mittelalterlicher Herold daraus vor. Wir sehen leider nicht den Text auf der Schriftrolle." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/32de550f9e63747cb85192fa0598ae2c/b6707/plakat_2019_04.png" srcSet="/static/32de550f9e63747cb85192fa0598ae2c/0e3b9/plakat_2019_04.png 750w,/static/32de550f9e63747cb85192fa0598ae2c/7aaf4/plakat_2019_04.png 1080w,/static/32de550f9e63747cb85192fa0598ae2c/006ba/plakat_2019_04.png 1366w,/static/32de550f9e63747cb85192fa0598ae2c/b6707/plakat_2019_04.png 1920w" alt="Poster: Jürgen hält eine Schriftrolle mit offiziellen Siegel in der Hand und liest wie ein mittelalterlicher Herold daraus vor. Wir sehen leider nicht den Text auf der Schriftrolle."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="bffb7b05-0e58-5922-92df-21ce241ccd84"><a href="/talks/2019-03-27-static-site-generators/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.45161290322582%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#a8c868;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/a69cadfbb400620dadfb89d178c1c8db/ebc34/plakat_2019_03.webp 750w,/static/a69cadfbb400620dadfb89d178c1c8db/47da9/plakat_2019_03.webp 1080w,/static/a69cadfbb400620dadfb89d178c1c8db/5c55f/plakat_2019_03.webp 1240w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält einen Kasten in der Hand mit jeweils einem Trichter oben und unten. Oben gibt er zwei Dokumente hinein und unten fällt das Bild einer Webseite heraus. Auf dem Kasten ist das Logo von Gatsbyjs zu sehen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/a69cadfbb400620dadfb89d178c1c8db/a6b6d/plakat_2019_03.png" data-srcset="/static/a69cadfbb400620dadfb89d178c1c8db/0e3b9/plakat_2019_03.png 750w,/static/a69cadfbb400620dadfb89d178c1c8db/7aaf4/plakat_2019_03.png 1080w,/static/a69cadfbb400620dadfb89d178c1c8db/a6b6d/plakat_2019_03.png 1240w" alt="Poster: Jürgen hält einen Kasten in der Hand mit jeweils einem Trichter oben und unten. Oben gibt er zwei Dokumente hinein und unten fällt das Bild einer Webseite heraus. Auf dem Kasten ist das Logo von Gatsbyjs zu sehen."/></picture><noscript><picture><source type="image/webp" srcSet="/static/a69cadfbb400620dadfb89d178c1c8db/ebc34/plakat_2019_03.webp 750w,/static/a69cadfbb400620dadfb89d178c1c8db/47da9/plakat_2019_03.webp 1080w,/static/a69cadfbb400620dadfb89d178c1c8db/5c55f/plakat_2019_03.webp 1240w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält einen Kasten in der Hand mit jeweils einem Trichter oben und unten. Oben gibt er zwei Dokumente hinein und unten fällt das Bild einer Webseite heraus. Auf dem Kasten ist das Logo von Gatsbyjs zu sehen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/a69cadfbb400620dadfb89d178c1c8db/a6b6d/plakat_2019_03.png" srcSet="/static/a69cadfbb400620dadfb89d178c1c8db/0e3b9/plakat_2019_03.png 750w,/static/a69cadfbb400620dadfb89d178c1c8db/7aaf4/plakat_2019_03.png 1080w,/static/a69cadfbb400620dadfb89d178c1c8db/a6b6d/plakat_2019_03.png 1240w" alt="Poster: Jürgen hält einen Kasten in der Hand mit jeweils einem Trichter oben und unten. Oben gibt er zwei Dokumente hinein und unten fällt das Bild einer Webseite heraus. Auf dem Kasten ist das Logo von Gatsbyjs zu sehen."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="b2cb5256-0c61-5e8b-8a34-23f74562f16f"><a href="/talks/2019-02-27_reflection/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#78b8b8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/15923e5b77de857597a70091dfe03bd5/e5d6f/plakat_2019_02.webp 750w,/static/15923e5b77de857597a70091dfe03bd5/0671f/plakat_2019_02.webp 1080w,/static/15923e5b77de857597a70091dfe03bd5/7e884/plakat_2019_02.webp 1366w,/static/15923e5b77de857597a70091dfe03bd5/e2c0d/plakat_2019_02.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/15923e5b77de857597a70091dfe03bd5/84817/plakat_2019_02.png" data-srcset="/static/15923e5b77de857597a70091dfe03bd5/b8e70/plakat_2019_02.png 750w,/static/15923e5b77de857597a70091dfe03bd5/e5839/plakat_2019_02.png 1080w,/static/15923e5b77de857597a70091dfe03bd5/f51d5/plakat_2019_02.png 1366w,/static/15923e5b77de857597a70091dfe03bd5/84817/plakat_2019_02.png 1920w" alt="Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand."/></picture><noscript><picture><source type="image/webp" srcSet="/static/15923e5b77de857597a70091dfe03bd5/e5d6f/plakat_2019_02.webp 750w,/static/15923e5b77de857597a70091dfe03bd5/0671f/plakat_2019_02.webp 1080w,/static/15923e5b77de857597a70091dfe03bd5/7e884/plakat_2019_02.webp 1366w,/static/15923e5b77de857597a70091dfe03bd5/e2c0d/plakat_2019_02.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/15923e5b77de857597a70091dfe03bd5/84817/plakat_2019_02.png" srcSet="/static/15923e5b77de857597a70091dfe03bd5/b8e70/plakat_2019_02.png 750w,/static/15923e5b77de857597a70091dfe03bd5/e5839/plakat_2019_02.png 1080w,/static/15923e5b77de857597a70091dfe03bd5/f51d5/plakat_2019_02.png 1366w,/static/15923e5b77de857597a70091dfe03bd5/84817/plakat_2019_02.png 1920w" alt="Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="8509bc59-0ad5-5d24-87e3-f253d53d68b2"><a href="/talks/2019-01-31_java_apis_missing_manual/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#3858b8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/8c4759d0cca5ff005992863b4cbbfd0c/e5d6f/plakat_2019_01.webp 750w,/static/8c4759d0cca5ff005992863b4cbbfd0c/0671f/plakat_2019_01.webp 1080w,/static/8c4759d0cca5ff005992863b4cbbfd0c/7e884/plakat_2019_01.webp 1366w,/static/8c4759d0cca5ff005992863b4cbbfd0c/e2c0d/plakat_2019_01.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen sitzt mit seiner Lesebrille in seinem Sessel und liest ein Buch. Auf dem Buchrücken steht 'Javadoc'" data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/8c4759d0cca5ff005992863b4cbbfd0c/84817/plakat_2019_01.png" data-srcset="/static/8c4759d0cca5ff005992863b4cbbfd0c/b8e70/plakat_2019_01.png 750w,/static/8c4759d0cca5ff005992863b4cbbfd0c/e5839/plakat_2019_01.png 1080w,/static/8c4759d0cca5ff005992863b4cbbfd0c/f51d5/plakat_2019_01.png 1366w,/static/8c4759d0cca5ff005992863b4cbbfd0c/84817/plakat_2019_01.png 1920w" alt="Poster: Jürgen sitzt mit seiner Lesebrille in seinem Sessel und liest ein Buch. Auf dem Buchrücken steht 'Javadoc'"/></picture><noscript><picture><source type="image/webp" srcSet="/static/8c4759d0cca5ff005992863b4cbbfd0c/e5d6f/plakat_2019_01.webp 750w,/static/8c4759d0cca5ff005992863b4cbbfd0c/0671f/plakat_2019_01.webp 1080w,/static/8c4759d0cca5ff005992863b4cbbfd0c/7e884/plakat_2019_01.webp 1366w,/static/8c4759d0cca5ff005992863b4cbbfd0c/e2c0d/plakat_2019_01.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen sitzt mit seiner Lesebrille in seinem Sessel und liest ein Buch. Auf dem Buchrücken steht 'Javadoc'" data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/8c4759d0cca5ff005992863b4cbbfd0c/84817/plakat_2019_01.png" srcSet="/static/8c4759d0cca5ff005992863b4cbbfd0c/b8e70/plakat_2019_01.png 750w,/static/8c4759d0cca5ff005992863b4cbbfd0c/e5839/plakat_2019_01.png 1080w,/static/8c4759d0cca5ff005992863b4cbbfd0c/f51d5/plakat_2019_01.png 1366w,/static/8c4759d0cca5ff005992863b4cbbfd0c/84817/plakat_2019_01.png 1920w" alt="Poster: Jürgen sitzt mit seiner Lesebrille in seinem Sessel und liest ein Buch. Auf dem Buchrücken steht 'Javadoc'"/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="918002c9-e393-5b8d-a2d6-ee73c1735383"><a href="/talks/2018-11-23-monadische_transaktionen/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#680838;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/d29473cce93e3ade3231fd7ea7b0188e/e5d6f/plakat_2018_11.webp 750w,/static/d29473cce93e3ade3231fd7ea7b0188e/0671f/plakat_2018_11.webp 1080w,/static/d29473cce93e3ade3231fd7ea7b0188e/7e884/plakat_2018_11.webp 1366w,/static/d29473cce93e3ade3231fd7ea7b0188e/e2c0d/plakat_2018_11.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen grinst und hält ein Tablett in der Hand. Auf dem Tablett steht eine durchsichtige Flasche mit gelber Limo darin. Auf dem Etikett steht 'Li-Monade' geschrieben." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/d29473cce93e3ade3231fd7ea7b0188e/84817/plakat_2018_11.png" data-srcset="/static/d29473cce93e3ade3231fd7ea7b0188e/b8e70/plakat_2018_11.png 750w,/static/d29473cce93e3ade3231fd7ea7b0188e/e5839/plakat_2018_11.png 1080w,/static/d29473cce93e3ade3231fd7ea7b0188e/f51d5/plakat_2018_11.png 1366w,/static/d29473cce93e3ade3231fd7ea7b0188e/84817/plakat_2018_11.png 1920w" alt="Poster: Jürgen grinst und hält ein Tablett in der Hand. Auf dem Tablett steht eine durchsichtige Flasche mit gelber Limo darin. Auf dem Etikett steht 'Li-Monade' geschrieben."/></picture><noscript><picture><source type="image/webp" srcSet="/static/d29473cce93e3ade3231fd7ea7b0188e/e5d6f/plakat_2018_11.webp 750w,/static/d29473cce93e3ade3231fd7ea7b0188e/0671f/plakat_2018_11.webp 1080w,/static/d29473cce93e3ade3231fd7ea7b0188e/7e884/plakat_2018_11.webp 1366w,/static/d29473cce93e3ade3231fd7ea7b0188e/e2c0d/plakat_2018_11.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen grinst und hält ein Tablett in der Hand. Auf dem Tablett steht eine durchsichtige Flasche mit gelber Limo darin. Auf dem Etikett steht 'Li-Monade' geschrieben." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/d29473cce93e3ade3231fd7ea7b0188e/84817/plakat_2018_11.png" srcSet="/static/d29473cce93e3ade3231fd7ea7b0188e/b8e70/plakat_2018_11.png 750w,/static/d29473cce93e3ade3231fd7ea7b0188e/e5839/plakat_2018_11.png 1080w,/static/d29473cce93e3ade3231fd7ea7b0188e/f51d5/plakat_2018_11.png 1366w,/static/d29473cce93e3ade3231fd7ea7b0188e/84817/plakat_2018_11.png 1920w" alt="Poster: Jürgen grinst und hält ein Tablett in der Hand. Auf dem Tablett steht eine durchsichtige Flasche mit gelber Limo darin. Auf dem Etikett steht 'Li-Monade' geschrieben."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="f72f3e37-dad2-51b5-9e2a-b6413a70715c"><a href="/posts/2018-07-31-grillabend/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#d88828;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/ef0ba78d7c603390b50fd5bee9599b5a/e5d6f/plakat_2017_07.webp 750w,/static/ef0ba78d7c603390b50fd5bee9599b5a/0671f/plakat_2017_07.webp 1080w,/static/ef0ba78d7c603390b50fd5bee9599b5a/7e884/plakat_2017_07.webp 1366w,/static/ef0ba78d7c603390b50fd5bee9599b5a/e2c0d/plakat_2017_07.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen grinst und hält einen Teller mit Bratwürsten in der Hand" data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/ef0ba78d7c603390b50fd5bee9599b5a/84817/plakat_2017_07.png" data-srcset="/static/ef0ba78d7c603390b50fd5bee9599b5a/b8e70/plakat_2017_07.png 750w,/static/ef0ba78d7c603390b50fd5bee9599b5a/e5839/plakat_2017_07.png 1080w,/static/ef0ba78d7c603390b50fd5bee9599b5a/f51d5/plakat_2017_07.png 1366w,/static/ef0ba78d7c603390b50fd5bee9599b5a/84817/plakat_2017_07.png 1920w" alt="Poster: Jürgen grinst und hält einen Teller mit Bratwürsten in der Hand"/></picture><noscript><picture><source type="image/webp" srcSet="/static/ef0ba78d7c603390b50fd5bee9599b5a/e5d6f/plakat_2017_07.webp 750w,/static/ef0ba78d7c603390b50fd5bee9599b5a/0671f/plakat_2017_07.webp 1080w,/static/ef0ba78d7c603390b50fd5bee9599b5a/7e884/plakat_2017_07.webp 1366w,/static/ef0ba78d7c603390b50fd5bee9599b5a/e2c0d/plakat_2017_07.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen grinst und hält einen Teller mit Bratwürsten in der Hand" data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/ef0ba78d7c603390b50fd5bee9599b5a/84817/plakat_2017_07.png" srcSet="/static/ef0ba78d7c603390b50fd5bee9599b5a/b8e70/plakat_2017_07.png 750w,/static/ef0ba78d7c603390b50fd5bee9599b5a/e5839/plakat_2017_07.png 1080w,/static/ef0ba78d7c603390b50fd5bee9599b5a/f51d5/plakat_2017_07.png 1366w,/static/ef0ba78d7c603390b50fd5bee9599b5a/84817/plakat_2017_07.png 1920w" alt="Poster: Jürgen grinst und hält einen Teller mit Bratwürsten in der Hand"/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="314ba704-f1f4-5d2c-8535-b32da028a3c9"><a href="/talks/2018-06-27-immutable-data/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#780838;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/1fae33eb72f57d492a22e010e53219f1/e5d6f/plakat_2018_06.webp 750w,/static/1fae33eb72f57d492a22e010e53219f1/0671f/plakat_2018_06.webp 1080w,/static/1fae33eb72f57d492a22e010e53219f1/7e884/plakat_2018_06.webp 1366w,/static/1fae33eb72f57d492a22e010e53219f1/e2c0d/plakat_2018_06.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen steht vor einem großen Steinblock, der fast aussieht wie ein Grabstein. Auf dem Stein sind lauter Nullen und Einsen eingraviert. Er hält einen Hammer und Meißel in der Hand." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/1fae33eb72f57d492a22e010e53219f1/84817/plakat_2018_06.png" data-srcset="/static/1fae33eb72f57d492a22e010e53219f1/b8e70/plakat_2018_06.png 750w,/static/1fae33eb72f57d492a22e010e53219f1/e5839/plakat_2018_06.png 1080w,/static/1fae33eb72f57d492a22e010e53219f1/f51d5/plakat_2018_06.png 1366w,/static/1fae33eb72f57d492a22e010e53219f1/84817/plakat_2018_06.png 1920w" alt="Poster: Jürgen steht vor einem großen Steinblock, der fast aussieht wie ein Grabstein. Auf dem Stein sind lauter Nullen und Einsen eingraviert. Er hält einen Hammer und Meißel in der Hand."/></picture><noscript><picture><source type="image/webp" srcSet="/static/1fae33eb72f57d492a22e010e53219f1/e5d6f/plakat_2018_06.webp 750w,/static/1fae33eb72f57d492a22e010e53219f1/0671f/plakat_2018_06.webp 1080w,/static/1fae33eb72f57d492a22e010e53219f1/7e884/plakat_2018_06.webp 1366w,/static/1fae33eb72f57d492a22e010e53219f1/e2c0d/plakat_2018_06.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen steht vor einem großen Steinblock, der fast aussieht wie ein Grabstein. Auf dem Stein sind lauter Nullen und Einsen eingraviert. Er hält einen Hammer und Meißel in der Hand." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/1fae33eb72f57d492a22e010e53219f1/84817/plakat_2018_06.png" srcSet="/static/1fae33eb72f57d492a22e010e53219f1/b8e70/plakat_2018_06.png 750w,/static/1fae33eb72f57d492a22e010e53219f1/e5839/plakat_2018_06.png 1080w,/static/1fae33eb72f57d492a22e010e53219f1/f51d5/plakat_2018_06.png 1366w,/static/1fae33eb72f57d492a22e010e53219f1/84817/plakat_2018_06.png 1920w" alt="Poster: Jürgen steht vor einem großen Steinblock, der fast aussieht wie ein Grabstein. Auf dem Stein sind lauter Nullen und Einsen eingraviert. Er hält einen Hammer und Meißel in der Hand."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="90e1be0b-07fd-5977-ad85-c716671424c1"><a href="/talks/2018-05-30-graphql/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#e838a8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/70801d1cf0778b63b022c58e167483bf/e5d6f/plakat_2018_05.webp 750w,/static/70801d1cf0778b63b022c58e167483bf/0671f/plakat_2018_05.webp 1080w,/static/70801d1cf0778b63b022c58e167483bf/7e884/plakat_2018_05.webp 1366w,/static/70801d1cf0778b63b022c58e167483bf/e2c0d/plakat_2018_05.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das GraphQL-Logo zu sehen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/70801d1cf0778b63b022c58e167483bf/84817/plakat_2018_05.png" data-srcset="/static/70801d1cf0778b63b022c58e167483bf/b8e70/plakat_2018_05.png 750w,/static/70801d1cf0778b63b022c58e167483bf/e5839/plakat_2018_05.png 1080w,/static/70801d1cf0778b63b022c58e167483bf/f51d5/plakat_2018_05.png 1366w,/static/70801d1cf0778b63b022c58e167483bf/84817/plakat_2018_05.png 1920w" alt="Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das GraphQL-Logo zu sehen."/></picture><noscript><picture><source type="image/webp" srcSet="/static/70801d1cf0778b63b022c58e167483bf/e5d6f/plakat_2018_05.webp 750w,/static/70801d1cf0778b63b022c58e167483bf/0671f/plakat_2018_05.webp 1080w,/static/70801d1cf0778b63b022c58e167483bf/7e884/plakat_2018_05.webp 1366w,/static/70801d1cf0778b63b022c58e167483bf/e2c0d/plakat_2018_05.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das GraphQL-Logo zu sehen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/70801d1cf0778b63b022c58e167483bf/84817/plakat_2018_05.png" srcSet="/static/70801d1cf0778b63b022c58e167483bf/b8e70/plakat_2018_05.png 750w,/static/70801d1cf0778b63b022c58e167483bf/e5839/plakat_2018_05.png 1080w,/static/70801d1cf0778b63b022c58e167483bf/f51d5/plakat_2018_05.png 1366w,/static/70801d1cf0778b63b022c58e167483bf/84817/plakat_2018_05.png 1920w" alt="Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das GraphQL-Logo zu sehen."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="1a259f6b-01d1-58d9-9813-e4fb56a34153"><a href="/talks/2018-04-25-kotlin/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#d8b808;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/7425eb2154d8ac0def6b6a91b1bc7b2d/ebc34/plakat_2018_04.webp 750w,/static/7425eb2154d8ac0def6b6a91b1bc7b2d/0671f/plakat_2018_04.webp 1080w,/static/7425eb2154d8ac0def6b6a91b1bc7b2d/659f9/plakat_2018_04.webp 1366w,/static/7425eb2154d8ac0def6b6a91b1bc7b2d/e2c0d/plakat_2018_04.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält einen Globus in der Hand und platziert eine kleine Fahne an die Stelle der russischen Insel 'Kotlin'. Er trägt eine russische Fell-Mütze" data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/7425eb2154d8ac0def6b6a91b1bc7b2d/84817/plakat_2018_04.png" data-srcset="/static/7425eb2154d8ac0def6b6a91b1bc7b2d/0e3b9/plakat_2018_04.png 750w,/static/7425eb2154d8ac0def6b6a91b1bc7b2d/e5839/plakat_2018_04.png 1080w,/static/7425eb2154d8ac0def6b6a91b1bc7b2d/006ba/plakat_2018_04.png 1366w,/static/7425eb2154d8ac0def6b6a91b1bc7b2d/84817/plakat_2018_04.png 1920w" alt="Poster: Jürgen hält einen Globus in der Hand und platziert eine kleine Fahne an die Stelle der russischen Insel 'Kotlin'. Er trägt eine russische Fell-Mütze"/></picture><noscript><picture><source type="image/webp" srcSet="/static/7425eb2154d8ac0def6b6a91b1bc7b2d/ebc34/plakat_2018_04.webp 750w,/static/7425eb2154d8ac0def6b6a91b1bc7b2d/0671f/plakat_2018_04.webp 1080w,/static/7425eb2154d8ac0def6b6a91b1bc7b2d/659f9/plakat_2018_04.webp 1366w,/static/7425eb2154d8ac0def6b6a91b1bc7b2d/e2c0d/plakat_2018_04.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält einen Globus in der Hand und platziert eine kleine Fahne an die Stelle der russischen Insel 'Kotlin'. Er trägt eine russische Fell-Mütze" data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/7425eb2154d8ac0def6b6a91b1bc7b2d/84817/plakat_2018_04.png" srcSet="/static/7425eb2154d8ac0def6b6a91b1bc7b2d/0e3b9/plakat_2018_04.png 750w,/static/7425eb2154d8ac0def6b6a91b1bc7b2d/e5839/plakat_2018_04.png 1080w,/static/7425eb2154d8ac0def6b6a91b1bc7b2d/006ba/plakat_2018_04.png 1366w,/static/7425eb2154d8ac0def6b6a91b1bc7b2d/84817/plakat_2018_04.png 1920w" alt="Poster: Jürgen hält einen Globus in der Hand und platziert eine kleine Fahne an die Stelle der russischen Insel 'Kotlin'. Er trägt eine russische Fell-Mütze"/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="96d1873a-e218-5bea-9d77-8dc2e42dbbc6"><a href="/talks/2018-03-20-mikro_vs_makroarchitektur/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#082868;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/6067d1db118af9c9218894cda3ecec37/ebc34/plakat_2018_03.webp 750w,/static/6067d1db118af9c9218894cda3ecec37/0671f/plakat_2018_03.webp 1080w,/static/6067d1db118af9c9218894cda3ecec37/659f9/plakat_2018_03.webp 1366w,/static/6067d1db118af9c9218894cda3ecec37/e2c0d/plakat_2018_03.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen freut sich und hält einen Bauplan in der Hand." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/6067d1db118af9c9218894cda3ecec37/84817/plakat_2018_03.png" data-srcset="/static/6067d1db118af9c9218894cda3ecec37/0e3b9/plakat_2018_03.png 750w,/static/6067d1db118af9c9218894cda3ecec37/e5839/plakat_2018_03.png 1080w,/static/6067d1db118af9c9218894cda3ecec37/006ba/plakat_2018_03.png 1366w,/static/6067d1db118af9c9218894cda3ecec37/84817/plakat_2018_03.png 1920w" alt="Poster: Jürgen freut sich und hält einen Bauplan in der Hand."/></picture><noscript><picture><source type="image/webp" srcSet="/static/6067d1db118af9c9218894cda3ecec37/ebc34/plakat_2018_03.webp 750w,/static/6067d1db118af9c9218894cda3ecec37/0671f/plakat_2018_03.webp 1080w,/static/6067d1db118af9c9218894cda3ecec37/659f9/plakat_2018_03.webp 1366w,/static/6067d1db118af9c9218894cda3ecec37/e2c0d/plakat_2018_03.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen freut sich und hält einen Bauplan in der Hand." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/6067d1db118af9c9218894cda3ecec37/84817/plakat_2018_03.png" srcSet="/static/6067d1db118af9c9218894cda3ecec37/0e3b9/plakat_2018_03.png 750w,/static/6067d1db118af9c9218894cda3ecec37/e5839/plakat_2018_03.png 1080w,/static/6067d1db118af9c9218894cda3ecec37/006ba/plakat_2018_03.png 1366w,/static/6067d1db118af9c9218894cda3ecec37/84817/plakat_2018_03.png 1920w" alt="Poster: Jürgen freut sich und hält einen Bauplan in der Hand."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="65d7329c-3fb6-5a77-8b25-3984a599f9e8"><a href="/talks/2018-02-28-java_auf_sap_cloud/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#78b8b8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/55c9a31f3c453bcd2592f54f307655df/ebc34/plakat_2018_02.webp 750w,/static/55c9a31f3c453bcd2592f54f307655df/0671f/plakat_2018_02.webp 1080w,/static/55c9a31f3c453bcd2592f54f307655df/659f9/plakat_2018_02.webp 1366w,/static/55c9a31f3c453bcd2592f54f307655df/e2c0d/plakat_2018_02.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält einige kleine Programm-Fenster in der Hand. Er hebt die Programme in eine Wolke, die sich hinter ihm befindet. Die Wolke sieht aus wie das Cloud-Symbol." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/55c9a31f3c453bcd2592f54f307655df/84817/plakat_2018_02.png" data-srcset="/static/55c9a31f3c453bcd2592f54f307655df/0e3b9/plakat_2018_02.png 750w,/static/55c9a31f3c453bcd2592f54f307655df/e5839/plakat_2018_02.png 1080w,/static/55c9a31f3c453bcd2592f54f307655df/006ba/plakat_2018_02.png 1366w,/static/55c9a31f3c453bcd2592f54f307655df/84817/plakat_2018_02.png 1920w" alt="Poster: Jürgen hält einige kleine Programm-Fenster in der Hand. Er hebt die Programme in eine Wolke, die sich hinter ihm befindet. Die Wolke sieht aus wie das Cloud-Symbol."/></picture><noscript><picture><source type="image/webp" srcSet="/static/55c9a31f3c453bcd2592f54f307655df/ebc34/plakat_2018_02.webp 750w,/static/55c9a31f3c453bcd2592f54f307655df/0671f/plakat_2018_02.webp 1080w,/static/55c9a31f3c453bcd2592f54f307655df/659f9/plakat_2018_02.webp 1366w,/static/55c9a31f3c453bcd2592f54f307655df/e2c0d/plakat_2018_02.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält einige kleine Programm-Fenster in der Hand. Er hebt die Programme in eine Wolke, die sich hinter ihm befindet. Die Wolke sieht aus wie das Cloud-Symbol." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/55c9a31f3c453bcd2592f54f307655df/84817/plakat_2018_02.png" srcSet="/static/55c9a31f3c453bcd2592f54f307655df/0e3b9/plakat_2018_02.png 750w,/static/55c9a31f3c453bcd2592f54f307655df/e5839/plakat_2018_02.png 1080w,/static/55c9a31f3c453bcd2592f54f307655df/006ba/plakat_2018_02.png 1366w,/static/55c9a31f3c453bcd2592f54f307655df/84817/plakat_2018_02.png 1920w" alt="Poster: Jürgen hält einige kleine Programm-Fenster in der Hand. Er hebt die Programme in eine Wolke, die sich hinter ihm befindet. Die Wolke sieht aus wie das Cloud-Symbol."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="9685adbf-d27b-5f98-934a-54d7dc3fcdb8"><a href="/talks/2018-01-31-system_of_systems/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.41821112006448%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#383898;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/88afeee4b9b4d069f5896633d252a8d6/ebc34/plakat_2018_01.webp 750w,/static/88afeee4b9b4d069f5896633d252a8d6/0671f/plakat_2018_01.webp 1080w,/static/88afeee4b9b4d069f5896633d252a8d6/cbc2f/plakat_2018_01.webp 1241w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Wir sehen Jürgen über die Schulter, wie er einen Bauplan in der Hand hält und mit einer Schere in kleinere Stücke zerschneidet." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/88afeee4b9b4d069f5896633d252a8d6/242cd/plakat_2018_01.png" data-srcset="/static/88afeee4b9b4d069f5896633d252a8d6/0e3b9/plakat_2018_01.png 750w,/static/88afeee4b9b4d069f5896633d252a8d6/e5839/plakat_2018_01.png 1080w,/static/88afeee4b9b4d069f5896633d252a8d6/242cd/plakat_2018_01.png 1241w" alt="Poster: Wir sehen Jürgen über die Schulter, wie er einen Bauplan in der Hand hält und mit einer Schere in kleinere Stücke zerschneidet."/></picture><noscript><picture><source type="image/webp" srcSet="/static/88afeee4b9b4d069f5896633d252a8d6/ebc34/plakat_2018_01.webp 750w,/static/88afeee4b9b4d069f5896633d252a8d6/0671f/plakat_2018_01.webp 1080w,/static/88afeee4b9b4d069f5896633d252a8d6/cbc2f/plakat_2018_01.webp 1241w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Wir sehen Jürgen über die Schulter, wie er einen Bauplan in der Hand hält und mit einer Schere in kleinere Stücke zerschneidet." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/88afeee4b9b4d069f5896633d252a8d6/242cd/plakat_2018_01.png" srcSet="/static/88afeee4b9b4d069f5896633d252a8d6/0e3b9/plakat_2018_01.png 750w,/static/88afeee4b9b4d069f5896633d252a8d6/e5839/plakat_2018_01.png 1080w,/static/88afeee4b9b4d069f5896633d252a8d6/242cd/plakat_2018_01.png 1241w" alt="Poster: Wir sehen Jürgen über die Schulter, wie er einen Bauplan in der Hand hält und mit einer Schere in kleinere Stücke zerschneidet."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="0d8148d9-9587-5da3-aaf0-f92c5603d344"><a href="/talks/2017-11-29-neo4j/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#587828;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/b722dd1b2e5bde00c9706fb3bb19bd30/ebc34/plakat_2017_11.webp 750w,/static/b722dd1b2e5bde00c9706fb3bb19bd30/0671f/plakat_2017_11.webp 1080w,/static/b722dd1b2e5bde00c9706fb3bb19bd30/659f9/plakat_2017_11.webp 1366w,/static/b722dd1b2e5bde00c9706fb3bb19bd30/e2c0d/plakat_2017_11.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen sitzt im Sessel mit seiner Lesebrille und liest ein Buch. Auf dem Buch ist der Neo4J-Schriftzug zu lesen und darunter der Titel 'Graf Datenbankula' als Anspielung auf Graf Drakula. Entsprechend sieht man bei Jurgen spitze Schneidezähne, wie bei einem Vampir." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/b722dd1b2e5bde00c9706fb3bb19bd30/84817/plakat_2017_11.png" data-srcset="/static/b722dd1b2e5bde00c9706fb3bb19bd30/0e3b9/plakat_2017_11.png 750w,/static/b722dd1b2e5bde00c9706fb3bb19bd30/e5839/plakat_2017_11.png 1080w,/static/b722dd1b2e5bde00c9706fb3bb19bd30/006ba/plakat_2017_11.png 1366w,/static/b722dd1b2e5bde00c9706fb3bb19bd30/84817/plakat_2017_11.png 1920w" alt="Poster: Jürgen sitzt im Sessel mit seiner Lesebrille und liest ein Buch. Auf dem Buch ist der Neo4J-Schriftzug zu lesen und darunter der Titel 'Graf Datenbankula' als Anspielung auf Graf Drakula. Entsprechend sieht man bei Jurgen spitze Schneidezähne, wie bei einem Vampir."/></picture><noscript><picture><source type="image/webp" srcSet="/static/b722dd1b2e5bde00c9706fb3bb19bd30/ebc34/plakat_2017_11.webp 750w,/static/b722dd1b2e5bde00c9706fb3bb19bd30/0671f/plakat_2017_11.webp 1080w,/static/b722dd1b2e5bde00c9706fb3bb19bd30/659f9/plakat_2017_11.webp 1366w,/static/b722dd1b2e5bde00c9706fb3bb19bd30/e2c0d/plakat_2017_11.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen sitzt im Sessel mit seiner Lesebrille und liest ein Buch. Auf dem Buch ist der Neo4J-Schriftzug zu lesen und darunter der Titel 'Graf Datenbankula' als Anspielung auf Graf Drakula. Entsprechend sieht man bei Jurgen spitze Schneidezähne, wie bei einem Vampir." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/b722dd1b2e5bde00c9706fb3bb19bd30/84817/plakat_2017_11.png" srcSet="/static/b722dd1b2e5bde00c9706fb3bb19bd30/0e3b9/plakat_2017_11.png 750w,/static/b722dd1b2e5bde00c9706fb3bb19bd30/e5839/plakat_2017_11.png 1080w,/static/b722dd1b2e5bde00c9706fb3bb19bd30/006ba/plakat_2017_11.png 1366w,/static/b722dd1b2e5bde00c9706fb3bb19bd30/84817/plakat_2017_11.png 1920w" alt="Poster: Jürgen sitzt im Sessel mit seiner Lesebrille und liest ein Buch. Auf dem Buch ist der Neo4J-Schriftzug zu lesen und darunter der Titel 'Graf Datenbankula' als Anspielung auf Graf Drakula. Entsprechend sieht man bei Jurgen spitze Schneidezähne, wie bei einem Vampir."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="754076b2-57c3-5796-89f2-711200e78c58"><a href="/talks/2017-10-25-serverless/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.45234493192135%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#389858;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/2d68f12104a5e2d317ff8ac24a6467cc/fa5c8/plakat_2017_10.webp 661w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/2d68f12104a5e2d317ff8ac24a6467cc/b2ce9/plakat_2017_10.png" data-srcset="/static/2d68f12104a5e2d317ff8ac24a6467cc/b2ce9/plakat_2017_10.png 661w" alt="Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand."/></picture><noscript><picture><source type="image/webp" srcSet="/static/2d68f12104a5e2d317ff8ac24a6467cc/fa5c8/plakat_2017_10.webp 661w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/2d68f12104a5e2d317ff8ac24a6467cc/b2ce9/plakat_2017_10.png" srcSet="/static/2d68f12104a5e2d317ff8ac24a6467cc/b2ce9/plakat_2017_10.png 661w" alt="Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="6b8717ce-a995-58f6-82e5-62fb5ef3cca9"><a href="/talks/2017-05-31-react/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.19791666666669%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#58c8d8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/55786/plakat_2017_05.webp 750w,/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/8631a/plakat_2017_05.webp 1080w,/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/9b1f9/plakat_2017_05.webp 1366w,/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/fc882/plakat_2017_05.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält einen Kasten in der Hand, welcher oben und unten Trichter-Öffnungen besitzt. In den oberen Trichter gibt er zwei Dokumente hinein, während beim unteren Trichter das Bild einer Webseite herausfällt. Auf der Box ist das Logo von React zu sehen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/a2ae3/plakat_2017_05.png" data-srcset="/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/f1722/plakat_2017_05.png 750w,/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/3e58d/plakat_2017_05.png 1080w,/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/8b6fa/plakat_2017_05.png 1366w,/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/a2ae3/plakat_2017_05.png 1920w" alt="Poster: Jürgen hält einen Kasten in der Hand, welcher oben und unten Trichter-Öffnungen besitzt. In den oberen Trichter gibt er zwei Dokumente hinein, während beim unteren Trichter das Bild einer Webseite herausfällt. Auf der Box ist das Logo von React zu sehen."/></picture><noscript><picture><source type="image/webp" srcSet="/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/55786/plakat_2017_05.webp 750w,/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/8631a/plakat_2017_05.webp 1080w,/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/9b1f9/plakat_2017_05.webp 1366w,/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/fc882/plakat_2017_05.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält einen Kasten in der Hand, welcher oben und unten Trichter-Öffnungen besitzt. In den oberen Trichter gibt er zwei Dokumente hinein, während beim unteren Trichter das Bild einer Webseite herausfällt. Auf der Box ist das Logo von React zu sehen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/a2ae3/plakat_2017_05.png" srcSet="/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/f1722/plakat_2017_05.png 750w,/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/3e58d/plakat_2017_05.png 1080w,/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/8b6fa/plakat_2017_05.png 1366w,/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/a2ae3/plakat_2017_05.png 1920w" alt="Poster: Jürgen hält einen Kasten in der Hand, welcher oben und unten Trichter-Öffnungen besitzt. In den oberen Trichter gibt er zwei Dokumente hinein, während beim unteren Trichter das Bild einer Webseite herausfällt. Auf der Box ist das Logo von React zu sehen."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="2573407c-9387-55d4-81ac-f02dffdbfe14"><a href="/talks/2017-04-26-jdk9/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#38a838;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/68885bd1bc71b7c02926be143e289b72/ebc34/plakat_2017_04.webp 750w,/static/68885bd1bc71b7c02926be143e289b72/0671f/plakat_2017_04.webp 1080w,/static/68885bd1bc71b7c02926be143e289b72/659f9/plakat_2017_04.webp 1366w,/static/68885bd1bc71b7c02926be143e289b72/e2c0d/plakat_2017_04.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen sitzt am Tisch vor einem Puzzle. Er überlegt, wo er das nächste Puzzle-Teil einsetzen soll. Man erkennt bereits, dass das Puzzle ein Java-Duke darstellt, das Maskottchen von Java." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/68885bd1bc71b7c02926be143e289b72/84817/plakat_2017_04.png" data-srcset="/static/68885bd1bc71b7c02926be143e289b72/0e3b9/plakat_2017_04.png 750w,/static/68885bd1bc71b7c02926be143e289b72/e5839/plakat_2017_04.png 1080w,/static/68885bd1bc71b7c02926be143e289b72/006ba/plakat_2017_04.png 1366w,/static/68885bd1bc71b7c02926be143e289b72/84817/plakat_2017_04.png 1920w" alt="Poster: Jürgen sitzt am Tisch vor einem Puzzle. Er überlegt, wo er das nächste Puzzle-Teil einsetzen soll. Man erkennt bereits, dass das Puzzle ein Java-Duke darstellt, das Maskottchen von Java."/></picture><noscript><picture><source type="image/webp" srcSet="/static/68885bd1bc71b7c02926be143e289b72/ebc34/plakat_2017_04.webp 750w,/static/68885bd1bc71b7c02926be143e289b72/0671f/plakat_2017_04.webp 1080w,/static/68885bd1bc71b7c02926be143e289b72/659f9/plakat_2017_04.webp 1366w,/static/68885bd1bc71b7c02926be143e289b72/e2c0d/plakat_2017_04.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen sitzt am Tisch vor einem Puzzle. Er überlegt, wo er das nächste Puzzle-Teil einsetzen soll. Man erkennt bereits, dass das Puzzle ein Java-Duke darstellt, das Maskottchen von Java." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/68885bd1bc71b7c02926be143e289b72/84817/plakat_2017_04.png" srcSet="/static/68885bd1bc71b7c02926be143e289b72/0e3b9/plakat_2017_04.png 750w,/static/68885bd1bc71b7c02926be143e289b72/e5839/plakat_2017_04.png 1080w,/static/68885bd1bc71b7c02926be143e289b72/006ba/plakat_2017_04.png 1366w,/static/68885bd1bc71b7c02926be143e289b72/84817/plakat_2017_04.png 1920w" alt="Poster: Jürgen sitzt am Tisch vor einem Puzzle. Er überlegt, wo er das nächste Puzzle-Teil einsetzen soll. Man erkennt bereits, dass das Puzzle ein Java-Duke darstellt, das Maskottchen von Java."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="eddd4dc5-4156-509b-bf5c-e09b0c5c330e"><a href="/talks/2017-03-22-angular/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#084858;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/402904640aadf345c0f4e136c31ec42a/ebc34/plakat_2017_03.webp 750w,/static/402904640aadf345c0f4e136c31ec42a/0671f/plakat_2017_03.webp 1080w,/static/402904640aadf345c0f4e136c31ec42a/659f9/plakat_2017_03.webp 1366w,/static/402904640aadf345c0f4e136c31ec42a/e2c0d/plakat_2017_03.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen schaut ernst. Er trägt ein Schwert in der Hand und ein Schild mit dem einem großen A darauf. Das Schild ist eine Referenz auf das Angular-Logo, welches ebenfalls wie ein Schild aussieht." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/402904640aadf345c0f4e136c31ec42a/84817/plakat_2017_03.png" data-srcset="/static/402904640aadf345c0f4e136c31ec42a/0e3b9/plakat_2017_03.png 750w,/static/402904640aadf345c0f4e136c31ec42a/e5839/plakat_2017_03.png 1080w,/static/402904640aadf345c0f4e136c31ec42a/006ba/plakat_2017_03.png 1366w,/static/402904640aadf345c0f4e136c31ec42a/84817/plakat_2017_03.png 1920w" alt="Poster: Jürgen schaut ernst. Er trägt ein Schwert in der Hand und ein Schild mit dem einem großen A darauf. Das Schild ist eine Referenz auf das Angular-Logo, welches ebenfalls wie ein Schild aussieht."/></picture><noscript><picture><source type="image/webp" srcSet="/static/402904640aadf345c0f4e136c31ec42a/ebc34/plakat_2017_03.webp 750w,/static/402904640aadf345c0f4e136c31ec42a/0671f/plakat_2017_03.webp 1080w,/static/402904640aadf345c0f4e136c31ec42a/659f9/plakat_2017_03.webp 1366w,/static/402904640aadf345c0f4e136c31ec42a/e2c0d/plakat_2017_03.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen schaut ernst. Er trägt ein Schwert in der Hand und ein Schild mit dem einem großen A darauf. Das Schild ist eine Referenz auf das Angular-Logo, welches ebenfalls wie ein Schild aussieht." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/402904640aadf345c0f4e136c31ec42a/84817/plakat_2017_03.png" srcSet="/static/402904640aadf345c0f4e136c31ec42a/0e3b9/plakat_2017_03.png 750w,/static/402904640aadf345c0f4e136c31ec42a/e5839/plakat_2017_03.png 1080w,/static/402904640aadf345c0f4e136c31ec42a/006ba/plakat_2017_03.png 1366w,/static/402904640aadf345c0f4e136c31ec42a/84817/plakat_2017_03.png 1920w" alt="Poster: Jürgen schaut ernst. Er trägt ein Schwert in der Hand und ein Schild mit dem einem großen A darauf. Das Schild ist eine Referenz auf das Angular-Logo, welches ebenfalls wie ein Schild aussieht."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="f98f07d3-05f0-5b44-a8c4-f59df52e978d"><a href="/talks/2017-02-22-css/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#087868;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/17a163b60d0c34cbe1f0cc72f8380225/ebc34/plakat_2017_02.webp 750w,/static/17a163b60d0c34cbe1f0cc72f8380225/0671f/plakat_2017_02.webp 1080w,/static/17a163b60d0c34cbe1f0cc72f8380225/659f9/plakat_2017_02.webp 1366w,/static/17a163b60d0c34cbe1f0cc72f8380225/e2c0d/plakat_2017_02.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt eine Künstler-Mütze zu seinem Anzug. In der Hand hält er eine Maler-Palette und einen Pinsel." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/17a163b60d0c34cbe1f0cc72f8380225/84817/plakat_2017_02.png" data-srcset="/static/17a163b60d0c34cbe1f0cc72f8380225/0e3b9/plakat_2017_02.png 750w,/static/17a163b60d0c34cbe1f0cc72f8380225/e5839/plakat_2017_02.png 1080w,/static/17a163b60d0c34cbe1f0cc72f8380225/006ba/plakat_2017_02.png 1366w,/static/17a163b60d0c34cbe1f0cc72f8380225/84817/plakat_2017_02.png 1920w" alt="Poster: Jürgen trägt eine Künstler-Mütze zu seinem Anzug. In der Hand hält er eine Maler-Palette und einen Pinsel."/></picture><noscript><picture><source type="image/webp" srcSet="/static/17a163b60d0c34cbe1f0cc72f8380225/ebc34/plakat_2017_02.webp 750w,/static/17a163b60d0c34cbe1f0cc72f8380225/0671f/plakat_2017_02.webp 1080w,/static/17a163b60d0c34cbe1f0cc72f8380225/659f9/plakat_2017_02.webp 1366w,/static/17a163b60d0c34cbe1f0cc72f8380225/e2c0d/plakat_2017_02.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt eine Künstler-Mütze zu seinem Anzug. In der Hand hält er eine Maler-Palette und einen Pinsel." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/17a163b60d0c34cbe1f0cc72f8380225/84817/plakat_2017_02.png" srcSet="/static/17a163b60d0c34cbe1f0cc72f8380225/0e3b9/plakat_2017_02.png 750w,/static/17a163b60d0c34cbe1f0cc72f8380225/e5839/plakat_2017_02.png 1080w,/static/17a163b60d0c34cbe1f0cc72f8380225/006ba/plakat_2017_02.png 1366w,/static/17a163b60d0c34cbe1f0cc72f8380225/84817/plakat_2017_02.png 1920w" alt="Poster: Jürgen trägt eine Künstler-Mütze zu seinem Anzug. In der Hand hält er eine Maler-Palette und einen Pinsel."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="389f1a05-558e-58a8-a8f2-8f0f783fbb5f"><a href="/talks/2017-01-25-junit5/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#3868c8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/c46109cdd380f6d96989746b9b268b59/ebc34/plakat_2017_01.webp 750w,/static/c46109cdd380f6d96989746b9b268b59/0671f/plakat_2017_01.webp 1080w,/static/c46109cdd380f6d96989746b9b268b59/659f9/plakat_2017_01.webp 1366w,/static/c46109cdd380f6d96989746b9b268b59/e2c0d/plakat_2017_01.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt einen roten Bauarbeiter-Helm zu seinem Anzug. In der Hand hält er ein Klemmbrett mit dem Logo von JUnit 5 darauf" data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/c46109cdd380f6d96989746b9b268b59/84817/plakat_2017_01.png" data-srcset="/static/c46109cdd380f6d96989746b9b268b59/0e3b9/plakat_2017_01.png 750w,/static/c46109cdd380f6d96989746b9b268b59/e5839/plakat_2017_01.png 1080w,/static/c46109cdd380f6d96989746b9b268b59/006ba/plakat_2017_01.png 1366w,/static/c46109cdd380f6d96989746b9b268b59/84817/plakat_2017_01.png 1920w" alt="Poster: Jürgen trägt einen roten Bauarbeiter-Helm zu seinem Anzug. In der Hand hält er ein Klemmbrett mit dem Logo von JUnit 5 darauf"/></picture><noscript><picture><source type="image/webp" srcSet="/static/c46109cdd380f6d96989746b9b268b59/ebc34/plakat_2017_01.webp 750w,/static/c46109cdd380f6d96989746b9b268b59/0671f/plakat_2017_01.webp 1080w,/static/c46109cdd380f6d96989746b9b268b59/659f9/plakat_2017_01.webp 1366w,/static/c46109cdd380f6d96989746b9b268b59/e2c0d/plakat_2017_01.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt einen roten Bauarbeiter-Helm zu seinem Anzug. In der Hand hält er ein Klemmbrett mit dem Logo von JUnit 5 darauf" data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/c46109cdd380f6d96989746b9b268b59/84817/plakat_2017_01.png" srcSet="/static/c46109cdd380f6d96989746b9b268b59/0e3b9/plakat_2017_01.png 750w,/static/c46109cdd380f6d96989746b9b268b59/e5839/plakat_2017_01.png 1080w,/static/c46109cdd380f6d96989746b9b268b59/006ba/plakat_2017_01.png 1366w,/static/c46109cdd380f6d96989746b9b268b59/84817/plakat_2017_01.png 1920w" alt="Poster: Jürgen trägt einen roten Bauarbeiter-Helm zu seinem Anzug. In der Hand hält er ein Klemmbrett mit dem Logo von JUnit 5 darauf"/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="d5ac0466-71cb-5950-ad4c-692645dec780"><a href="/talks/2016-11-30-inside_jvm/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.40625%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#185818;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/df12c15a6674e50adc8ef8427b49c6e7/ebc34/plakat_2016_11.webp 750w,/static/df12c15a6674e50adc8ef8427b49c6e7/0671f/plakat_2016_11.webp 1080w,/static/df12c15a6674e50adc8ef8427b49c6e7/659f9/plakat_2016_11.webp 1366w,/static/df12c15a6674e50adc8ef8427b49c6e7/e2c0d/plakat_2016_11.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen grinst und trägt eine Weihnachtsmütze zu seinem üblichen Anzug. Er hält einen Teller mit Keksen vor sich." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/df12c15a6674e50adc8ef8427b49c6e7/84817/plakat_2016_11.png" data-srcset="/static/df12c15a6674e50adc8ef8427b49c6e7/0e3b9/plakat_2016_11.png 750w,/static/df12c15a6674e50adc8ef8427b49c6e7/e5839/plakat_2016_11.png 1080w,/static/df12c15a6674e50adc8ef8427b49c6e7/006ba/plakat_2016_11.png 1366w,/static/df12c15a6674e50adc8ef8427b49c6e7/84817/plakat_2016_11.png 1920w" alt="Poster: Jürgen grinst und trägt eine Weihnachtsmütze zu seinem üblichen Anzug. Er hält einen Teller mit Keksen vor sich."/></picture><noscript><picture><source type="image/webp" srcSet="/static/df12c15a6674e50adc8ef8427b49c6e7/ebc34/plakat_2016_11.webp 750w,/static/df12c15a6674e50adc8ef8427b49c6e7/0671f/plakat_2016_11.webp 1080w,/static/df12c15a6674e50adc8ef8427b49c6e7/659f9/plakat_2016_11.webp 1366w,/static/df12c15a6674e50adc8ef8427b49c6e7/e2c0d/plakat_2016_11.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen grinst und trägt eine Weihnachtsmütze zu seinem üblichen Anzug. Er hält einen Teller mit Keksen vor sich." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/df12c15a6674e50adc8ef8427b49c6e7/84817/plakat_2016_11.png" srcSet="/static/df12c15a6674e50adc8ef8427b49c6e7/0e3b9/plakat_2016_11.png 750w,/static/df12c15a6674e50adc8ef8427b49c6e7/e5839/plakat_2016_11.png 1080w,/static/df12c15a6674e50adc8ef8427b49c6e7/006ba/plakat_2016_11.png 1366w,/static/df12c15a6674e50adc8ef8427b49c6e7/84817/plakat_2016_11.png 1920w" alt="Poster: Jürgen grinst und trägt eine Weihnachtsmütze zu seinem üblichen Anzug. Er hält einen Teller mit Keksen vor sich."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="d76f475f-a8c8-5319-96d2-a1474885f516"><a href="/talks/2016-09-21-kommunikationskultur/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.45833333333334%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#788818;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/614b8174b903933ed9c7392c29039be7/ebc34/plakat_2016_09.webp 750w,/static/614b8174b903933ed9c7392c29039be7/47da9/plakat_2016_09.webp 1080w,/static/614b8174b903933ed9c7392c29039be7/659f9/plakat_2016_09.webp 1366w,/static/614b8174b903933ed9c7392c29039be7/c86cf/plakat_2016_09.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen benutzt ein uraltes Telefon mit separatem Hörer und Mikrofon. Er hält sich den kabelgebundenen Hörer ans Ohr und hält das Mikrofon vor sich in der Hand" data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/614b8174b903933ed9c7392c29039be7/b6707/plakat_2016_09.png" data-srcset="/static/614b8174b903933ed9c7392c29039be7/0e3b9/plakat_2016_09.png 750w,/static/614b8174b903933ed9c7392c29039be7/7aaf4/plakat_2016_09.png 1080w,/static/614b8174b903933ed9c7392c29039be7/006ba/plakat_2016_09.png 1366w,/static/614b8174b903933ed9c7392c29039be7/b6707/plakat_2016_09.png 1920w" alt="Poster: Jürgen benutzt ein uraltes Telefon mit separatem Hörer und Mikrofon. Er hält sich den kabelgebundenen Hörer ans Ohr und hält das Mikrofon vor sich in der Hand"/></picture><noscript><picture><source type="image/webp" srcSet="/static/614b8174b903933ed9c7392c29039be7/ebc34/plakat_2016_09.webp 750w,/static/614b8174b903933ed9c7392c29039be7/47da9/plakat_2016_09.webp 1080w,/static/614b8174b903933ed9c7392c29039be7/659f9/plakat_2016_09.webp 1366w,/static/614b8174b903933ed9c7392c29039be7/c86cf/plakat_2016_09.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen benutzt ein uraltes Telefon mit separatem Hörer und Mikrofon. Er hält sich den kabelgebundenen Hörer ans Ohr und hält das Mikrofon vor sich in der Hand" data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/614b8174b903933ed9c7392c29039be7/b6707/plakat_2016_09.png" srcSet="/static/614b8174b903933ed9c7392c29039be7/0e3b9/plakat_2016_09.png 750w,/static/614b8174b903933ed9c7392c29039be7/7aaf4/plakat_2016_09.png 1080w,/static/614b8174b903933ed9c7392c29039be7/006ba/plakat_2016_09.png 1366w,/static/614b8174b903933ed9c7392c29039be7/b6707/plakat_2016_09.png 1920w" alt="Poster: Jürgen benutzt ein uraltes Telefon mit separatem Hörer und Mikrofon. Er hält sich den kabelgebundenen Hörer ans Ohr und hält das Mikrofon vor sich in der Hand"/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="34708531-529f-5d8b-9a4f-7e69705d60db"><a href="/talks/2016-05-25-performance-analyse-inspectit/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.39784946236557%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#880818;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/db7f178be40d0c331569338538d31bac/874d1/plakat_2016_05.webp 744w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/db7f178be40d0c331569338538d31bac/5ffd7/plakat_2016_05.png" data-srcset="/static/db7f178be40d0c331569338538d31bac/5ffd7/plakat_2016_05.png 744w" alt="Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert."/></picture><noscript><picture><source type="image/webp" srcSet="/static/db7f178be40d0c331569338538d31bac/874d1/plakat_2016_05.webp 744w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/db7f178be40d0c331569338538d31bac/5ffd7/plakat_2016_05.png" srcSet="/static/db7f178be40d0c331569338538d31bac/5ffd7/plakat_2016_05.png 744w" alt="Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="5c9d56a7-72a3-5960-83a9-42dc599be063"><a href="/talks/2016-03-30-haskell_frege/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.39784946236557%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#588888;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/64acc764c3779735c4ad382e9f9c0e6e/874d1/plakat_2016_03.webp 744w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen sitzt auf einem Sessel und liest ein Buch. Er trägt eine Lese-Brille und schaut konzentriert aus. Auf dem Buch ist das Haskell-Logo, ein Lambda-Symbol, zusehen" data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/64acc764c3779735c4ad382e9f9c0e6e/5ffd7/plakat_2016_03.png" data-srcset="/static/64acc764c3779735c4ad382e9f9c0e6e/5ffd7/plakat_2016_03.png 744w" alt="Poster: Jürgen sitzt auf einem Sessel und liest ein Buch. Er trägt eine Lese-Brille und schaut konzentriert aus. Auf dem Buch ist das Haskell-Logo, ein Lambda-Symbol, zusehen"/></picture><noscript><picture><source type="image/webp" srcSet="/static/64acc764c3779735c4ad382e9f9c0e6e/874d1/plakat_2016_03.webp 744w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen sitzt auf einem Sessel und liest ein Buch. Er trägt eine Lese-Brille und schaut konzentriert aus. Auf dem Buch ist das Haskell-Logo, ein Lambda-Symbol, zusehen" data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/64acc764c3779735c4ad382e9f9c0e6e/5ffd7/plakat_2016_03.png" srcSet="/static/64acc764c3779735c4ad382e9f9c0e6e/5ffd7/plakat_2016_03.png 744w" alt="Poster: Jürgen sitzt auf einem Sessel und liest ein Buch. Er trägt eine Lese-Brille und schaut konzentriert aus. Auf dem Buch ist das Haskell-Logo, ein Lambda-Symbol, zusehen"/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div><div class="col-sm-12 col-md-6"><div style="margin:.5rem 0" id="627917ce-c50f-59e9-98d8-4897b4f220c5"><a href="/talks/2016-01-27-functional_java/"><div data-gatsby-image-wrapper="" style="border:solid 1px #aaa" class="gatsby-image-wrapper"><div aria-hidden="true" style="padding-top:141.45833333333334%"></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#d86838;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/1c76b19b6896e55dd13bb48cd2313b20/ebc34/plakat_2016_01.webp 750w,/static/1c76b19b6896e55dd13bb48cd2313b20/47da9/plakat_2016_01.webp 1080w,/static/1c76b19b6896e55dd13bb48cd2313b20/659f9/plakat_2016_01.webp 1366w,/static/1c76b19b6896e55dd13bb48cd2313b20/c86cf/plakat_2016_01.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt einen Anzug und grinst. Er hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das griechische Zeichen Lambda zu sehen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" data-src="/static/1c76b19b6896e55dd13bb48cd2313b20/b6707/plakat_2016_01.png" data-srcset="/static/1c76b19b6896e55dd13bb48cd2313b20/0e3b9/plakat_2016_01.png 750w,/static/1c76b19b6896e55dd13bb48cd2313b20/7aaf4/plakat_2016_01.png 1080w,/static/1c76b19b6896e55dd13bb48cd2313b20/006ba/plakat_2016_01.png 1366w,/static/1c76b19b6896e55dd13bb48cd2313b20/b6707/plakat_2016_01.png 1920w" alt="Poster: Jürgen trägt einen Anzug und grinst. Er hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das griechische Zeichen Lambda zu sehen."/></picture><noscript><picture><source type="image/webp" srcSet="/static/1c76b19b6896e55dd13bb48cd2313b20/ebc34/plakat_2016_01.webp 750w,/static/1c76b19b6896e55dd13bb48cd2313b20/47da9/plakat_2016_01.webp 1080w,/static/1c76b19b6896e55dd13bb48cd2313b20/659f9/plakat_2016_01.webp 1366w,/static/1c76b19b6896e55dd13bb48cd2313b20/c86cf/plakat_2016_01.webp 1920w" sizes="100vw"/><img data-gatsby-image-ssr="" title="Poster: Jürgen trägt einen Anzug und grinst. Er hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das griechische Zeichen Lambda zu sehen." data-main-image="" style="opacity:0" sizes="100vw" decoding="async" loading="lazy" src="/static/1c76b19b6896e55dd13bb48cd2313b20/b6707/plakat_2016_01.png" srcSet="/static/1c76b19b6896e55dd13bb48cd2313b20/0e3b9/plakat_2016_01.png 750w,/static/1c76b19b6896e55dd13bb48cd2313b20/7aaf4/plakat_2016_01.png 1080w,/static/1c76b19b6896e55dd13bb48cd2313b20/006ba/plakat_2016_01.png 1366w,/static/1c76b19b6896e55dd13bb48cd2313b20/b6707/plakat_2016_01.png 1920w" alt="Poster: Jürgen trägt einen Anzug und grinst. Er hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das griechische Zeichen Lambda zu sehen."/></picture></noscript><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div></div></div></div></div><div class="col-md-3"><div class="sidebar"><div><div class="row"><div class="col-12 col-sm-6 col-md-12"><img alt="Logo der JUG Görlitz" src="/static/logo-1d738a22f39c568c148bd4f6433b2ff4.png"/></div><div class="col-12 col-sm-6 col-md-12"><strong>Organisiert vom <br/><a href="https://digitale-oberlausitz.eu">Digitale Oberlausitz e.V.</a></strong><p>Wir sind Mitglied im<br/><a href="http://www.ijug.eu/">iJUG Verband</a></p><p>Links:</p><ul class="list-unstyled"><li><a href="https://ijug.social/@Juggr"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="mastodon" class="svg-inline--fa fa-mastodon " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.54 102.54 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z"></path></svg> Mastodon</a></li><li><a href="https://twitter.com/jug_gr"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="twitter" class="svg-inline--fa fa-twitter " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"></path></svg> Twitter</a></li><li><a href="https://www.facebook.com/juggr"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="facebook" class="svg-inline--fa fa-facebook " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z"></path></svg> Facebook</a></li><li><a href="https://groups.google.com/d/forum/juggr"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="envelope" class="svg-inline--fa fa-envelope " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM0 176V384c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V176L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z"></path></svg> Mailing-List</a></li><li><a href="https://github.com/juggr"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="github" class="svg-inline--fa fa-github " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path fill="currentColor" d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg> Github</a></li><li><a href="/jug-goerlitz.ics"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="calendar-days" class="svg-inline--fa fa-calendar-days " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm64 80v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm128 0v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H336zM64 400v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H208zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H336c-8.8 0-16 7.2-16 16z"></path></svg> Kalender (ICAL)</a></li><li><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="rss" class="svg-inline--fa fa-rss " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM128 416c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z"></path></svg> Feeds:<ul><li><a href="/atom.xml">Atom</a></li><li><a href="/rss.xml">RSS</a></li><li><a href="/feed.json">JSON</a></li></ul></li></ul></div></div></div><br/><div class="banner"><a href="https://www.javaland.eu/"><img alt="Banner für JavaLand 2024" src="/static/javaland_2024_banner-5b59695001cca42ff6a67f0eae6c1923.jpg"/></a></div></div></div></div></div><footer class="container footer"><p><a href="/impressum/">Impressum</a> | <a href="/datenschutz/">Datenschutz</a></p></footer></div><div id="gatsby-announcer" style="position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0" aria-live="assertive" aria-atomic="true"></div></div><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/posters/";/*]]>*/</script><!-- slice-start id="_gatsby-scripts-1" --> <script id="gatsby-chunk-mapping" > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/posts/2013-10-30-poster/index.html b/posts/2013-10-30-poster/index.html index 7081b30ba..74f39289c 100644 --- a/posts/2013-10-30-poster/index.html +++ b/posts/2013-10-30-poster/index.html @@ -357,4 +357,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/posts/2017-07-21-grillen/index.html b/posts/2017-07-21-grillen/index.html index 5f677fb90..bef5ac43a 100644 --- a/posts/2017-07-21-grillen/index.html +++ b/posts/2017-07-21-grillen/index.html @@ -383,4 +383,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/posts/2018-07-31-grillabend/index.html b/posts/2018-07-31-grillabend/index.html index 12af03e6a..94b36dc0b 100644 --- a/posts/2018-07-31-grillabend/index.html +++ b/posts/2018-07-31-grillabend/index.html @@ -370,4 +370,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/posts/2018-09-26-coding-dojo/index.html b/posts/2018-09-26-coding-dojo/index.html index 846c3de6e..37ae002e7 100644 --- a/posts/2018-09-26-coding-dojo/index.html +++ b/posts/2018-09-26-coding-dojo/index.html @@ -364,4 +364,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/posts/2018-12-30-congress-everywhere/index.html b/posts/2018-12-30-congress-everywhere/index.html index 1d7f91c46..2c2ec4a41 100644 --- a/posts/2018-12-30-congress-everywhere/index.html +++ b/posts/2018-12-30-congress-everywhere/index.html @@ -394,4 +394,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/posts/2019-08-16-grillen/index.html b/posts/2019-08-16-grillen/index.html index c5550bf3d..31bfdd81f 100644 --- a/posts/2019-08-16-grillen/index.html +++ b/posts/2019-08-16-grillen/index.html @@ -359,4 +359,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/posts/2020-03-24-corona/index.html b/posts/2020-03-24-corona/index.html index 33188769e..89ce4864c 100644 --- a/posts/2020-03-24-corona/index.html +++ b/posts/2020-03-24-corona/index.html @@ -360,4 +360,4 @@ <h1>Vorerst keine Vorträge mehr</h1> > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/posts/2022-01-07-javaland/index.html b/posts/2022-01-07-javaland/index.html index aed63d878..9d4ea1b8c 100644 --- a/posts/2022-01-07-javaland/index.html +++ b/posts/2022-01-07-javaland/index.html @@ -365,4 +365,4 @@ <h1>JavaLand 2022</h1> > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/posts/2023-12-01-javaland/index.html b/posts/2023-12-01-javaland/index.html index 2dd19ef6e..92fc8ed6a 100644 --- a/posts/2023-12-01-javaland/index.html +++ b/posts/2023-12-01-javaland/index.html @@ -368,4 +368,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; </script> - <script>window.___webpackCompilationHash="5218552558063b6af278";</script><script src="/webpack-runtime-1f11bbd8a4b7fb8210ba.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file + <script>window.___webpackCompilationHash="f007bae2c253f92e6865";</script><script src="/webpack-runtime-7f239a41868929d8404e.js" async></script><script src="/framework-1ac93cd8000c4311fb77.js" async></script><script src="/app-545491b94328c8e7ee02.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html> \ No newline at end of file diff --git a/rss.xml b/rss.xml index 1f3d59b44..048e99b8b 100644 --- a/rss.xml +++ b/rss.xml @@ -4,7 +4,7 @@ <title>null https://jug-gr.de/ null - Thu, 11 Jan 2024 07:34:42 GMT + Tue, 16 Jan 2024 22:41:22 GMT https://validator.w3.org/feed/docs/rss2.html https://github.com/jpmonette/feed de diff --git a/speakers/alexander_casall/index.html b/speakers/alexander_casall/index.html index f98e5c093..93005ac55 100644 --- a/speakers/alexander_casall/index.html +++ b/speakers/alexander_casall/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/andre_tepper/index.html b/speakers/andre_tepper/index.html index 2bc1f1423..6564290f0 100644 --- a/speakers/andre_tepper/index.html +++ b/speakers/andre_tepper/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/bruno_devic/index.html b/speakers/bruno_devic/index.html index fba984cc0..20ca08726 100644 --- a/speakers/bruno_devic/index.html +++ b/speakers/bruno_devic/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/christian_kuemmel/index.html b/speakers/christian_kuemmel/index.html index 3b8448d58..ab022310c 100644 --- a/speakers/christian_kuemmel/index.html +++ b/speakers/christian_kuemmel/index.html @@ -354,4 +354,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/christoph_menzel/index.html b/speakers/christoph_menzel/index.html index f7fde89cc..c34880fd9 100644 --- a/speakers/christoph_menzel/index.html +++ b/speakers/christoph_menzel/index.html @@ -351,4 +351,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/damian_dudziec/index.html b/speakers/damian_dudziec/index.html index f90f2ca62..19ad28c92 100644 --- a/speakers/damian_dudziec/index.html +++ b/speakers/damian_dudziec/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/daniel_fesenmeyer/index.html b/speakers/daniel_fesenmeyer/index.html index 8196fe285..34ce62fb1 100644 --- a/speakers/daniel_fesenmeyer/index.html +++ b/speakers/daniel_fesenmeyer/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/daniel_sernow/index.html b/speakers/daniel_sernow/index.html index 3fd538a8f..6e9113a5d 100644 --- a/speakers/daniel_sernow/index.html +++ b/speakers/daniel_sernow/index.html @@ -357,4 +357,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/daniel_sulyok/index.html b/speakers/daniel_sulyok/index.html index 9c913e211..740d17d04 100644 --- a/speakers/daniel_sulyok/index.html +++ b/speakers/daniel_sulyok/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/denny_israel/index.html b/speakers/denny_israel/index.html index 28701a61e..fb9b82e7d 100644 --- a/speakers/denny_israel/index.html +++ b/speakers/denny_israel/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/erik_jaehne/index.html b/speakers/erik_jaehne/index.html index f453289ca..4905330c0 100644 --- a/speakers/erik_jaehne/index.html +++ b/speakers/erik_jaehne/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/gerrit_grunwald/index.html b/speakers/gerrit_grunwald/index.html index bc9fe9b5f..1fa4b1ec7 100644 --- a/speakers/gerrit_grunwald/index.html +++ b/speakers/gerrit_grunwald/index.html @@ -355,4 +355,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/gregor_trefs/index.html b/speakers/gregor_trefs/index.html index 443ee1586..c17f9c763 100644 --- a/speakers/gregor_trefs/index.html +++ b/speakers/gregor_trefs/index.html @@ -351,4 +351,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/hannes_kretschmer/index.html b/speakers/hannes_kretschmer/index.html index 992630cf2..ce180d883 100644 --- a/speakers/hannes_kretschmer/index.html +++ b/speakers/hannes_kretschmer/index.html @@ -351,4 +351,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/hans_markwart/index.html b/speakers/hans_markwart/index.html index 9c599a5b0..45d386798 100644 --- a/speakers/hans_markwart/index.html +++ b/speakers/hans_markwart/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/hendrik_ebbers/index.html b/speakers/hendrik_ebbers/index.html index e7b6b3d8a..17eb331d4 100644 --- a/speakers/hendrik_ebbers/index.html +++ b/speakers/hendrik_ebbers/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/index.html b/speakers/index.html index bf934f5b0..7dcbea3c5 100644 --- a/speakers/index.html +++ b/speakers/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/ingo_koerner/index.html b/speakers/ingo_koerner/index.html index 1ff0ded91..de789a68f 100644 --- a/speakers/ingo_koerner/index.html +++ b/speakers/ingo_koerner/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/jens_leuschner/index.html b/speakers/jens_leuschner/index.html index 61688a9e4..2c034b905 100644 --- a/speakers/jens_leuschner/index.html +++ b/speakers/jens_leuschner/index.html @@ -353,4 +353,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/kay_grebenstein/index.html b/speakers/kay_grebenstein/index.html index 6ab447c78..7db67f207 100644 --- a/speakers/kay_grebenstein/index.html +++ b/speakers/kay_grebenstein/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/konstantin_eger/index.html b/speakers/konstantin_eger/index.html index f6561843d..502cbff5b 100644 --- a/speakers/konstantin_eger/index.html +++ b/speakers/konstantin_eger/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/lars_roewekamp/index.html b/speakers/lars_roewekamp/index.html index 55b59aecf..24d1f3ad8 100644 --- a/speakers/lars_roewekamp/index.html +++ b/speakers/lars_roewekamp/index.html @@ -356,4 +356,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/maik_wagner/index.html b/speakers/maik_wagner/index.html index bb008a518..d8928442c 100644 --- a/speakers/maik_wagner/index.html +++ b/speakers/maik_wagner/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/manuel_mauky/index.html b/speakers/manuel_mauky/index.html index b9686df03..26cf93280 100644 --- a/speakers/manuel_mauky/index.html +++ b/speakers/manuel_mauky/index.html @@ -353,4 +353,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/marco_gotthans/index.html b/speakers/marco_gotthans/index.html index 13c7a1a31..0764a9796 100644 --- a/speakers/marco_gotthans/index.html +++ b/speakers/marco_gotthans/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/marcus_doering/index.html b/speakers/marcus_doering/index.html index 150be1230..c9c25230a 100644 --- a/speakers/marcus_doering/index.html +++ b/speakers/marcus_doering/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/mario_mann/index.html b/speakers/mario_mann/index.html index 7845e293e..72906f5f3 100644 --- a/speakers/mario_mann/index.html +++ b/speakers/mario_mann/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/mario_reichel/index.html b/speakers/mario_reichel/index.html index c9e68b439..b04c08e80 100644 --- a/speakers/mario_reichel/index.html +++ b/speakers/mario_reichel/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/mariusz_zienkiewicz/index.html b/speakers/mariusz_zienkiewicz/index.html index 197780577..d82338266 100644 --- a/speakers/mariusz_zienkiewicz/index.html +++ b/speakers/mariusz_zienkiewicz/index.html @@ -353,4 +353,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/mark_ziener/index.html b/speakers/mark_ziener/index.html index 257f8c769..e25d19fc4 100644 --- a/speakers/mark_ziener/index.html +++ b/speakers/mark_ziener/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/marko_modsching/index.html b/speakers/marko_modsching/index.html index 2f6ecfc30..24cbd906f 100644 --- a/speakers/marko_modsching/index.html +++ b/speakers/marko_modsching/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/markus_kett/index.html b/speakers/markus_kett/index.html index d8539dba7..6b6a49b04 100644 --- a/speakers/markus_kett/index.html +++ b/speakers/markus_kett/index.html @@ -354,4 +354,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/markus_weiland/index.html b/speakers/markus_weiland/index.html index ab84ab276..38c40c0c9 100644 --- a/speakers/markus_weiland/index.html +++ b/speakers/markus_weiland/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/marlene_knoche/index.html b/speakers/marlene_knoche/index.html index a1beef41f..76b81d66c 100644 --- a/speakers/marlene_knoche/index.html +++ b/speakers/marlene_knoche/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/max_wielsch/index.html b/speakers/max_wielsch/index.html index b3f60ec4a..bd0419755 100644 --- a/speakers/max_wielsch/index.html +++ b/speakers/max_wielsch/index.html @@ -355,4 +355,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/michael_foerster/index.html b/speakers/michael_foerster/index.html index cc54625a6..fed220dee 100644 --- a/speakers/michael_foerster/index.html +++ b/speakers/michael_foerster/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/michael_hunger/index.html b/speakers/michael_hunger/index.html index 07e61c582..e25f389c7 100644 --- a/speakers/michael_hunger/index.html +++ b/speakers/michael_hunger/index.html @@ -355,4 +355,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/michael_thiele/index.html b/speakers/michael_thiele/index.html index d51b629f4..d4fa9f72d 100644 --- a/speakers/michael_thiele/index.html +++ b/speakers/michael_thiele/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/michael_wiedeking/index.html b/speakers/michael_wiedeking/index.html index 9e0f6a98d..25bf60540 100644 --- a/speakers/michael_wiedeking/index.html +++ b/speakers/michael_wiedeking/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/nico_foerster/index.html b/speakers/nico_foerster/index.html index 14d98dda2..79c56183b 100644 --- a/speakers/nico_foerster/index.html +++ b/speakers/nico_foerster/index.html @@ -353,4 +353,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/oliver_drotbohm/index.html b/speakers/oliver_drotbohm/index.html index f1baf33e4..1c46b5a06 100644 --- a/speakers/oliver_drotbohm/index.html +++ b/speakers/oliver_drotbohm/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/patryk_lewandowski/index.html b/speakers/patryk_lewandowski/index.html index 437fe5974..5393e9d56 100644 --- a/speakers/patryk_lewandowski/index.html +++ b/speakers/patryk_lewandowski/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/paul_weinhold/index.html b/speakers/paul_weinhold/index.html index 4e12e85e4..216bf0cf9 100644 --- a/speakers/paul_weinhold/index.html +++ b/speakers/paul_weinhold/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/pawel_adaszewski/index.html b/speakers/pawel_adaszewski/index.html index 41be914da..f1b6a60a1 100644 --- a/speakers/pawel_adaszewski/index.html +++ b/speakers/pawel_adaszewski/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/richard_hauswald/index.html b/speakers/richard_hauswald/index.html index 8b9551e69..11dc0bdbb 100644 --- a/speakers/richard_hauswald/index.html +++ b/speakers/richard_hauswald/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/robert_wirbs/index.html b/speakers/robert_wirbs/index.html index 0afcb6910..98121d9a7 100644 --- a/speakers/robert_wirbs/index.html +++ b/speakers/robert_wirbs/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/roland_weisleder/index.html b/speakers/roland_weisleder/index.html index f71415e0c..3b05a38f9 100644 --- a/speakers/roland_weisleder/index.html +++ b/speakers/roland_weisleder/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/sebastian_schmeck/index.html b/speakers/sebastian_schmeck/index.html index aa6aad066..b5a875dd7 100644 --- a/speakers/sebastian_schmeck/index.html +++ b/speakers/sebastian_schmeck/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/sergej_tihonov/index.html b/speakers/sergej_tihonov/index.html index 7d7541ea7..23239bbaa 100644 --- a/speakers/sergej_tihonov/index.html +++ b/speakers/sergej_tihonov/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/simon_roloff/index.html b/speakers/simon_roloff/index.html index 0e329a1b6..29e2d67c1 100644 --- a/speakers/simon_roloff/index.html +++ b/speakers/simon_roloff/index.html @@ -353,4 +353,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/stefan_barth/index.html b/speakers/stefan_barth/index.html index 89a4a3d0c..016a242e3 100644 --- a/speakers/stefan_barth/index.html +++ b/speakers/stefan_barth/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/stefan_bley/index.html b/speakers/stefan_bley/index.html index 8e557f7e8..11be5c4ca 100644 --- a/speakers/stefan_bley/index.html +++ b/speakers/stefan_bley/index.html @@ -353,4 +353,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/stefan_bradl/index.html b/speakers/stefan_bradl/index.html index 7d7a4de04..01dd65139 100644 --- a/speakers/stefan_bradl/index.html +++ b/speakers/stefan_bradl/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/stefan_heinze/index.html b/speakers/stefan_heinze/index.html index 467f61f9a..bb38266b1 100644 --- a/speakers/stefan_heinze/index.html +++ b/speakers/stefan_heinze/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/stefan_scheumann/index.html b/speakers/stefan_scheumann/index.html index 1c2a38c06..26caeb989 100644 --- a/speakers/stefan_scheumann/index.html +++ b/speakers/stefan_scheumann/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/stefan_zoerner/index.html b/speakers/stefan_zoerner/index.html index aa9fb98cd..fe3259290 100644 --- a/speakers/stefan_zoerner/index.html +++ b/speakers/stefan_zoerner/index.html @@ -354,4 +354,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/stefan_zoerner_2/index.html b/speakers/stefan_zoerner_2/index.html index 9eb7a85de..d2d753a4a 100644 --- a/speakers/stefan_zoerner_2/index.html +++ b/speakers/stefan_zoerner_2/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/steffen_seidler/index.html b/speakers/steffen_seidler/index.html index e5ddeb1a3..7934bad51 100644 --- a/speakers/steffen_seidler/index.html +++ b/speakers/steffen_seidler/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/stephan_strehler/index.html b/speakers/stephan_strehler/index.html index d8b2e79bb..1c9414c6e 100644 --- a/speakers/stephan_strehler/index.html +++ b/speakers/stephan_strehler/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/sven_hoffmann/index.html b/speakers/sven_hoffmann/index.html index f5ed59af7..fe81f0375 100644 --- a/speakers/sven_hoffmann/index.html +++ b/speakers/sven_hoffmann/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/thilo_frotscher/index.html b/speakers/thilo_frotscher/index.html index 8b4a7d366..d99bf5960 100644 --- a/speakers/thilo_frotscher/index.html +++ b/speakers/thilo_frotscher/index.html @@ -353,4 +353,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/thomas_storch/index.html b/speakers/thomas_storch/index.html index 4d5cda441..ec8e77088 100644 --- a/speakers/thomas_storch/index.html +++ b/speakers/thomas_storch/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/tobias_blaschke/index.html b/speakers/tobias_blaschke/index.html index eb930e1dd..d79b7cf94 100644 --- a/speakers/tobias_blaschke/index.html +++ b/speakers/tobias_blaschke/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/uwe_manteuffel/index.html b/speakers/uwe_manteuffel/index.html index f93cd3bb1..d72415955 100644 --- a/speakers/uwe_manteuffel/index.html +++ b/speakers/uwe_manteuffel/index.html @@ -354,4 +354,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/wolfgang_weigend/index.html b/speakers/wolfgang_weigend/index.html index 607f88519..aef8a7e60 100644 --- a/speakers/wolfgang_weigend/index.html +++ b/speakers/wolfgang_weigend/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/static/1d7a6f48e70fdbaa09372642cdcfc472/0671f/plakat_2024_01.webp b/static/1d7a6f48e70fdbaa09372642cdcfc472/0671f/plakat_2024_01.webp new file mode 100644 index 000000000..f685c9a85 Binary files /dev/null and b/static/1d7a6f48e70fdbaa09372642cdcfc472/0671f/plakat_2024_01.webp differ diff --git a/static/1d7a6f48e70fdbaa09372642cdcfc472/7e884/plakat_2024_01.webp b/static/1d7a6f48e70fdbaa09372642cdcfc472/7e884/plakat_2024_01.webp new file mode 100644 index 000000000..077e9e2b5 Binary files /dev/null and b/static/1d7a6f48e70fdbaa09372642cdcfc472/7e884/plakat_2024_01.webp differ diff --git a/static/1d7a6f48e70fdbaa09372642cdcfc472/84817/plakat_2024_01.png b/static/1d7a6f48e70fdbaa09372642cdcfc472/84817/plakat_2024_01.png new file mode 100644 index 000000000..ece1a7bb6 Binary files /dev/null and b/static/1d7a6f48e70fdbaa09372642cdcfc472/84817/plakat_2024_01.png differ diff --git a/static/1d7a6f48e70fdbaa09372642cdcfc472/b8e70/plakat_2024_01.png b/static/1d7a6f48e70fdbaa09372642cdcfc472/b8e70/plakat_2024_01.png new file mode 100644 index 000000000..9488ba9d7 Binary files /dev/null and b/static/1d7a6f48e70fdbaa09372642cdcfc472/b8e70/plakat_2024_01.png differ diff --git a/static/1d7a6f48e70fdbaa09372642cdcfc472/e2c0d/plakat_2024_01.webp b/static/1d7a6f48e70fdbaa09372642cdcfc472/e2c0d/plakat_2024_01.webp new file mode 100644 index 000000000..74a1e7502 Binary files /dev/null and b/static/1d7a6f48e70fdbaa09372642cdcfc472/e2c0d/plakat_2024_01.webp differ diff --git a/static/1d7a6f48e70fdbaa09372642cdcfc472/e5839/plakat_2024_01.png b/static/1d7a6f48e70fdbaa09372642cdcfc472/e5839/plakat_2024_01.png new file mode 100644 index 000000000..595f53e10 Binary files /dev/null and b/static/1d7a6f48e70fdbaa09372642cdcfc472/e5839/plakat_2024_01.png differ diff --git a/static/1d7a6f48e70fdbaa09372642cdcfc472/e5d6f/plakat_2024_01.webp b/static/1d7a6f48e70fdbaa09372642cdcfc472/e5d6f/plakat_2024_01.webp new file mode 100644 index 000000000..5cf72ad4d Binary files /dev/null and b/static/1d7a6f48e70fdbaa09372642cdcfc472/e5d6f/plakat_2024_01.webp differ diff --git a/static/1d7a6f48e70fdbaa09372642cdcfc472/f51d5/plakat_2024_01.png b/static/1d7a6f48e70fdbaa09372642cdcfc472/f51d5/plakat_2024_01.png new file mode 100644 index 000000000..6c76e0bfd Binary files /dev/null and b/static/1d7a6f48e70fdbaa09372642cdcfc472/f51d5/plakat_2024_01.png differ diff --git a/static/plakat_2024_01-d8038a51178d407567b13e90a08e13db.png b/static/plakat_2024_01-d8038a51178d407567b13e90a08e13db.png new file mode 100644 index 000000000..c5eb97429 Binary files /dev/null and b/static/plakat_2024_01-d8038a51178d407567b13e90a08e13db.png differ diff --git a/tags/index.html b/tags/index.html index f96c8a3da..0245d5c6e 100644 --- a/tags/index.html +++ b/tags/index.html @@ -344,10 +344,10 @@ overflow: visible; position: static; width: auto; } -

Tags

a11y android architektur build-management cloud cluster database devops dsl frontend functional-programming git graalvm hardware industrie4.0 infrastructure integration iot java javaee javafx javascript jdk jsf junit jvm ki mobile monitoring non-jvm-language patterns performance platform programmiersprachen roboter security serverless softwareentwicklung spring testen web xml

a11y

android

architektur

build-management

cloud

cluster

database

devops

dsl

frontend

functional-programming

git

graalvm

hardware

industrie4.0

infrastructure

integration

iot

java

javaee

javafx

javascript

jdk

jsf

junit

jvm

  • Inside JVM |

    von Michael Wiedeking

ki

mobile

monitoring

non-jvm-language

patterns

performance

platform

programmiersprachen

roboter

security

serverless

softwareentwicklung

spring

testen

web

xml

  • JDOM |

    von Mark Ziener

+

Tags

a11y android architektur build-management cloud cluster database devops dsl frontend functional-programming git graalvm hardware industrie4.0 infrastructure integration iot java javaee javafx javascript jdk jsf junit jvm ki mobile monitoring non-jvm-language patterns performance platform programmiersprachen roboter security serverless softwareentwicklung spring testen web xml

a11y

android

architektur

build-management

cloud

cluster

database

devops

dsl

frontend

functional-programming

git

graalvm

hardware

industrie4.0

infrastructure

integration

iot

java

javaee

javafx

javascript

jdk

jsf

junit

jvm

  • Inside JVM |

    von Michael Wiedeking

ki

mobile

monitoring

non-jvm-language

patterns

performance

platform

programmiersprachen

roboter

security

serverless

softwareentwicklung

spring

testen

web

xml

  • JDOM |

    von Mark Ziener

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2011-03-22-easymock/index.html b/talks/2011-03-22-easymock/index.html index 68698e5c9..2bcdcd0da 100644 --- a/talks/2011-03-22-easymock/index.html +++ b/talks/2011-03-22-easymock/index.html @@ -351,4 +351,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2011-03-22-jenkins/index.html b/talks/2011-03-22-jenkins/index.html index cee1f7695..a2e24fb19 100644 --- a/talks/2011-03-22-jenkins/index.html +++ b/talks/2011-03-22-jenkins/index.html @@ -355,4 +355,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2011-04-27-gwt/index.html b/talks/2011-04-27-gwt/index.html index a67bab970..0c88f4ebb 100644 --- a/talks/2011-04-27-gwt/index.html +++ b/talks/2011-04-27-gwt/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2011-04-27-osgi_springdm/index.html b/talks/2011-04-27-osgi_springdm/index.html index 6427b53aa..f7dd1227e 100644 --- a/talks/2011-04-27-osgi_springdm/index.html +++ b/talks/2011-04-27-osgi_springdm/index.html @@ -363,4 +363,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2011-05-27-guice/index.html b/talks/2011-05-27-guice/index.html index 8a98347d4..adaea2732 100644 --- a/talks/2011-05-27-guice/index.html +++ b/talks/2011-05-27-guice/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2011-06-29-javaee_jboss/index.html b/talks/2011-06-29-javaee_jboss/index.html index 62bf52a47..400d13883 100644 --- a/talks/2011-06-29-javaee_jboss/index.html +++ b/talks/2011-06-29-javaee_jboss/index.html @@ -351,4 +351,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2011-07-27-scala/index.html b/talks/2011-07-27-scala/index.html index 4b35452de..dd22c8786 100644 --- a/talks/2011-07-27-scala/index.html +++ b/talks/2011-07-27-scala/index.html @@ -355,4 +355,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2011-07-27-testng/index.html b/talks/2011-07-27-testng/index.html index 1cfbfc075..f27e48f70 100644 --- a/talks/2011-07-27-testng/index.html +++ b/talks/2011-07-27-testng/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2011-08-31-testen/index.html b/talks/2011-08-31-testen/index.html index 0321a07d7..5db363628 100644 --- a/talks/2011-08-31-testen/index.html +++ b/talks/2011-08-31-testen/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2011-09-28-jdom/index.html b/talks/2011-09-28-jdom/index.html index 85b7953a8..de01fc8b7 100644 --- a/talks/2011-09-28-jdom/index.html +++ b/talks/2011-09-28-jdom/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2011-09-28-single-sign-on/index.html b/talks/2011-09-28-single-sign-on/index.html index c1a1dc5ba..72a415057 100644 --- a/talks/2011-09-28-single-sign-on/index.html +++ b/talks/2011-09-28-single-sign-on/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2011-10-26-android/index.html b/talks/2011-10-26-android/index.html index a523ccd86..405adb1d7 100644 --- a/talks/2011-10-26-android/index.html +++ b/talks/2011-10-26-android/index.html @@ -361,4 +361,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2011-11-30-jsf-cdi/index.html b/talks/2011-11-30-jsf-cdi/index.html index 5f9638fdb..a2d3badd6 100644 --- a/talks/2011-11-30-jsf-cdi/index.html +++ b/talks/2011-11-30-jsf-cdi/index.html @@ -370,4 +370,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2012-01-01-hibernate/index.html b/talks/2012-01-01-hibernate/index.html index 82548723e..95f146f6d 100644 --- a/talks/2012-01-01-hibernate/index.html +++ b/talks/2012-01-01-hibernate/index.html @@ -355,4 +355,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2012-01-25-jsf_cdi_advanced/index.html b/talks/2012-01-25-jsf_cdi_advanced/index.html index 8ed8ace65..b77d845fc 100644 --- a/talks/2012-01-25-jsf_cdi_advanced/index.html +++ b/talks/2012-01-25-jsf_cdi_advanced/index.html @@ -364,4 +364,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2012-02-29-scala_webapps/index.html b/talks/2012-02-29-scala_webapps/index.html index d0588501e..2a7ce4233 100644 --- a/talks/2012-02-29-scala_webapps/index.html +++ b/talks/2012-02-29-scala_webapps/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2012-03-28-webtests/index.html b/talks/2012-03-28-webtests/index.html index c261db47f..aac92e4f6 100644 --- a/talks/2012-03-28-webtests/index.html +++ b/talks/2012-03-28-webtests/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2012-04-25-maven/index.html b/talks/2012-04-25-maven/index.html index e67e615d0..3f289964e 100644 --- a/talks/2012-04-25-maven/index.html +++ b/talks/2012-04-25-maven/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2012-05-30-jmonkey-engine3/index.html b/talks/2012-05-30-jmonkey-engine3/index.html index 45e85ff8c..6409d6a85 100644 --- a/talks/2012-05-30-jmonkey-engine3/index.html +++ b/talks/2012-05-30-jmonkey-engine3/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2012-06-27-gridgain/index.html b/talks/2012-06-27-gridgain/index.html index 4e089795a..95039e64b 100644 --- a/talks/2012-06-27-gridgain/index.html +++ b/talks/2012-06-27-gridgain/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2012-07-25-selenium_praxis/index.html b/talks/2012-07-25-selenium_praxis/index.html index 938dbab6a..7cbda15ed 100644 --- a/talks/2012-07-25-selenium_praxis/index.html +++ b/talks/2012-07-25-selenium_praxis/index.html @@ -353,4 +353,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2012-09-26-bean_validation/index.html b/talks/2012-09-26-bean_validation/index.html index 1364abc82..bb4ba1b60 100644 --- a/talks/2012-09-26-bean_validation/index.html +++ b/talks/2012-09-26-bean_validation/index.html @@ -365,4 +365,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2012-11-28-javafx2/index.html b/talks/2012-11-28-javafx2/index.html index 3f034988b..6210dc9a1 100644 --- a/talks/2012-11-28-javafx2/index.html +++ b/talks/2012-11-28-javafx2/index.html @@ -358,4 +358,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2013-03-27-nxt_lego/index.html b/talks/2013-03-27-nxt_lego/index.html index 90c144934..f39b24229 100644 --- a/talks/2013-03-27-nxt_lego/index.html +++ b/talks/2013-03-27-nxt_lego/index.html @@ -359,4 +359,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2013-05-29-jruby/index.html b/talks/2013-05-29-jruby/index.html index e5d257ff0..d20c759f3 100644 --- a/talks/2013-05-29-jruby/index.html +++ b/talks/2013-05-29-jruby/index.html @@ -358,4 +358,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2013-07-31-persona/index.html b/talks/2013-07-31-persona/index.html index 83baf987a..c502bde70 100644 --- a/talks/2013-07-31-persona/index.html +++ b/talks/2013-07-31-persona/index.html @@ -358,4 +358,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2013-10-30-app-design/index.html b/talks/2013-10-30-app-design/index.html index ce807278f..b28c58025 100644 --- a/talks/2013-10-30-app-design/index.html +++ b/talks/2013-10-30-app-design/index.html @@ -360,4 +360,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2013-11-27-web-performance/index.html b/talks/2013-11-27-web-performance/index.html index 746613eef..62fd065ec 100644 --- a/talks/2013-11-27-web-performance/index.html +++ b/talks/2013-11-27-web-performance/index.html @@ -355,4 +355,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2014-01-29-opendip/index.html b/talks/2014-01-29-opendip/index.html index 257687203..d368cf6df 100644 --- a/talks/2014-01-29-opendip/index.html +++ b/talks/2014-01-29-opendip/index.html @@ -366,4 +366,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2014-04-02-assertj/index.html b/talks/2014-04-02-assertj/index.html index f20eb4561..4f615fe5d 100644 --- a/talks/2014-04-02-assertj/index.html +++ b/talks/2014-04-02-assertj/index.html @@ -368,4 +368,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2014-05-28-hazelcast/index.html b/talks/2014-05-28-hazelcast/index.html index b1e27df3d..bde420e7d 100644 --- a/talks/2014-05-28-hazelcast/index.html +++ b/talks/2014-05-28-hazelcast/index.html @@ -355,4 +355,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2014-07-30-java8-streams/index.html b/talks/2014-07-30-java8-streams/index.html index 9709eb3ff..eae133820 100644 --- a/talks/2014-07-30-java8-streams/index.html +++ b/talks/2014-07-30-java8-streams/index.html @@ -361,4 +361,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2014-09-24-solr/index.html b/talks/2014-09-24-solr/index.html index 9a2a62c20..eb068d9cc 100644 --- a/talks/2014-09-24-solr/index.html +++ b/talks/2014-09-24-solr/index.html @@ -360,4 +360,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2014-10-29-infrastructure_as_code/index.html b/talks/2014-10-29-infrastructure_as_code/index.html index e4bf9da9c..1c7ddeb86 100644 --- a/talks/2014-10-29-infrastructure_as_code/index.html +++ b/talks/2014-10-29-infrastructure_as_code/index.html @@ -364,4 +364,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2014-12-03-model-view-star/index.html b/talks/2014-12-03-model-view-star/index.html index 1a1fc6471..9641c6bdb 100644 --- a/talks/2014-12-03-model-view-star/index.html +++ b/talks/2014-12-03-model-view-star/index.html @@ -369,4 +369,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2015-01-28-moskito/index.html b/talks/2015-01-28-moskito/index.html index 820f5974e..faba6583e 100644 --- a/talks/2015-01-28-moskito/index.html +++ b/talks/2015-01-28-moskito/index.html @@ -360,4 +360,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2015-03-25-android/index.html b/talks/2015-03-25-android/index.html index e2ed69d0a..e2ca0e49d 100644 --- a/talks/2015-03-25-android/index.html +++ b/talks/2015-03-25-android/index.html @@ -368,4 +368,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2015-05-27-advanced-android/index.html b/talks/2015-05-27-advanced-android/index.html index 8d4fad27f..d202da78e 100644 --- a/talks/2015-05-27-advanced-android/index.html +++ b/talks/2015-05-27-advanced-android/index.html @@ -365,4 +365,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2015-07-29-drools/index.html b/talks/2015-07-29-drools/index.html index bee056682..9d2e96d35 100644 --- a/talks/2015-07-29-drools/index.html +++ b/talks/2015-07-29-drools/index.html @@ -359,4 +359,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2015-09-30-guava/index.html b/talks/2015-09-30-guava/index.html index 7ee3ec6f4..96f093338 100644 --- a/talks/2015-09-30-guava/index.html +++ b/talks/2015-09-30-guava/index.html @@ -366,4 +366,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2015-11-25-javafx-mobile/index.html b/talks/2015-11-25-javafx-mobile/index.html index d5dd92744..08a4341e2 100644 --- a/talks/2015-11-25-javafx-mobile/index.html +++ b/talks/2015-11-25-javafx-mobile/index.html @@ -365,4 +365,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2016-01-27-functional_java/index.html b/talks/2016-01-27-functional_java/index.html index 4a343b860..c06c4a9c8 100644 --- a/talks/2016-01-27-functional_java/index.html +++ b/talks/2016-01-27-functional_java/index.html @@ -381,4 +381,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2016-03-30-haskell_frege/index.html b/talks/2016-03-30-haskell_frege/index.html index b24bbc0f8..e465ca9ff 100644 --- a/talks/2016-03-30-haskell_frege/index.html +++ b/talks/2016-03-30-haskell_frege/index.html @@ -361,4 +361,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2016-05-25-performance-analyse-inspectit/index.html b/talks/2016-05-25-performance-analyse-inspectit/index.html index cc436bc1c..5753bb5cd 100644 --- a/talks/2016-05-25-performance-analyse-inspectit/index.html +++ b/talks/2016-05-25-performance-analyse-inspectit/index.html @@ -363,4 +363,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2016-07-27-testwerkzeuge_javafx/index.html b/talks/2016-07-27-testwerkzeuge_javafx/index.html index 06b482d98..0f137763c 100644 --- a/talks/2016-07-27-testwerkzeuge_javafx/index.html +++ b/talks/2016-07-27-testwerkzeuge_javafx/index.html @@ -361,4 +361,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2016-09-21-kommunikationskultur/index.html b/talks/2016-09-21-kommunikationskultur/index.html index 2ada1ca42..8ee6883b1 100644 --- a/talks/2016-09-21-kommunikationskultur/index.html +++ b/talks/2016-09-21-kommunikationskultur/index.html @@ -360,4 +360,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2016-11-30-inside_jvm/index.html b/talks/2016-11-30-inside_jvm/index.html index 10e1f17c1..ceb0f3e29 100644 --- a/talks/2016-11-30-inside_jvm/index.html +++ b/talks/2016-11-30-inside_jvm/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2017-01-25-junit5/index.html b/talks/2017-01-25-junit5/index.html index a90478ea0..7733512be 100644 --- a/talks/2017-01-25-junit5/index.html +++ b/talks/2017-01-25-junit5/index.html @@ -360,4 +360,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2017-02-22-css/index.html b/talks/2017-02-22-css/index.html index 856031a9d..a793c0feb 100644 --- a/talks/2017-02-22-css/index.html +++ b/talks/2017-02-22-css/index.html @@ -358,4 +358,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2017-03-22-angular/index.html b/talks/2017-03-22-angular/index.html index b78fea71e..b1c6100e4 100644 --- a/talks/2017-03-22-angular/index.html +++ b/talks/2017-03-22-angular/index.html @@ -363,4 +363,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2017-04-26-jdk9/index.html b/talks/2017-04-26-jdk9/index.html index 28eca1e8a..b22d07f24 100644 --- a/talks/2017-04-26-jdk9/index.html +++ b/talks/2017-04-26-jdk9/index.html @@ -368,4 +368,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2017-05-31-react/index.html b/talks/2017-05-31-react/index.html index aa13a1085..834e8f3be 100644 --- a/talks/2017-05-31-react/index.html +++ b/talks/2017-05-31-react/index.html @@ -362,4 +362,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2017-08-30-alexa/index.html b/talks/2017-08-30-alexa/index.html index 3b15fa9a3..052056e73 100644 --- a/talks/2017-08-30-alexa/index.html +++ b/talks/2017-08-30-alexa/index.html @@ -355,4 +355,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2017-10-25-serverless/index.html b/talks/2017-10-25-serverless/index.html index e100116f2..879b22e2b 100644 --- a/talks/2017-10-25-serverless/index.html +++ b/talks/2017-10-25-serverless/index.html @@ -368,4 +368,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2017-11-29-neo4j/index.html b/talks/2017-11-29-neo4j/index.html index 5d3e8b159..5c81d2336 100644 --- a/talks/2017-11-29-neo4j/index.html +++ b/talks/2017-11-29-neo4j/index.html @@ -359,4 +359,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2018-01-31-system_of_systems/index.html b/talks/2018-01-31-system_of_systems/index.html index e2f7653a0..b9eb0f044 100644 --- a/talks/2018-01-31-system_of_systems/index.html +++ b/talks/2018-01-31-system_of_systems/index.html @@ -362,4 +362,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2018-02-28-java_auf_sap_cloud/index.html b/talks/2018-02-28-java_auf_sap_cloud/index.html index 60235e10a..f6dd78856 100644 --- a/talks/2018-02-28-java_auf_sap_cloud/index.html +++ b/talks/2018-02-28-java_auf_sap_cloud/index.html @@ -365,4 +365,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2018-03-20-mikro_vs_makroarchitektur/index.html b/talks/2018-03-20-mikro_vs_makroarchitektur/index.html index bbee467ca..1c0c894b7 100644 --- a/talks/2018-03-20-mikro_vs_makroarchitektur/index.html +++ b/talks/2018-03-20-mikro_vs_makroarchitektur/index.html @@ -360,4 +360,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2018-04-25-kotlin/index.html b/talks/2018-04-25-kotlin/index.html index 3597327f3..0f2336468 100644 --- a/talks/2018-04-25-kotlin/index.html +++ b/talks/2018-04-25-kotlin/index.html @@ -361,4 +361,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2018-05-30-graphql/index.html b/talks/2018-05-30-graphql/index.html index 502685922..f73efb0a3 100644 --- a/talks/2018-05-30-graphql/index.html +++ b/talks/2018-05-30-graphql/index.html @@ -362,4 +362,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2018-06-27-immutable-data/index.html b/talks/2018-06-27-immutable-data/index.html index 46dc0044c..13b39cfb0 100644 --- a/talks/2018-06-27-immutable-data/index.html +++ b/talks/2018-06-27-immutable-data/index.html @@ -367,4 +367,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2018-11-23-monadische_transaktionen/index.html b/talks/2018-11-23-monadische_transaktionen/index.html index 2f5d59181..db622dcbd 100644 --- a/talks/2018-11-23-monadische_transaktionen/index.html +++ b/talks/2018-11-23-monadische_transaktionen/index.html @@ -360,4 +360,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2019-01-31_java_apis_missing_manual/index.html b/talks/2019-01-31_java_apis_missing_manual/index.html index fc5f94bc1..aa683b725 100644 --- a/talks/2019-01-31_java_apis_missing_manual/index.html +++ b/talks/2019-01-31_java_apis_missing_manual/index.html @@ -358,4 +358,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2019-02-27_reflection/index.html b/talks/2019-02-27_reflection/index.html index 4585dc0c6..ac656ebdc 100644 --- a/talks/2019-02-27_reflection/index.html +++ b/talks/2019-02-27_reflection/index.html @@ -359,4 +359,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2019-03-27-static-site-generators/index.html b/talks/2019-03-27-static-site-generators/index.html index 952f01a17..be72f16c9 100644 --- a/talks/2019-03-27-static-site-generators/index.html +++ b/talks/2019-03-27-static-site-generators/index.html @@ -369,4 +369,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2019-04-24_jdk_jungle/index.html b/talks/2019-04-24_jdk_jungle/index.html index 8714538d7..163a413a8 100644 --- a/talks/2019-04-24_jdk_jungle/index.html +++ b/talks/2019-04-24_jdk_jungle/index.html @@ -365,4 +365,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2019-05-29-oauth/index.html b/talks/2019-05-29-oauth/index.html index 39e15c944..b58042bc6 100644 --- a/talks/2019-05-29-oauth/index.html +++ b/talks/2019-05-29-oauth/index.html @@ -354,4 +354,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2019-06-26-collection-framework/index.html b/talks/2019-06-26-collection-framework/index.html index 014728ef0..80b135d3e 100644 --- a/talks/2019-06-26-collection-framework/index.html +++ b/talks/2019-06-26-collection-framework/index.html @@ -362,4 +362,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2019-11-28-advanced-bdd-tests/index.html b/talks/2019-11-28-advanced-bdd-tests/index.html index 97d26e98d..ae4d83db3 100644 --- a/talks/2019-11-28-advanced-bdd-tests/index.html +++ b/talks/2019-11-28-advanced-bdd-tests/index.html @@ -353,4 +353,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2020-01-27-cloud-foundry/index.html b/talks/2020-01-27-cloud-foundry/index.html index 87bb9f6c2..f64dc9e7d 100644 --- a/talks/2020-01-27-cloud-foundry/index.html +++ b/talks/2020-01-27-cloud-foundry/index.html @@ -355,4 +355,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2020-04-29-jdk14_graalvm/index.html b/talks/2020-04-29-jdk14_graalvm/index.html index b0b7b227c..f4acb964e 100644 --- a/talks/2020-04-29-jdk14_graalvm/index.html +++ b/talks/2020-04-29-jdk14_graalvm/index.html @@ -371,4 +371,4 @@

Hinweis

> window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2020-07-22-branching_modelle/index.html b/talks/2020-07-22-branching_modelle/index.html index 8da477f3c..0813f4b2e 100644 --- a/talks/2020-07-22-branching_modelle/index.html +++ b/talks/2020-07-22-branching_modelle/index.html @@ -365,4 +365,4 @@

Hinweis

> window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2020-11-25-secure_coding/index.html b/talks/2020-11-25-secure_coding/index.html index a1871f809..8416df209 100644 --- a/talks/2020-11-25-secure_coding/index.html +++ b/talks/2020-11-25-secure_coding/index.html @@ -362,4 +362,4 @@

Hinweis

> window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2021-01-27-webcomponents/index.html b/talks/2021-01-27-webcomponents/index.html index 87b3f074b..b35a84e84 100644 --- a/talks/2021-01-27-webcomponents/index.html +++ b/talks/2021-01-27-webcomponents/index.html @@ -361,4 +361,4 @@

Hinweis

> window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2021-06-30-microstream/index.html b/talks/2021-06-30-microstream/index.html index f4544d49d..12f6764bf 100644 --- a/talks/2021-06-30-microstream/index.html +++ b/talks/2021-06-30-microstream/index.html @@ -381,4 +381,4 @@

Hinweis

> window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2022-06-22-iot-infrastruktur-serverless/index.html b/talks/2022-06-22-iot-infrastruktur-serverless/index.html index 281f90508..31cc2228d 100644 --- a/talks/2022-06-22-iot-infrastruktur-serverless/index.html +++ b/talks/2022-06-22-iot-infrastruktur-serverless/index.html @@ -360,4 +360,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2022-10-12-indistrie_4.0/index.html b/talks/2022-10-12-indistrie_4.0/index.html index 896311740..f67d15569 100644 --- a/talks/2022-10-12-indistrie_4.0/index.html +++ b/talks/2022-10-12-indistrie_4.0/index.html @@ -388,4 +388,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2022-11-30-iam-keycloak/index.html b/talks/2022-11-30-iam-keycloak/index.html index 6754bf76b..87c9754f4 100644 --- a/talks/2022-11-30-iam-keycloak/index.html +++ b/talks/2022-11-30-iam-keycloak/index.html @@ -356,4 +356,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2023-01-25-contentlab/index.html b/talks/2023-01-25-contentlab/index.html index 712a49b35..83daf8aa3 100644 --- a/talks/2023-01-25-contentlab/index.html +++ b/talks/2023-01-25-contentlab/index.html @@ -351,4 +351,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2023-02-22-exception_first/index.html b/talks/2023-02-22-exception_first/index.html index f3a42980c..c5c37b68a 100644 --- a/talks/2023-02-22-exception_first/index.html +++ b/talks/2023-02-22-exception_first/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2023-03-29-spring_fuer_architekturinteressierte_entwickler_innen/index.html b/talks/2023-03-29-spring_fuer_architekturinteressierte_entwickler_innen/index.html index 511ab6e2c..d6f5bd3db 100644 --- a/talks/2023-03-29-spring_fuer_architekturinteressierte_entwickler_innen/index.html +++ b/talks/2023-03-29-spring_fuer_architekturinteressierte_entwickler_innen/index.html @@ -364,4 +364,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2023-04-26-archunit_unit_tests_java_architektur/index.html b/talks/2023-04-26-archunit_unit_tests_java_architektur/index.html index aefc36b61..a76064b7b 100644 --- a/talks/2023-04-26-archunit_unit_tests_java_architektur/index.html +++ b/talks/2023-04-26-archunit_unit_tests_java_architektur/index.html @@ -351,4 +351,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2023-05-31-accessibility_in_the_wild/index.html b/talks/2023-05-31-accessibility_in_the_wild/index.html index 922ded386..25d6398b1 100644 --- a/talks/2023-05-31-accessibility_in_the_wild/index.html +++ b/talks/2023-05-31-accessibility_in_the_wild/index.html @@ -354,4 +354,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2023-06-28-graalvm_23/index.html b/talks/2023-06-28-graalvm_23/index.html index 4c9484bc8..3d89c452a 100644 --- a/talks/2023-06-28-graalvm_23/index.html +++ b/talks/2023-06-28-graalvm_23/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2023-09-27-virtual-threads/index.html b/talks/2023-09-27-virtual-threads/index.html index 02d17fa10..ebed6803f 100644 --- a/talks/2023-09-27-virtual-threads/index.html +++ b/talks/2023-09-27-virtual-threads/index.html @@ -356,4 +356,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2023-10-25-aws_cdk_in_action/index.html b/talks/2023-10-25-aws_cdk_in_action/index.html index 06fd0bee9..983b21b47 100644 --- a/talks/2023-10-25-aws_cdk_in_action/index.html +++ b/talks/2023-10-25-aws_cdk_in_action/index.html @@ -356,4 +356,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2023-11-29-crac/index.html b/talks/2023-11-29-crac/index.html index 458add414..ff126baf8 100644 --- a/talks/2023-11-29-crac/index.html +++ b/talks/2023-11-29-crac/index.html @@ -370,4 +370,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2024-01-31-flutter/index.html b/talks/2024-01-31-flutter/index.html index 53cdb09ea..743a0673b 100644 --- a/talks/2024-01-31-flutter/index.html +++ b/talks/2024-01-31-flutter/index.html @@ -347,11 +347,11 @@

Flutter, der heilige Gral der Cross-Plattform-Entwicklung?!

von Christoph Menzel | 31. Januar 2024

mobile, frontend, non-jvm-language

Wenn sich Google einem Thema widmet, dann meist richtig und mit vollem Einsatz. Genau das sieht man beim Thema Cross-Plattform: Google entwickelte Flutter, ein UI Framework, mit dem Native Apps für Mobile, Web, Desktop und Embedded mit einer einzigen Codebase in sehr kurzer Zeit entwickelt werden können. Was Flutter so einzigartig macht und warum wir es bei inovex bereits produktiv für Apps einsetzen, zeige ich dir in diesem Talk. Anhand verschiedener Beispiele und Live-Codings siehst du, warum uns Flutter so überzeugt hat. Damit sind wir nicht alleine - Toyota verwendet Flutter bereits für ihre neuen Infotainment Systems und viele weitere namhafte Firmen wie Microsoft, Canonical und BMW setzen ebenfalls auf das Framework. -Lass dich in Flutters Welt der Cross-Plattform entführen und davon begeistern!


Christoph Menzel ist Software-Entwickler mit Leib und Seele und seit 2022 als Head of Mobile & Web Development Teil des inovex Teams. Clean Code und Testautomatisierung sind für ihn zwei fundamentale Bestandteile guter Software-Entwicklung. +Lass dich in Flutters Welt der Cross-Plattform entführen und davon begeistern!

Poster: Jürgen trägt einen Hut und eine Umhängetasche und hat eine Peitsche in der linken Hand. In der rechten Hand hat er einen Gral mit Flügeln, den er begeistert ansieht.

Christoph Menzel ist Software-Entwickler mit Leib und Seele und seit 2022 als Head of Mobile & Web Development Teil des inovex Teams. Clean Code und Testautomatisierung sind für ihn zwei fundamentale Bestandteile guter Software-Entwicklung. Er unterstützt seine Kunden bei der Optimierung von Entwicklungsprozessen, hält Workshops zu Themen wie Unit Tests, Clean Code oder Continuous Integration & Delivery und gibt sein Wissen aktiv auf Konferenzen, Barcamps oder in Fachartikeln weiter.



Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.
Die Java User Group Görlitz ist ein Projekt des Digitale Oberlausitz e.V.

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2024-02-28-architektur-reviews/index.html b/talks/2024-02-28-architektur-reviews/index.html index e41712e56..8522fe513 100644 --- a/talks/2024-02-28-architektur-reviews/index.html +++ b/talks/2024-02-28-architektur-reviews/index.html @@ -351,4 +351,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2024-03-20-rust/index.html b/talks/2024-03-20-rust/index.html index 64746a3bc..ae1265b18 100644 --- a/talks/2024-03-20-rust/index.html +++ b/talks/2024-03-20-rust/index.html @@ -365,4 +365,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2024-04-24-rust2/index.html b/talks/2024-04-24-rust2/index.html index c7d1588f4..da897fc95 100644 --- a/talks/2024-04-24-rust2/index.html +++ b/talks/2024-04-24-rust2/index.html @@ -355,4 +355,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/index.html b/talks/index.html index 6371139e7..3e2e290aa 100644 --- a/talks/index.html +++ b/talks/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/unterstuetzer/index.html b/unterstuetzer/index.html index b3e077b77..4cbfc2292 100644 --- a/unterstuetzer/index.html +++ b/unterstuetzer/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-545491b94328c8e7ee02.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-de6815ace04d21511f1e.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/webpack-runtime-1f11bbd8a4b7fb8210ba.js b/webpack-runtime-7f239a41868929d8404e.js similarity index 79% rename from webpack-runtime-1f11bbd8a4b7fb8210ba.js rename to webpack-runtime-7f239a41868929d8404e.js index 923c8dfe8..4f5355f36 100644 --- a/webpack-runtime-1f11bbd8a4b7fb8210ba.js +++ b/webpack-runtime-7f239a41868929d8404e.js @@ -1,2 +1,2 @@ -!function(){"use strict";var e,t,n,r,o,c,a,f={},i={};function u(e){var t=i[e];if(void 0!==t)return t.exports;var n=i[e]={id:e,loaded:!1,exports:{}};return f[e].call(n.exports,n,n.exports,u),n.loaded=!0,n.exports}u.m=f,e=[],u.O=function(t,n,r,o){if(!n){var c=1/0;for(s=0;s=o)&&Object.keys(u.O).every((function(e){return u.O[e](n[f])}))?n.splice(f--,1):(a=!1,o0&&e[s-1][2]>o;s--)e[s]=e[s-1];e[s]=[n,r,o]},u.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return u.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},u.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);u.r(o);var c={};t=t||[null,n({}),n([]),n(n)];for(var a=2&r&&e;"object"==typeof a&&!~t.indexOf(a);a=n(a))Object.getOwnPropertyNames(a).forEach((function(t){c[t]=function(){return e[t]}}));return c.default=function(){return e},u.d(o,c),o},u.d=function(e,t){for(var n in t)u.o(t,n)&&!u.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},u.f={},u.e=function(e){return Promise.all(Object.keys(u.f).reduce((function(t,n){return u.f[n](e,t),t}),[]))},u.u=function(e){return({176:"component---src-templates-location-page-tsx",190:"component---src-pages-tags-tsx",218:"component---src-pages-404-tsx",325:"b95451f0b310186e909e788b848f8c20c7036633",351:"commons",356:"component---src-pages-debug-redirects-tsx",386:"component---src-templates-static-page-tsx",505:"component---src-pages-talks-tsx",532:"styles",534:"083fcf652479e2899573de2cb0d9a486b1ed95d5",691:"component---src-pages-index-tsx",714:"component---src-templates-speaker-page-tsx",721:"component---src-templates-talk-page-tsx",743:"component---src-pages-posters-tsx",758:"component---src-pages-speakers-tsx",885:"75fc9c18",948:"2cca2479",969:"component---src-pages-locations-tsx",976:"c16184b3",988:"component---src-pages-unterstuetzer-tsx"}[e]||e)+"-"+{176:"66f99d488944fe4e5e5a",190:"de6815ace04d21511f1e",218:"40df00c8cace58695efb",223:"4f581054fc697d6210b1",325:"47a36eb907b3ba1da6a0",351:"f537f61ffd60a999026d",356:"95780ce6e63631f2bd11",386:"7e013f4f0cc0eabd4a50",505:"6c74cdbede6dcb5bf616",532:"35de55e925de9d5d59cb",534:"47c0f2d790faa87edb72",691:"bcc7c3f8eff56e47a167",714:"2b70a93379a65ecad731",721:"ab69b6140103e09d919e",743:"bad2ab9bb98aefe9f149",758:"c309584ed597fba12705",843:"8ca00901839f57538186",885:"f71279181183774e258e",948:"cf64efe86dbcca44f9f3",969:"2b27ecd750548e08c6e6",976:"1b49df0b1e7d5219011e",988:"6c7946d35d5deec320db"}[e]+".js"},u.miniCssF=function(e){return"styles.f0b7b84ad0e8a4f245ea.css"},u.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),u.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="jug-goerlitz:",u.l=function(e,t,n,c){if(r[e])r[e].push(t);else{var a,f;if(void 0!==n)for(var i=document.getElementsByTagName("script"),s=0;s=o)&&Object.keys(u.O).every((function(e){return u.O[e](n[i])}))?n.splice(i--,1):(a=!1,o0&&e[s-1][2]>o;s--)e[s]=e[s-1];e[s]=[n,r,o]},u.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return u.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},u.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);u.r(o);var c={};t=t||[null,n({}),n([]),n(n)];for(var a=2&r&&e;"object"==typeof a&&!~t.indexOf(a);a=n(a))Object.getOwnPropertyNames(a).forEach((function(t){c[t]=function(){return e[t]}}));return c.default=function(){return e},u.d(o,c),o},u.d=function(e,t){for(var n in t)u.o(t,n)&&!u.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},u.f={},u.e=function(e){return Promise.all(Object.keys(u.f).reduce((function(t,n){return u.f[n](e,t),t}),[]))},u.u=function(e){return({176:"component---src-templates-location-page-tsx",190:"component---src-pages-tags-tsx",218:"component---src-pages-404-tsx",325:"b95451f0b310186e909e788b848f8c20c7036633",351:"commons",356:"component---src-pages-debug-redirects-tsx",386:"component---src-templates-static-page-tsx",505:"component---src-pages-talks-tsx",532:"styles",534:"083fcf652479e2899573de2cb0d9a486b1ed95d5",691:"component---src-pages-index-tsx",714:"component---src-templates-speaker-page-tsx",721:"component---src-templates-talk-page-tsx",743:"component---src-pages-posters-tsx",758:"component---src-pages-speakers-tsx",885:"75fc9c18",948:"2cca2479",969:"component---src-pages-locations-tsx",976:"c16184b3",988:"component---src-pages-unterstuetzer-tsx"}[e]||e)+"-"+{176:"66f99d488944fe4e5e5a",190:"de6815ace04d21511f1e",218:"40df00c8cace58695efb",223:"4f581054fc697d6210b1",325:"47a36eb907b3ba1da6a0",351:"6a5a6cacbb3d8d41013b",356:"95780ce6e63631f2bd11",386:"7e013f4f0cc0eabd4a50",505:"6c74cdbede6dcb5bf616",532:"35de55e925de9d5d59cb",534:"47c0f2d790faa87edb72",691:"bcc7c3f8eff56e47a167",714:"2b70a93379a65ecad731",721:"ab69b6140103e09d919e",743:"bad2ab9bb98aefe9f149",758:"c309584ed597fba12705",843:"8ca00901839f57538186",885:"f71279181183774e258e",948:"cf64efe86dbcca44f9f3",969:"2b27ecd750548e08c6e6",976:"1b49df0b1e7d5219011e",988:"6c7946d35d5deec320db"}[e]+".js"},u.miniCssF=function(e){return"styles.f0b7b84ad0e8a4f245ea.css"},u.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),u.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="jug-goerlitz:",u.l=function(e,t,n,c){if(r[e])r[e].push(t);else{var a,i;if(void 0!==n)for(var f=document.getElementsByTagName("script"),s=0;s 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 = \"jug-goerlitz:\";\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\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\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\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\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 \"\" + ({\"176\":\"component---src-templates-location-page-tsx\",\"190\":\"component---src-pages-tags-tsx\",\"218\":\"component---src-pages-404-tsx\",\"325\":\"b95451f0b310186e909e788b848f8c20c7036633\",\"351\":\"commons\",\"356\":\"component---src-pages-debug-redirects-tsx\",\"386\":\"component---src-templates-static-page-tsx\",\"505\":\"component---src-pages-talks-tsx\",\"532\":\"styles\",\"534\":\"083fcf652479e2899573de2cb0d9a486b1ed95d5\",\"691\":\"component---src-pages-index-tsx\",\"714\":\"component---src-templates-speaker-page-tsx\",\"721\":\"component---src-templates-talk-page-tsx\",\"743\":\"component---src-pages-posters-tsx\",\"758\":\"component---src-pages-speakers-tsx\",\"885\":\"75fc9c18\",\"948\":\"2cca2479\",\"969\":\"component---src-pages-locations-tsx\",\"976\":\"c16184b3\",\"988\":\"component---src-pages-unterstuetzer-tsx\"}[chunkId] || chunkId) + \"-\" + {\"176\":\"66f99d488944fe4e5e5a\",\"190\":\"de6815ace04d21511f1e\",\"218\":\"40df00c8cace58695efb\",\"223\":\"4f581054fc697d6210b1\",\"325\":\"47a36eb907b3ba1da6a0\",\"351\":\"f537f61ffd60a999026d\",\"356\":\"95780ce6e63631f2bd11\",\"386\":\"7e013f4f0cc0eabd4a50\",\"505\":\"6c74cdbede6dcb5bf616\",\"532\":\"35de55e925de9d5d59cb\",\"534\":\"47c0f2d790faa87edb72\",\"691\":\"bcc7c3f8eff56e47a167\",\"714\":\"2b70a93379a65ecad731\",\"721\":\"ab69b6140103e09d919e\",\"743\":\"bad2ab9bb98aefe9f149\",\"758\":\"c309584ed597fba12705\",\"843\":\"8ca00901839f57538186\",\"885\":\"f71279181183774e258e\",\"948\":\"cf64efe86dbcca44f9f3\",\"969\":\"2b27ecd750548e08c6e6\",\"976\":\"1b49df0b1e7d5219011e\",\"988\":\"6c7946d35d5deec320db\"}[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\" + \".\" + \"f0b7b84ad0e8a4f245ea\" + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\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__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\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[\"webpackChunkjug_goerlitz\"] = self[\"webpackChunkjug_goerlitz\"] || [];\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","id","loaded","__webpack_modules__","call","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","g","globalThis","Function","window","prop","prototype","hasOwnProperty","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","nmd","paths","children","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","chunkLoadingGlobal","self"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"webpack-runtime-7f239a41868929d8404e.js","mappings":"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","sources":["webpack://jug-goerlitz/webpack/runtime/chunk loaded","webpack://jug-goerlitz/webpack/runtime/create fake namespace object","webpack://jug-goerlitz/webpack/runtime/load script","webpack://jug-goerlitz/webpack/runtime/css loading","webpack://jug-goerlitz/webpack/bootstrap","webpack://jug-goerlitz/webpack/runtime/compat get default export","webpack://jug-goerlitz/webpack/runtime/define property getters","webpack://jug-goerlitz/webpack/runtime/ensure chunk","webpack://jug-goerlitz/webpack/runtime/get javascript chunk filename","webpack://jug-goerlitz/webpack/runtime/get mini-css chunk filename","webpack://jug-goerlitz/webpack/runtime/global","webpack://jug-goerlitz/webpack/runtime/hasOwnProperty shorthand","webpack://jug-goerlitz/webpack/runtime/make namespace object","webpack://jug-goerlitz/webpack/runtime/node module decorator","webpack://jug-goerlitz/webpack/runtime/publicPath","webpack://jug-goerlitz/webpack/runtime/jsonp chunk loading"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 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 = \"jug-goerlitz:\";\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\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\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\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\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 \"\" + ({\"176\":\"component---src-templates-location-page-tsx\",\"190\":\"component---src-pages-tags-tsx\",\"218\":\"component---src-pages-404-tsx\",\"325\":\"b95451f0b310186e909e788b848f8c20c7036633\",\"351\":\"commons\",\"356\":\"component---src-pages-debug-redirects-tsx\",\"386\":\"component---src-templates-static-page-tsx\",\"505\":\"component---src-pages-talks-tsx\",\"532\":\"styles\",\"534\":\"083fcf652479e2899573de2cb0d9a486b1ed95d5\",\"691\":\"component---src-pages-index-tsx\",\"714\":\"component---src-templates-speaker-page-tsx\",\"721\":\"component---src-templates-talk-page-tsx\",\"743\":\"component---src-pages-posters-tsx\",\"758\":\"component---src-pages-speakers-tsx\",\"885\":\"75fc9c18\",\"948\":\"2cca2479\",\"969\":\"component---src-pages-locations-tsx\",\"976\":\"c16184b3\",\"988\":\"component---src-pages-unterstuetzer-tsx\"}[chunkId] || chunkId) + \"-\" + {\"176\":\"66f99d488944fe4e5e5a\",\"190\":\"de6815ace04d21511f1e\",\"218\":\"40df00c8cace58695efb\",\"223\":\"4f581054fc697d6210b1\",\"325\":\"47a36eb907b3ba1da6a0\",\"351\":\"6a5a6cacbb3d8d41013b\",\"356\":\"95780ce6e63631f2bd11\",\"386\":\"7e013f4f0cc0eabd4a50\",\"505\":\"6c74cdbede6dcb5bf616\",\"532\":\"35de55e925de9d5d59cb\",\"534\":\"47c0f2d790faa87edb72\",\"691\":\"bcc7c3f8eff56e47a167\",\"714\":\"2b70a93379a65ecad731\",\"721\":\"ab69b6140103e09d919e\",\"743\":\"bad2ab9bb98aefe9f149\",\"758\":\"c309584ed597fba12705\",\"843\":\"8ca00901839f57538186\",\"885\":\"f71279181183774e258e\",\"948\":\"cf64efe86dbcca44f9f3\",\"969\":\"2b27ecd750548e08c6e6\",\"976\":\"1b49df0b1e7d5219011e\",\"988\":\"6c7946d35d5deec320db\"}[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\" + \".\" + \"f0b7b84ad0e8a4f245ea\" + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\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__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\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[\"webpackChunkjug_goerlitz\"] = self[\"webpackChunkjug_goerlitz\"] || [];\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","id","loaded","__webpack_modules__","call","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","g","globalThis","Function","window","prop","prototype","hasOwnProperty","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","nmd","paths","children","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","chunkLoadingGlobal","self"],"sourceRoot":""} \ No newline at end of file diff --git a/webpack.stats.json b/webpack.stats.json index a17f075cd..1e4a06d6f 100644 --- a/webpack.stats.json +++ b/webpack.stats.json @@ -1 +1 @@ -{"name":"build-javascript","namedChunkGroups":{"app":{"name":"app","assets":[{"name":"webpack-runtime-1f11bbd8a4b7fb8210ba.js","size":6102},{"name":"framework-1ac93cd8000c4311fb77.js","size":210235},{"name":"app-545491b94328c8e7ee02.js","size":90717}],"filteredAssets":0,"assetsSize":307054,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":776538},"component---src-pages-404-tsx":{"name":"component---src-pages-404-tsx","assets":[{"name":"styles.f0b7b84ad0e8a4f245ea.css","size":147007},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-cf64efe86dbcca44f9f3.js","size":3523},{"name":"commons-f537f61ffd60a999026d.js","size":160400},{"name":"component---src-pages-404-tsx-40df00c8cace58695efb.js","size":911}],"filteredAssets":0,"assetsSize":314071,"filteredAuxiliaryAssets":117,"auxiliaryAssetsSize":72183737},"component---src-pages-debug-redirects-tsx":{"name":"component---src-pages-debug-redirects-tsx","assets":[{"name":"styles.f0b7b84ad0e8a4f245ea.css","size":147007},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-cf64efe86dbcca44f9f3.js","size":3523},{"name":"commons-f537f61ffd60a999026d.js","size":160400},{"name":"component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js","size":1153}],"filteredAssets":0,"assetsSize":314313,"filteredAuxiliaryAssets":117,"auxiliaryAssetsSize":72185222},"component---src-pages-index-tsx":{"name":"component---src-pages-index-tsx","assets":[{"name":"styles.f0b7b84ad0e8a4f245ea.css","size":147007},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-cf64efe86dbcca44f9f3.js","size":3523},{"name":"75fc9c18-f71279181183774e258e.js","size":60483},{"name":"commons-f537f61ffd60a999026d.js","size":160400},{"name":"083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","size":15944},{"name":"b95451f0b310186e909e788b848f8c20c7036633-47a36eb907b3ba1da6a0.js","size":14077},{"name":"component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js","size":1831}],"filteredAssets":0,"assetsSize":405495,"filteredAuxiliaryAssets":120,"auxiliaryAssetsSize":72638024},"component---src-pages-locations-tsx":{"name":"component---src-pages-locations-tsx","assets":[{"name":"styles.f0b7b84ad0e8a4f245ea.css","size":147007},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-cf64efe86dbcca44f9f3.js","size":3523},{"name":"commons-f537f61ffd60a999026d.js","size":160400},{"name":"083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","size":15944},{"name":"component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js","size":876}],"filteredAssets":0,"assetsSize":329980,"filteredAuxiliaryAssets":118,"auxiliaryAssetsSize":72280170},"component---src-pages-posters-tsx":{"name":"component---src-pages-posters-tsx","assets":[{"name":"styles.f0b7b84ad0e8a4f245ea.css","size":147007},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-cf64efe86dbcca44f9f3.js","size":3523},{"name":"commons-f537f61ffd60a999026d.js","size":160400},{"name":"component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js","size":10568}],"filteredAssets":0,"assetsSize":323728,"filteredAuxiliaryAssets":117,"auxiliaryAssetsSize":72251059},"component---src-pages-speakers-tsx":{"name":"component---src-pages-speakers-tsx","assets":[{"name":"styles.f0b7b84ad0e8a4f245ea.css","size":147007},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-cf64efe86dbcca44f9f3.js","size":3523},{"name":"commons-f537f61ffd60a999026d.js","size":160400},{"name":"083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","size":15944},{"name":"component---src-pages-speakers-tsx-c309584ed597fba12705.js","size":834}],"filteredAssets":0,"assetsSize":329938,"filteredAuxiliaryAssets":118,"auxiliaryAssetsSize":72279864},"component---src-pages-tags-tsx":{"name":"component---src-pages-tags-tsx","assets":[{"name":"styles.f0b7b84ad0e8a4f245ea.css","size":147007},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-cf64efe86dbcca44f9f3.js","size":3523},{"name":"75fc9c18-f71279181183774e258e.js","size":60483},{"name":"commons-f537f61ffd60a999026d.js","size":160400},{"name":"083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","size":15944},{"name":"component---src-pages-tags-tsx-de6815ace04d21511f1e.js","size":3841}],"filteredAssets":0,"assetsSize":393428,"filteredAuxiliaryAssets":119,"auxiliaryAssetsSize":72563945},"component---src-pages-talks-tsx":{"name":"component---src-pages-talks-tsx","assets":[{"name":"styles.f0b7b84ad0e8a4f245ea.css","size":147007},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-cf64efe86dbcca44f9f3.js","size":3523},{"name":"75fc9c18-f71279181183774e258e.js","size":60483},{"name":"commons-f537f61ffd60a999026d.js","size":160400},{"name":"083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","size":15944},{"name":"component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js","size":3440}],"filteredAssets":0,"assetsSize":393027,"filteredAuxiliaryAssets":119,"auxiliaryAssetsSize":72563267},"component---src-pages-unterstuetzer-tsx":{"name":"component---src-pages-unterstuetzer-tsx","assets":[{"name":"styles.f0b7b84ad0e8a4f245ea.css","size":147007},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-cf64efe86dbcca44f9f3.js","size":3523},{"name":"commons-f537f61ffd60a999026d.js","size":160400},{"name":"component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js","size":15235}],"filteredAssets":0,"assetsSize":328395,"filteredAuxiliaryAssets":117,"auxiliaryAssetsSize":72254612},"component---src-templates-location-page-tsx":{"name":"component---src-templates-location-page-tsx","assets":[{"name":"styles.f0b7b84ad0e8a4f245ea.css","size":147007},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-cf64efe86dbcca44f9f3.js","size":3523},{"name":"commons-f537f61ffd60a999026d.js","size":160400},{"name":"component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js","size":1610}],"filteredAssets":0,"assetsSize":314770,"filteredAuxiliaryAssets":117,"auxiliaryAssetsSize":72186458},"component---src-templates-speaker-page-tsx":{"name":"component---src-templates-speaker-page-tsx","assets":[{"name":"styles.f0b7b84ad0e8a4f245ea.css","size":147007},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-cf64efe86dbcca44f9f3.js","size":3523},{"name":"commons-f537f61ffd60a999026d.js","size":160400},{"name":"component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js","size":10469}],"filteredAssets":0,"assetsSize":323629,"filteredAuxiliaryAssets":117,"auxiliaryAssetsSize":72251239},"component---src-templates-static-page-tsx":{"name":"component---src-templates-static-page-tsx","assets":[{"name":"styles.f0b7b84ad0e8a4f245ea.css","size":147007},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-cf64efe86dbcca44f9f3.js","size":3523},{"name":"commons-f537f61ffd60a999026d.js","size":160400},{"name":"component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js","size":933}],"filteredAssets":0,"assetsSize":314093,"filteredAuxiliaryAssets":117,"auxiliaryAssetsSize":72184140},"component---src-templates-talk-page-tsx":{"name":"component---src-templates-talk-page-tsx","assets":[{"name":"styles.f0b7b84ad0e8a4f245ea.css","size":147007},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-cf64efe86dbcca44f9f3.js","size":3523},{"name":"75fc9c18-f71279181183774e258e.js","size":60483},{"name":"commons-f537f61ffd60a999026d.js","size":160400},{"name":"083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","size":15944},{"name":"b95451f0b310186e909e788b848f8c20c7036633-47a36eb907b3ba1da6a0.js","size":14077},{"name":"component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js","size":496}],"filteredAssets":0,"assetsSize":404160,"filteredAuxiliaryAssets":120,"auxiliaryAssetsSize":72631493}},"assetsByChunkName":{"app":["webpack-runtime-1f11bbd8a4b7fb8210ba.js","framework-1ac93cd8000c4311fb77.js","app-545491b94328c8e7ee02.js"],"component---src-pages-404-tsx":["styles.f0b7b84ad0e8a4f245ea.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-cf64efe86dbcca44f9f3.js","commons-f537f61ffd60a999026d.js","component---src-pages-404-tsx-40df00c8cace58695efb.js"],"component---src-pages-debug-redirects-tsx":["styles.f0b7b84ad0e8a4f245ea.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-cf64efe86dbcca44f9f3.js","commons-f537f61ffd60a999026d.js","component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js"],"component---src-pages-index-tsx":["styles.f0b7b84ad0e8a4f245ea.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-cf64efe86dbcca44f9f3.js","75fc9c18-f71279181183774e258e.js","commons-f537f61ffd60a999026d.js","083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","b95451f0b310186e909e788b848f8c20c7036633-47a36eb907b3ba1da6a0.js","component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js"],"component---src-pages-locations-tsx":["styles.f0b7b84ad0e8a4f245ea.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-cf64efe86dbcca44f9f3.js","commons-f537f61ffd60a999026d.js","083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js"],"component---src-pages-posters-tsx":["styles.f0b7b84ad0e8a4f245ea.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-cf64efe86dbcca44f9f3.js","commons-f537f61ffd60a999026d.js","component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js"],"component---src-pages-speakers-tsx":["styles.f0b7b84ad0e8a4f245ea.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-cf64efe86dbcca44f9f3.js","commons-f537f61ffd60a999026d.js","083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","component---src-pages-speakers-tsx-c309584ed597fba12705.js"],"component---src-pages-tags-tsx":["styles.f0b7b84ad0e8a4f245ea.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-cf64efe86dbcca44f9f3.js","75fc9c18-f71279181183774e258e.js","commons-f537f61ffd60a999026d.js","083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","component---src-pages-tags-tsx-de6815ace04d21511f1e.js"],"component---src-pages-talks-tsx":["styles.f0b7b84ad0e8a4f245ea.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-cf64efe86dbcca44f9f3.js","75fc9c18-f71279181183774e258e.js","commons-f537f61ffd60a999026d.js","083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js"],"component---src-pages-unterstuetzer-tsx":["styles.f0b7b84ad0e8a4f245ea.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-cf64efe86dbcca44f9f3.js","commons-f537f61ffd60a999026d.js","component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js"],"component---src-templates-location-page-tsx":["styles.f0b7b84ad0e8a4f245ea.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-cf64efe86dbcca44f9f3.js","commons-f537f61ffd60a999026d.js","component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js"],"component---src-templates-speaker-page-tsx":["styles.f0b7b84ad0e8a4f245ea.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-cf64efe86dbcca44f9f3.js","commons-f537f61ffd60a999026d.js","component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js"],"component---src-templates-static-page-tsx":["styles.f0b7b84ad0e8a4f245ea.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-cf64efe86dbcca44f9f3.js","commons-f537f61ffd60a999026d.js","component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js"],"component---src-templates-talk-page-tsx":["styles.f0b7b84ad0e8a4f245ea.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-cf64efe86dbcca44f9f3.js","75fc9c18-f71279181183774e258e.js","commons-f537f61ffd60a999026d.js","083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","b95451f0b310186e909e788b848f8c20c7036633-47a36eb907b3ba1da6a0.js","component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js"]},"childAssetsByChunkName":{}} \ No newline at end of file +{"name":"build-javascript","namedChunkGroups":{"app":{"name":"app","assets":[{"name":"webpack-runtime-7f239a41868929d8404e.js","size":6102},{"name":"framework-1ac93cd8000c4311fb77.js","size":210235},{"name":"app-545491b94328c8e7ee02.js","size":90717}],"filteredAssets":0,"assetsSize":307054,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":776538},"component---src-pages-404-tsx":{"name":"component---src-pages-404-tsx","assets":[{"name":"styles.f0b7b84ad0e8a4f245ea.css","size":147007},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-cf64efe86dbcca44f9f3.js","size":3523},{"name":"commons-6a5a6cacbb3d8d41013b.js","size":160553},{"name":"component---src-pages-404-tsx-40df00c8cace58695efb.js","size":911}],"filteredAssets":0,"assetsSize":314224,"filteredAuxiliaryAssets":118,"auxiliaryAssetsSize":73213785},"component---src-pages-debug-redirects-tsx":{"name":"component---src-pages-debug-redirects-tsx","assets":[{"name":"styles.f0b7b84ad0e8a4f245ea.css","size":147007},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-cf64efe86dbcca44f9f3.js","size":3523},{"name":"commons-6a5a6cacbb3d8d41013b.js","size":160553},{"name":"component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js","size":1153}],"filteredAssets":0,"assetsSize":314466,"filteredAuxiliaryAssets":118,"auxiliaryAssetsSize":73215270},"component---src-pages-index-tsx":{"name":"component---src-pages-index-tsx","assets":[{"name":"styles.f0b7b84ad0e8a4f245ea.css","size":147007},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-cf64efe86dbcca44f9f3.js","size":3523},{"name":"75fc9c18-f71279181183774e258e.js","size":60483},{"name":"commons-6a5a6cacbb3d8d41013b.js","size":160553},{"name":"083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","size":15944},{"name":"b95451f0b310186e909e788b848f8c20c7036633-47a36eb907b3ba1da6a0.js","size":14077},{"name":"component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js","size":1831}],"filteredAssets":0,"assetsSize":405648,"filteredAuxiliaryAssets":121,"auxiliaryAssetsSize":73668072},"component---src-pages-locations-tsx":{"name":"component---src-pages-locations-tsx","assets":[{"name":"styles.f0b7b84ad0e8a4f245ea.css","size":147007},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-cf64efe86dbcca44f9f3.js","size":3523},{"name":"commons-6a5a6cacbb3d8d41013b.js","size":160553},{"name":"083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","size":15944},{"name":"component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js","size":876}],"filteredAssets":0,"assetsSize":330133,"filteredAuxiliaryAssets":119,"auxiliaryAssetsSize":73310218},"component---src-pages-posters-tsx":{"name":"component---src-pages-posters-tsx","assets":[{"name":"styles.f0b7b84ad0e8a4f245ea.css","size":147007},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-cf64efe86dbcca44f9f3.js","size":3523},{"name":"commons-6a5a6cacbb3d8d41013b.js","size":160553},{"name":"component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js","size":10568}],"filteredAssets":0,"assetsSize":323881,"filteredAuxiliaryAssets":118,"auxiliaryAssetsSize":73281107},"component---src-pages-speakers-tsx":{"name":"component---src-pages-speakers-tsx","assets":[{"name":"styles.f0b7b84ad0e8a4f245ea.css","size":147007},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-cf64efe86dbcca44f9f3.js","size":3523},{"name":"commons-6a5a6cacbb3d8d41013b.js","size":160553},{"name":"083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","size":15944},{"name":"component---src-pages-speakers-tsx-c309584ed597fba12705.js","size":834}],"filteredAssets":0,"assetsSize":330091,"filteredAuxiliaryAssets":119,"auxiliaryAssetsSize":73309912},"component---src-pages-tags-tsx":{"name":"component---src-pages-tags-tsx","assets":[{"name":"styles.f0b7b84ad0e8a4f245ea.css","size":147007},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-cf64efe86dbcca44f9f3.js","size":3523},{"name":"75fc9c18-f71279181183774e258e.js","size":60483},{"name":"commons-6a5a6cacbb3d8d41013b.js","size":160553},{"name":"083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","size":15944},{"name":"component---src-pages-tags-tsx-de6815ace04d21511f1e.js","size":3841}],"filteredAssets":0,"assetsSize":393581,"filteredAuxiliaryAssets":120,"auxiliaryAssetsSize":73593993},"component---src-pages-talks-tsx":{"name":"component---src-pages-talks-tsx","assets":[{"name":"styles.f0b7b84ad0e8a4f245ea.css","size":147007},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-cf64efe86dbcca44f9f3.js","size":3523},{"name":"75fc9c18-f71279181183774e258e.js","size":60483},{"name":"commons-6a5a6cacbb3d8d41013b.js","size":160553},{"name":"083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","size":15944},{"name":"component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js","size":3440}],"filteredAssets":0,"assetsSize":393180,"filteredAuxiliaryAssets":120,"auxiliaryAssetsSize":73593315},"component---src-pages-unterstuetzer-tsx":{"name":"component---src-pages-unterstuetzer-tsx","assets":[{"name":"styles.f0b7b84ad0e8a4f245ea.css","size":147007},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-cf64efe86dbcca44f9f3.js","size":3523},{"name":"commons-6a5a6cacbb3d8d41013b.js","size":160553},{"name":"component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js","size":15235}],"filteredAssets":0,"assetsSize":328548,"filteredAuxiliaryAssets":118,"auxiliaryAssetsSize":73284660},"component---src-templates-location-page-tsx":{"name":"component---src-templates-location-page-tsx","assets":[{"name":"styles.f0b7b84ad0e8a4f245ea.css","size":147007},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-cf64efe86dbcca44f9f3.js","size":3523},{"name":"commons-6a5a6cacbb3d8d41013b.js","size":160553},{"name":"component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js","size":1610}],"filteredAssets":0,"assetsSize":314923,"filteredAuxiliaryAssets":118,"auxiliaryAssetsSize":73216506},"component---src-templates-speaker-page-tsx":{"name":"component---src-templates-speaker-page-tsx","assets":[{"name":"styles.f0b7b84ad0e8a4f245ea.css","size":147007},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-cf64efe86dbcca44f9f3.js","size":3523},{"name":"commons-6a5a6cacbb3d8d41013b.js","size":160553},{"name":"component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js","size":10469}],"filteredAssets":0,"assetsSize":323782,"filteredAuxiliaryAssets":118,"auxiliaryAssetsSize":73281287},"component---src-templates-static-page-tsx":{"name":"component---src-templates-static-page-tsx","assets":[{"name":"styles.f0b7b84ad0e8a4f245ea.css","size":147007},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-cf64efe86dbcca44f9f3.js","size":3523},{"name":"commons-6a5a6cacbb3d8d41013b.js","size":160553},{"name":"component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js","size":933}],"filteredAssets":0,"assetsSize":314246,"filteredAuxiliaryAssets":118,"auxiliaryAssetsSize":73214188},"component---src-templates-talk-page-tsx":{"name":"component---src-templates-talk-page-tsx","assets":[{"name":"styles.f0b7b84ad0e8a4f245ea.css","size":147007},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-cf64efe86dbcca44f9f3.js","size":3523},{"name":"75fc9c18-f71279181183774e258e.js","size":60483},{"name":"commons-6a5a6cacbb3d8d41013b.js","size":160553},{"name":"083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","size":15944},{"name":"b95451f0b310186e909e788b848f8c20c7036633-47a36eb907b3ba1da6a0.js","size":14077},{"name":"component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js","size":496}],"filteredAssets":0,"assetsSize":404313,"filteredAuxiliaryAssets":121,"auxiliaryAssetsSize":73661541}},"assetsByChunkName":{"app":["webpack-runtime-7f239a41868929d8404e.js","framework-1ac93cd8000c4311fb77.js","app-545491b94328c8e7ee02.js"],"component---src-pages-404-tsx":["styles.f0b7b84ad0e8a4f245ea.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-cf64efe86dbcca44f9f3.js","commons-6a5a6cacbb3d8d41013b.js","component---src-pages-404-tsx-40df00c8cace58695efb.js"],"component---src-pages-debug-redirects-tsx":["styles.f0b7b84ad0e8a4f245ea.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-cf64efe86dbcca44f9f3.js","commons-6a5a6cacbb3d8d41013b.js","component---src-pages-debug-redirects-tsx-95780ce6e63631f2bd11.js"],"component---src-pages-index-tsx":["styles.f0b7b84ad0e8a4f245ea.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-cf64efe86dbcca44f9f3.js","75fc9c18-f71279181183774e258e.js","commons-6a5a6cacbb3d8d41013b.js","083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","b95451f0b310186e909e788b848f8c20c7036633-47a36eb907b3ba1da6a0.js","component---src-pages-index-tsx-bcc7c3f8eff56e47a167.js"],"component---src-pages-locations-tsx":["styles.f0b7b84ad0e8a4f245ea.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-cf64efe86dbcca44f9f3.js","commons-6a5a6cacbb3d8d41013b.js","083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js"],"component---src-pages-posters-tsx":["styles.f0b7b84ad0e8a4f245ea.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-cf64efe86dbcca44f9f3.js","commons-6a5a6cacbb3d8d41013b.js","component---src-pages-posters-tsx-bad2ab9bb98aefe9f149.js"],"component---src-pages-speakers-tsx":["styles.f0b7b84ad0e8a4f245ea.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-cf64efe86dbcca44f9f3.js","commons-6a5a6cacbb3d8d41013b.js","083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","component---src-pages-speakers-tsx-c309584ed597fba12705.js"],"component---src-pages-tags-tsx":["styles.f0b7b84ad0e8a4f245ea.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-cf64efe86dbcca44f9f3.js","75fc9c18-f71279181183774e258e.js","commons-6a5a6cacbb3d8d41013b.js","083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","component---src-pages-tags-tsx-de6815ace04d21511f1e.js"],"component---src-pages-talks-tsx":["styles.f0b7b84ad0e8a4f245ea.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-cf64efe86dbcca44f9f3.js","75fc9c18-f71279181183774e258e.js","commons-6a5a6cacbb3d8d41013b.js","083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","component---src-pages-talks-tsx-6c74cdbede6dcb5bf616.js"],"component---src-pages-unterstuetzer-tsx":["styles.f0b7b84ad0e8a4f245ea.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-cf64efe86dbcca44f9f3.js","commons-6a5a6cacbb3d8d41013b.js","component---src-pages-unterstuetzer-tsx-6c7946d35d5deec320db.js"],"component---src-templates-location-page-tsx":["styles.f0b7b84ad0e8a4f245ea.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-cf64efe86dbcca44f9f3.js","commons-6a5a6cacbb3d8d41013b.js","component---src-templates-location-page-tsx-66f99d488944fe4e5e5a.js"],"component---src-templates-speaker-page-tsx":["styles.f0b7b84ad0e8a4f245ea.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-cf64efe86dbcca44f9f3.js","commons-6a5a6cacbb3d8d41013b.js","component---src-templates-speaker-page-tsx-2b70a93379a65ecad731.js"],"component---src-templates-static-page-tsx":["styles.f0b7b84ad0e8a4f245ea.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-cf64efe86dbcca44f9f3.js","commons-6a5a6cacbb3d8d41013b.js","component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js"],"component---src-templates-talk-page-tsx":["styles.f0b7b84ad0e8a4f245ea.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-cf64efe86dbcca44f9f3.js","75fc9c18-f71279181183774e258e.js","commons-6a5a6cacbb3d8d41013b.js","083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","b95451f0b310186e909e788b848f8c20c7036633-47a36eb907b3ba1da6a0.js","component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js"]},"childAssetsByChunkName":{}} \ No newline at end of file