1/*! For license information please see d9d38ef3ab7710d8557d95d882d1f942072172a6-640e5cda6fc7f6b3a71b.js.LICENSE.txt */ 2(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{"+Hmc":function(e,t,i){"use strict";i.d(t,"a",(function(){return f}));var n=i("BsWD");function r(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var i=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var n,r,o,s,a=[],l=!0,d=!1;try{if(o=(i=i.call(e)).next,0===t){if(Object(i)!==i)return;l=!1}else for(;!(l=(n=o.call(i)).done)&&(a.push(n.value),a.length!==t);l=!0);}catch(e){d=!0,r=e}finally{try{if(!l&&null!=i.return&&(s=i.return(),Object(s)!==s))return}finally{if(d)throw r}}return a}}(e,t)||Object(n.a)(e,t)||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.")}()}var o=i("LybE"),s=i("bv9d");var a,l,d={m:"margin",p:"padding"},u={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},c={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},p=(a=function(e){if(e.length>2){if(!c[e])return[e];e=c[e]}var t=r(e.split(""),2),i=t[0],n=t[1],o=d[i],s=u[n]||"";return Array.isArray(s)?s.map((function(e){return o+e})):[o+s]},l={},function(e){return void 0===l[e]&&(l[e]=a(e)),l[e]}),m=["m","mt","mr","mb","ml","mx","my","p","pt","pr","pb","pl","px","py","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY"];function f(e){var t=e.spacing||8;return"number"==typeof t?function(e){return t*e}:Array.isArray(t)?function(e){return t[e]}:"function"==typeof t?t:function(){}}function h(e,t){return function(i){return e.reduce((function(e,n){return e[n]=function(e,t){if("string"==typeof t||null==t)return t;var i=e(Math.abs(t));return t>=0?i:"number"==typeof i?-i:"-".concat(i)}(t,i),e}),{})}}function v(e){var t=f(e.theme);return Object.keys(e).map((function(i){if(-1===m.indexOf(i))return null;var n=h(p(i),t),r=e[i];return Object(o.a)(e,r,n)})).reduce(s.a,{})}v.propTypes={},v.filterProps=m;t.b=v},"+n12":function(e,t,i){"use strict";function n(e){return void 0!==e.date&&new Date<=new Date(e.date)}function r(e){let t;try{t=i("w2BD")(`./${e.family}.png`)}catch(n){console.log("cannot find icon for "+e.family),t=i("fy6g")}return t}i.d(t,"b",(function(){return n})),i.d(t,"a",(function(){return r}))},"0Ur2":function(e,t){e.exports={id:"oauth-made-easy",creationDate:"2021-09-10",defaultLanguage:"english",languages:{english:{defaultEvent:"devoxxbe2022",title:"OAUTH 2.1 explained simply (even if you are not a developer) !",description:["It is very difficult today to deploy an application on the web without dealing with OAuth2.Designed to better protect users, this authorization delegation protocol has become a standard in the industry.","However, haven't you cried trying to understand the concepts of OAuth2? Let's be honest, this is quite easy to get lost between the different roles and the multitude of flows of this protocol.And its complexity has discouraged more than one! However we can't deliver without it, so we try to setup some OAuth flow and usually... this is really painful.","But don't worry, whether you have a tech profile or not, this talk will help you to finally understand the intricacies of OAuth simply, including the new version 2.1, using analogies from everyday life!"]},french:{defaultEvent:"devoxxfr2022",title:"OAuth 2.1 expliqué simplement (même si tu n'es pas dev) !",description:["Il est très difficile aujourd'hui de déployer une application sur le web sans se frotter à OAuth2. Conçu pour mieux protéger les utilisateurs et utilisatrices, ce standard de délégation d'autorisation s'est totalement imposé dans l'industrie.","Cependant, n'avez-vous pas pleuré en essayant de comprendre les concepts de OAuth2 ? On ne va pas se mentir, entre les différents rôles et la multitude de flows qui le constituent, il y a vraiment de quoi se perdre et sa complexité en décourage plus d'un ! Et pourtant, on ne peut pas s'en passer, donc on y va et généralement c'est douloureuxâ¦","Mais ne vous inquiétez pas, que vous ayez un profil tech ou non, ce talk va vous permettre d'enfin comprendre les méandres de OAuth simplement, dont la nouvelle version 2.1, en s'appuyant sur des analogies de la vie courante !"]}},events:[{id:"summercamp2021",date:"2021-09-10",slides:"https://slides.com/julientopcu/concepts-avances-authn-authz",video:"https://www.youtube.com/embed/oUz60SCrk9k"},{id:"tadx122021",date:"2021-12-14",video:"https://www.youtube.com/embed/TsosQ1HnLd0"},{id:"devcon12",date:"2021-12-16",video:"https://www.youtube.com/embed/EZbjWNR7gyk"},{id:"tnt22",date:"2022-01-21",slides:"https://slides.com/julientopcu/concepts-avances-authn-authz",video:"https://www.youtube.com/embed/bR48_dbOM38"},{id:"devoxxfr2022",date:"2022-04-21",slides:"https://slides.com/julientopcu/concepts-avances-authn-authz",video:"https://www.youtube.com/embed/YdShQveywpo"},{id:"breizhcamp2022",date:"2022-06-29",video:"https://www.youtube.com/embed/QrGu7ITlSog"},{id:"devoxxbe2022",date:"2022-10-14",slides:"https://slides.com/julientopcu/oauth-21-explained-simply-even-if-you-are-not-a-developer",language:"english",video:"https://www.youtube.com/embed/4ZzRCHFBpPM"},{id:"bbl-allianz112022",date:"2022-11-25"},{id:"devopsdday2022",date:"2022-12-01",video:"https://www.youtube.com/embed/i1xdsXP97HI"},{id:"devoxxpl2023",date:"2023-06-02",video:"https://www.youtube.com/embed/3av-wBE8qtQ"},{id:"cloudsud2023",date:"2023-09-14",video:"https://www.youtube.com/embed/9-EG1pUhsXA"},{id:"bdxio2023",date:"2023-11-10",video:"https://www.youtube.com/embed/-lK_B-CkNPE?si=oPXP16bk5OVKf5PY"},{id:"bsidesstrasbourg2024",date:"2024-06-18",video:"https://www.youtube.com/embed/vuJl27bOmV0"}],materials:[{type:"SLIDES",url:"https://slides.com/julientopcu/concepts-avances-authn-authz",language:"french"},{type:"SLIDES",url:"https://slides.com/julientopcu/oauth-21-explained-simply-even-if-you-are-not-a-developer",language:"english"}],interviews:[],feedbacks:[{url:"https://philippart-s.github.io/blog/articles/conf%C3%A9rences/jug-summer-camp-2021/",language:"french"}],tweets:[{id:"1436347885076033536"},{id:"1436266713771823114"}]}},"0got":function(e,t){e.exports={id:"vulnerabilities-in-dependencies",creationDate:"2018-10-12",defaultLanguage:"english",languages:{english:{defaultEvent:"devoxxbe2018",title:"Find and Track the hidden vulnerabilities inside your dependencies",description:["44% of applications contain critical vulnerabilities in an open source component and this although good practices like OWASP Top 10 have become widespread.","Do not let these vulnerabilities incubate warm in the belly of your app! With this talk you'll learn how those vulnerabilities are indexed (NVD, CVE) and how their severity is scored (CVSS).","You'll see how to create your first Continuous Security pipeline using Jenkins and OWASP DependencyCheck which detects vulnerabilities and track them using OWASP DependencyTrack (open-source softwares)","Do you first step in the DevSecOps philosophy !!!"]},french:{defaultEvent:"devfestnantes2018",title:"Détectez et trackez les vulnérabilités qui se cachent dans vos dépendances",description:["44% des applications contiennent des vulnérabilités critiques dans les librairies open-source qu'elles utilisent et cela bien que des bonnes pratiques comme OWASP Top 10 se soient généralisées.","Ne laissez plus ces aliens incuber bien au chaud dans le ventre de votre appli! Grâce à ce talk, vous apprendrez comment sont répertoriées ces vilaines bestioles (NVD, CVE) et comment est évaluée leur dangerosité (CVSS).","Puis vous verrez comment créer votre première pipeline de Continuous Security dans Jenkins au moyen de OWASP DependencyCheck qui détecte les vulnérabilités et trackez les grâce à OWASP DependencyTrack (logiciels open-source)","Faites le premier pas ver
2s le DevSecOps !!!","Note: OWASP DependencyCheck est capable d'analyser des logiciels Java, .Net et de manière plus expérimentale, Ruby, Node.js et Python."]}},events:[{id:"devfestnantes2018",url:"https://devfest2018.gdgnantes.com/schedule/day1?sessionId=151",slides:"https://slides.com/julientopcu/devfest-nantes-2018-detectez-et-traquez-les-aliens-qui-se-chachent-dans-vos-dpendances#/",video:"https://www.youtube.com/embed/barK5AmxpT8",language:"french",date:"2018-10-19"},{id:"vxdms2018",slides:"https://slides.com/julientopcu/vxdms-find-and-track-the-hidden-vulnerabilities-inside-your-dependencies",video:"https://www.youtube.com/embed/d2WMONyBbTw",language:"english",date:"2018-10-31"},{id:"devfesttoulouse2018",url:"https://2018.devfesttoulouse.fr/speakers/julien_topcu/",slides:"https://slides.com/julientopcu/devfest-toulouse-2018-detectez-et-traquez-les-zergs-qui-se-cachent-dans-vos-dpendances",video:"https://www.youtube.com/embed/aZeR6PypJ8k",language:"french",date:"2018-11-08"},{id:"bdxio2018",slides:"https://slides.com/julientopcu/bdx-io-2018-detectez-et-traquez-les-vulnerabilites-qui-se-cachent-dans-vos-dpendances-5",video:"https://www.youtube.com/embed/NZqPdtv-EIc",language:"french",date:"2018-11-09"},{id:"devoxxbe2018",slides:"https://slides.com/julientopcu/devoxx-2018-find-and-track-the-hidden-vulnerabilities-inside-your-dependencies",video:"https://www.youtube.com/embed/UrsjeR-tGrg",language:"english",date:"2018-11-14"},{id:"codeursenseine2018",url:"https://www.codeursenseine.com/2018/speakers",slides:"https://slides.com/julientopcu/codeurs-en-seine-2018-dtectez-et-traquez-les-vulnrabilits-qui-se-cachent-dans-vos-dpendances",video:"https://www.youtube.com/embed/6PN7AQqMEIk",language:"french",date:"2018-11-22"}],materials:[{type:"SLIDES",url:"https://slides.com/julientopcu/devfest-nantes-2018-detectez-et-traquez-les-aliens-qui-se-chachent-dans-vos-dpendances",language:"french"},{type:"SLIDES",url:"https://slides.com/julientopcu/devoxx-2018-find-and-track-the-hidden-vulnerabilities-inside-your-dependencies",language:"english"},{type:"ARTICLE",title:"You have critical security vulnerabilities in your software but you donât know it yet!",icon:"https://beyondxscratch.files.wordpress.com/2018/09/invasion.png",url:"https://beyondxscratch.com/2018/10/09/devsecops-owasp-you-have-critical-security-vulnerabilities-in-your-software-but-you-dont-know-it-yet/"}],interviews:[{url:"https://voxxeddays.com/microservices/2018/10/08/julien-topcu-on-vulnerabilities-inside-microservices/",language:"english"}],feedbacks:[{url:"https://blog.stack-labs.com/code/rex-voxxeddays-microservices/",language:"french"},{url:"https://www.redstardevelopment.nl/nl/owasp-dependency-checker/",language:"dutsch"},{url:"https://www.jdriven.com/events/conferentie/voxxeddays-paris-2018/",language:"dutsch"}],tweets:[{id:"1065562911421145088"},{id:"1062406116833783808"},{id:"1062401371109056514"},{id:"1062393567358976000"},{id:"1060872766600216576"},{id:"1060518334108762115"},{id:"1057314272928284672"},{id:"1057285464082792448"},{id:"1057283531112660992"},{id:"1057279807921287173"},{id:"1053306087783448576"},{id:"1053299383998050304"},{id:"1049729989535510529"}]}},"2+6g":function(e,t,i){"use strict";i.d(t,"a",(function(){return s}));var n=i("wx14"),r=i("U8pU");function o(e){return e&&"object"===Object(r.a)(e)&&e.constructor===Object}function s(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{clone:!0},r=i.clone?Object(n.a)({},e):e;return o(e)&&o(t)&&Object.keys(t).forEach((function(n){"__proto__"!==n&&(o(t[n])&&n in e?r[n]=s(e[n],t[n],i):r[n]=t[n])})),r}},"2mql":function(e,t,i){"use strict";var n=i("r36Y"),r={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},s={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},a={};function l(e){return n.isMemo(e)?s:a[e.$$typeof]||r}a[n.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},a[n.Memo]=s;var d=Object.defineProperty,u=Object.getOwnPropertyNames,c=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,m=Object.getPrototypeOf,f=Object.prototype;e.exports=function e(t,i,n){if("string"!=typeof i){if(f){var r=m(i);r&&r!==f&&e(t,r,n)}var s=u(i);c&&(s=s.concat(c(i)));for(var a=l(t),h=l(i),v=0;v<s.length;++v){var g=s[v];if(!(o[g]||n&&n[g]||h&&h[g]||a&&a[g])){var b=p(i,g);try{d(t,g,b)}catch(y){}}}}return t}},"4n+Q":function(e,t){e.exports={id:"hive",creationDate:"2024-04-17",defaultLanguage:"english",cospeakers:[{id:"thomaspierrain",name:"Thomas Pierrain",profile:"https://twitter.com/tpierrain"}],languages:{english:{defaultEvent:"kandddinsky2024",title:"The Hive: a scaling and supple architecture style for your growing and complex domain",description:["In a landscape of scaling domain complexity and evolving responsibilities, organizations often grapple with the question of whether to adopt microservices. The ubiquity of Big Ball of Mud (BBOM) monoliths has reshaped the conversation, challenging conventional notions of system design. However, the deployment strategy for bounded contexts remains elusive.","How to split it right by avoiding the pitfalls of a distributed big ball of mud ? How to ensure the cohesion and consistency of our bounded - contexts ? How to reduce coupling between them ? How to deal with the growing complexity of your system? How to survive beyond our modeling debt and take control back?","Discover the Hive ar
2chitecture style, a tactical approach that enables you to cope your strategic challenges and align your software business core with your context map.This pattern decouples your deployment strategy from your strategic design, adhering to the principle of âModel once, Deploy as you wishâ.By rationalizing the relationship between bounded- contexts and services, the Hive pattern will bring you a supple and scalable design that stands resilient in the face of evolving challenges for brown or greenfield products."]},french:{defaultEvent:"mixit2025",title:"Le pattern Hive : une stratégie de modularisation pour votre monolithe modulaire ou vos microservice",description:["Après une décennie, l'industrie réalise que des microservices mal conçus peuvent facilement se transformer en un monolithe distribué, encore plus problématique que le monolithe en spaghetti qu'ils visaient à résoudre. Pour remédier à ce problème, le concept de monolithe modulaire émerge comme une approche alternative.","Cependant, le défi reste de le scinder efficacement sans tomber dans le piège d'un système fortement couplé et rigide. Comment le modulariser correctement tout en gérant la complexité croissante de votre système ? Comment survivre au-delà de notre dette de modélisation et reprendre le contrôle ?","Découvrez le pattern Hive qui découple votre stratégie de déploiement - monolithe modulaire ou microservices - de la conception de votre logiciel, en adoptant le principe « Model Once, Deploy as you wish ». Ce pattern vous apportera une conception souple et évolutive, résiliente face aux défis changeants pour les produits existants ou en développement."]}},events:[{id:"dddfr102024",date:"2024-10-21"},{id:"kandddinsky2024",date:"2024-10-29",video:"https://www.youtube.com/embed/JZBsy6PsCRY?si=5bwSgMvOww630YK7"},{id:"snowcamp2025",date:"2025-01-23"},{id:"bbl-harvest2025",date:"2025-02-27"},{id:"mixit2025",date:"2025-04-29",video:"https://www.youtube.com/embed/TL_nVaOs47g?si=-WK3lFKyj7It0TFG"},{id:"craftconf2025",date:"2025-05-30"},{id:"breizhcamp2025",date:"2025-06-27",video:"https://www.youtube.com/embed/oeWEsLz40tY?si=20hmPqmlJc4oVft-"},{id:"devoxxbe2025",date:"2025-10-10"}],materials:[{type:"SLIDES",url:"https://slides.com/julientopcu/the-hive-a-scaling-and-supple-architecture-style-for-your-growing-and-complex-domain",language:"french"},{type:"SLIDES",url:"https://slides.com/julientopcu/the-hive-a-scaling-and-supple-architecture-style-for-your-growing-and-complex-domain",language:"english"},{type:"REPOSITORY",url:"https://gitlab.com/beyondxscratch/mandalore-express-hive-pattern",icon:"https://gitlab.com/uploads/-/system/project/avatar/58908427/honeycomb.png"}],interviews:[],feedbacks:[],tweets:[]}},"5FXV":function(e,t){e.exports={events:[{id:"meetup-expedia2018",family:"meetup",title:"Meetup Expedia Mai 2018",position:[48.87518,2.3338],url:"https://www.meetup.com/fr-FR/Expedia-Group-Paris/events/248814805/"},{id:"bbl-contentsquare2018",family:"bbl",title:"ContentSquare Juillet 2018",position:[48.86949,2.32741]},{id:"devfestnantes2018",family:"devfest",conference:"devfestnantes",title:"DevFest Nantes 2018",position:[47.2130435,-1.5437708],color:"#5A7785",url:"https://devfest2018.gdgnantes.com/"},{id:"vxdms2018",family:"voxxed",conference:"vxdms",title:"VoxxedDays Microservices 2018",position:[48.83274,2.39662],color:"#000000",url:"https://voxxeddays.com/microservices2018/"},{id:"devfesttoulouse2018",family:"devfest",conference:"devfesttoulouse",title:"DevFest Toulouse 2018",position:[43.611554,1.434583],color:"#673AB7",url:"https://2018.devfesttoulouse.fr/"},{id:"bdxio2018",family:"bdxio",conference:"bordeaux-developer-experience",title:"BDX.io 2018",position:[44.80647,-.60559],url:"http://2018.bdx.io"},{id:"devoxxbe2018",family:"devoxx",conference:"devoxxbe",title:"Devoxx Belgium 2018",position:[51.2446187,4.4138273],url:"https://devoxx.be/"},{id:"codeursenseine2018",family:"ces",conference:"codeursenseine",title:"Codeur en Seine 2018",date:"2018-11-22",position:[49.4461,1.0658],color:"#0165b3",url:"https://www.codeursenseine.com/2018/"},{id:"bbl-mappy2018",family:"bbl",title:"Mappy Decembre 2018",position:[48.82842,2.23099]},{id:"breizhcamp2019",family:"breizhcamp",conference:"breizhcamp",title:"Breizhcamp 2019",position:[48.11641,-1.6377],url:"https://2019.breizhcamp.org/"},{id:"bbl-societegenerale042019",family:"bbl",title:"Société Générale Paris Avril 2019",position:[48.89197,2.23088]},{id:"devoxxfr2019",family:"devoxx",conference:"devoxxfr",title:"Devoxx France 2019",position:[48.878889,2.283333],url:"https://www.devoxx.fr/"},{id:"rivieradev2019",family:"rivdev",conference:"rivieradev",title:"RivieraDev 2019",position:[43.6131,7.05632],url:"https://rivieradev.fr/"},{id:"mixit2019",family:"mixit",conference:"mixit",title:"Mixit 2019",position:[45.74788,4.86066],url:"https://mixitconf.org/"},{id:"carbon062019",family:"meetup",title:"Meetup CarbonIT Juin 2019",position:[48.8822447,2.2672927]},{id:"devrelsalon062019",family:"meetup",title:"Meetup DevRelSalon Juin 2019",position:[48.889484,2.31349],url:"https://www.meetup.com/fr-FR/Paris-DevRel-Salon/events/261673716/"},{id:"bbl-societegenerale062019",family:"bbl",title:"Société Générale Luxembourg Juin 2019",position:[49.6114,6.12565]},{id:"vxlu2019",family:"voxxed",conference:"vxlu",title:"VoxxedDays Luxembourg 2019",position:[49.5079315,6.2791118],color:"#000000",url:"https://voxxeddays.com/luxembourg/"},{id:"sunnytech2019",family:"sunnytech",conference:"sunnytech",title:"SunnyTech 2019",position:[43.62088,3.86804],url:"https://2019.sunny-tech.io/"},{id:"summercamp2019",family:"summercamp",conference:"summercamp",title:"JugSummerCamp 2019",position:[46.15125,-1.15079],url:"https://www.jugsummercamp.org/edition/10"},{id:"craftsrecords-2",family:"craftsrecords",title:"Meetup CraftsRecords Septembre 2019",position:[48.86679,2.29235],url:"https://www.meetup.com/fr-FR/CraftsRecords/events/263972376/"},{id:"bbl-axa2019",family:"bbl",title:"AXA Octobre 2019",position:[48.89686,2.22351]},{id:"devfestnantes2019",family:"devfest",conference:"devfestnantes",title:"DevFest Nantes 2019",position:[47.2129578,-1.5426941],url:"https://devfest2019.gdgnantes.com/"},{id:"devoxxbe2019",family:"devoxx",conference:"devoxxbe",title:"Devoxx Belgium 2019",position:[51.2446187,4.4138273],url:"https://devoxx.be/"},{id:"devopsdday2019",family:"devopsdday",conference:"devopsdday",title:"Devops D-Day 2019",position:[43.2698,5.3963],
2color:"#000000",url:"https://2019.devops-dday.com/"},{id:"bdxio2019",family:"bdxio",conference:"bordeaux-developer-experience",title:"BDX.io 2019",position:[44.88805,-.56719],url:"https://www.bdx.io/"},{id:"codeursenseine2019",family:"ces",conference:"codeursenseine",title:"Codeurs en Seine 2019",position:[49.4461,1.0658],color:"#0165b3",url:"https://www.codeursenseine.com/2019/"},{id:"parisjug122019",family:"parisjug",title:"Paris JUG Decembre 2019",position:[48.8305627,2.2297683],url:"https://www.parisjug.org/xwiki/wiki/oldversion/view/Meeting/20191210"},{id:"snowcamp2020",family:"snc",conference:"snowcamp",title:"SnowCamp 2020",position:[45.19074,5.713],color:"#302b45",url:"https://snowcamp.io/fr/"},{id:"tnt20",family:"tnt",conference:"tourainetech",title:"Touraine Tech 2020",position:[47.3649451,.6827802],url:"https://2020.touraine.tech/"},{id:"devfestparis2020",family:"devfest",conference:"devfestparis",title:"DevFest Paris 2020",position:[48.8230365,2.2698241],url:"https://devfest.gdgparis.com/"},{id:"bbl-octo2020",family:"bbl",title:"OCTO Février 2020",position:[48.8686621,2.3334737]},{id:"nantesjug032020",family:"nantesjug",title:"Nantes JUG Mars 2020",position:[47.2205652,-1.5607522],url:"https://nantesjug.org/"},{id:"breizhcamp2020",family:"breizhcamp",conference:"breizhcamp",title:"Breizhcamp 2020",position:[48.11641,-1.6377],url:"https://breizhcamp.org/"},{id:"dddfr042020",family:"meetup",title:"Meetup DDD FR Avril 2020",position:[48.8686621,2.3334737],url:"https://www.meetup.com/fr-FR/DDD-Paris/events/268626494/"},{id:"devoxxfr2020",family:"devoxx",conference:"devoxxfr",title:"Devoxx France 2020",position:[48.878889,2.283333],url:"https://www.devoxx.fr/"},{id:"rivieradev2020",family:"rivdev",conference:"rivieradev",title:"RivieraDev 2020",position:[43.6131,7.05632],url:"https://rivieradev.fr/"},{id:"meetup-gdglemans062020",family:"meetup",title:"GDG Lemans Juin 2020",position:[47.9818921,.1605874],url:"https://www.meetup.com/fr-FR/GDG-Le-Mans/events/270771934/"},{id:"summercamp2020",family:"summercamp",conference:"summercamp",title:"JugSummerCamp 2020",position:[46.15125,-1.15079],url:"https://www.jugsummercamp.org/edition/11"},{id:"atbdx2020",family:"agiletour",conference:"atbdx",title:"Agile Tour Bordeaux 2020",position:[44.837963039896394,-.5795778354200353],url:"http://agiletourbordeaux.fr/2020/programme.html"},{id:"meetup-gdglemans112020",family:"meetup",title:"GDG Lemans Novembre 2020",position:[47.99520077308569,.18830936441768978],url:"https://www.meetup.com/fr-FR/GDG-Le-Mans/events/273660569/"},{id:"rivieradev2021",family:"rivdev",conference:"rivieradev",title:"RivieraDev 2021",position:[43.45188089797104,6.632212544025488],url:"https://rivieradev.fr/session/1017"},{id:"bbl-nexity2021",family:"bbl",title:"BBL Nexity 2021"},{id:"summercamp2021",family:"summercamp",conference:"summercamp",title:"JugSummerCamp 2021",position:[46.15125,-1.15079],url:"https://www.jugsummercamp.org/edition/12"},{id:"devoxxfr2021",family:"devoxx",conference:"devoxxfr",title:"Devoxx France 2021",position:[48.878889,2.283333],url:"https://cfp.devoxx.fr/2021/talk/YPZ-7990/REST_next_level_:__Ecrire_des_APIs_web_orientees_metier"},{id:"scrennes102021",family:"meetup",title:"Software Crafts·wo·manship Rennes",position:[48.113086347788645,-1.6609720125172476],url:"https://www.meetup.com/fr-FR/Software-Craftsmanship-Rennes/events/281041283/"},{id:"atbdx2021",family:"agiletour",conference:"atbdx",title:"Agile Tour Bordeaux 2021",position:[44.83078930464861,-.5621536310881848],url:"http://agiletourbordeaux.fr/programme.html"},{id:"devfestlille2021",family:"devfest",conference:"devfestlille",title:"DevFest Lille 2021",position:[50.65341315121172,2.9826035846564602],url:"https://devfest.gdglille.org/index.html"},{id:"agre2021",conference:"agre",family:"agre",title:"Agile Grenoble 2021",position:[45.19074,5.713],url:"http://agile-grenoble.org/programme/programme-2021-presentiel/"},{id:"tadx122021",family:"meetup",title:"TADx",position:[47.390985391388966,.6894390457846423],url:"https://www.tadx.fr/"},{id:"snowcamp2022",family:"snc",conference:"snowcamp",title:"SnowCamp 2022",position:[45.19074,5.713],color:"#302b45",url:"https://snowcamp.io/fr/"},{id:"devcon12",family:"devcon",conference:"devcon",title:"DevCon#12",position:[48.86638280465673,2.370884638617238],url:"https://www.programmez.com/page-devcon/devcon-12-parlons-cybersecurite-devsecops-secure-design"},{id:"bxs-1",family:"beyondxscratch",conference:"beyondxscratch",title:"BeyondxScratch",url:"https://www.meetup.com/fr-FR/beyondxscratch/events/278631635/"},{id:"bxs-2",family:"beyondxscratch",conference:"beyondxscratch",title:"BeyondxScratch",url:"https://www.meetup.com/fr-FR/beyondxscratch/events/279298890/"},{id:"tnt22",family:"tnt",conference:"tourainetech",title:"Touraine Tech 2022",position:[47.3649451,.6827802],url:"https://touraine.tech/"},{id:"dddfr012022",family:"meetup",title:"Meetup DDD FR Janvier 2022",url:"https://www.meetup.com/fr-FR/DDD-Paris/events/268626494/"},{id:"bbl-societegenerale022022",family:"bbl",title:"Société Générale Paris Février 2022",position:[48.89197,2.23088]},{id:"bbl-jolimoi022022",family:"bbl",title:"Jolimoi Février 2022",position:[48.878803,2.353589]},{id:"carrefourdevsummit2022",family:"cfrdevsummit",conference:"cfrdevsummit",title:"Carrefour Dev Summit 2022",position:[48.723754931092074,2.265571411636409]},{id:"bbl-worldline2022",family:"bbl",title:"Wordline Avril 2022"},{id:"devoxxfr2022",family:"devoxx",conference:"devoxxfr",title:"Devoxx France 2022",position:[48.878889,2.283333],url:"https://www.devoxx.fr/"},{id:"devoxxuk2022",family:"devoxx",conference:"devoxxuk",title:"Devoxx
2United Kingdom 2022",position:[51.53595967508604,-.1048408539697227],url:"https://www.devoxx.co.uk/"},{id:"bbl-maltacademy2022",family:"bbl",title:"Malt Academy Mai 2022"},{id:"web2day2022",family:"web2day",conference:"web2day",title:"Web2Day 2022",position:[47.20519905471873,-1.563492582267059],url:"https://web2day.co/"},{id:"alpescraft22",family:"alpescraft",conference:"alpescraft",title:"Alpes Craft 2022",position:[45.154749659198345,5.735252834947097],url:"https://www.alpescraft.fr/"},{id:"dddeu2022",family:"dddeu",conference:"domaindrivendesigneurope",title:"DDD Europe 2022",position:[52.35936829658512,4.807437846031924],url:"https://2022.dddeurope.com/"},{id:"breizhcamp2022",family:"breizhcamp",conference:"breizhcamp",title:"Breizhcamp 2022",position:[48.11641,-1.6377],url:"https://breizhcamp.org/"},{id:"dddfr092022",family:"meetup",title:"Meetup DDDFR September 2022",position:[45.78395219285274,4.807676813491597],url:"https://www.meetup.com/fr-FR/ddd-fr/events/288205097/"},{id:"bbl-allianz092022",family:"bbl",title:"Allianz Septembre 2022",position:[48.888326516102005,2.2483950922089484]},{id:"scrennes092022",family:"meetup",title:"Software Crafter Rennes 2022",position:[48.11366098993597,-1.6018304019244332],url:"https://www.meetup.com/fr-FR/software-crafters-rennes/events/288223915/"},{id:"devoxxbe2022",family:"devoxx",conference:"devoxxbe",title:"Devoxx Belgium 2022",position:[51.2446187,4.4138273],url:"https://devoxx.be/"},{id:"flowcon2022",family:"fc",conference:"flowcon",title:"FlowCon 2022",position:[48.81932759297137,2.3196353689462823],url:"https://www.flowcon.io/",color:"#1D428A"},{id:"codeursenseine2022",family:"ces",conference:"codeursenseine",title:"Codeur en Seine 2022",position:[49.4461,1.0658],color:"#0165b3",url:"https://www.codeursenseine.com/2022/"},{id:"devopsdday2022",family:"devopsdday",conference:"devopsdday",title:"Devops D-Day 2022",position:[43.2698,5.3963],color:"#FFFFFF",url:"https://devops-dday.com/"},{id:"bdxio2022",family:"bdxio",conference:"bordeaux-developer-experience",title:"BDX.io 2022",position:[44.88805,-.56719],url:"https://www.bdx.io/"},{id:"bbl-allianz112022",family:"bbl",title:"Allianz Novembre 2022"},{id:"bbl-starof-java2022",family:"bbl",title:"Starof Java Decembre 2022"},{id:"journeeagilite2022",family:"insee",title:"Journée de l'Agilité 2022",position:[48.815564112617906,2.304853096310155]},{id:"atrennes2022",family:"agiletour",conference:"atrennes",title:"Agile Tour Rennes 2022",position:[48.1156356304078,-1.6816189],url:"https://agiletour.agilerennes.org/"},{id:"tnt23",family:"tnt",conference:"tourainetech",title:"Touraine Tech 2023",position:[47.3649451,.6827802],url:"https://2023.touraine.tech/"},{id:"sclux022023",family:"meetup",title:"Software Craft Luxembourg 2023"},{id:"bbl-iad2023",family:"bbl",title:"BBL IAD Mars 2023"},{id:"devoxxfr2023",family:"devoxx",conference:"devoxxfr",title:"Devoxx France 2023",position:[48.878889,2.283333],url:"https://www.devoxx.fr/"},{id:"mixit2023",family:"mixit",conference:"mixit",title:"Mixit 2023",position:[45.78594555423249,4.868493438858929],url:"https://mixitconf.org/"},{id:"scromandie022023",family:"meetup",title:"Software Crafters Romandie 2023"},{id:"springio2023",family:"springio",conference:"springio",title:"Spring I/O 2023",position:[41.37302329584862,2.1514801000003154],url:"https://2023.springio.net/"},{id:"devoxxpl2023",family:"devoxx",conference:"devoxxpl",title:"Devoxx Poland 2023",position:[50.047867342927766,19.9313459833093],url:"https://devoxx.pl/"},{id:"dddeu2023",family:"dddeu",conference:"domaindrivendesigneurope",title:"DDD Europe 2023",position:[52.35936829658512,4.807437846031924],url:"https://2023.dddeurope.com/"},{id:"worldlinetechforum2023",family:"worldlinetechforum",conference:"worldlinetechforum",title:"Worldline Tech Forum 2023",position:[50.568560537510265,3.029116425274745]},{id:"vxlu2023",family:"voxxed",conference:"vxlu",title:"VoxxedDays Luxembourg 2023",position:[49.5079315,6.2791118],color:"#000000",url:"https://voxxeddays.com/luxembourg/"},{id:"breizhcamp2023",family:"breizhcamp",conference:"breizhcamp",title:"Breizhcamp 2023",position:[48.11641,-1.6377],url:"https://breizhcamp.org/"},{id:"bbl-valsoftware2023",family:"bbl",title:"BBL Val Software 2023"},{id:"carrefourdevsummit2023",family:"cfrdevsummit",conference:"cfrdevsummit",title:"Carrefour Dev Summit 2023",position:[48.723754931092074,2.265571411636409]},{id:"cloudsud2023",conference:"cloudsud",family:"cloudsud",title:"Cloud Sud 2023",color:"#000000",url:"https://www.cloudsud.fr/"},{id:"bbl-vaduo2023",family:"bbl",title:"BBL Vaduo 2023"},{id:"meetup-afup-poitier2023",family:"meetup",title:"Meetup Afup Poitier 2023",position:[46.580866172375416,.33744754232698354],url:"https://www.meetup.com/fr-FR/afup-poitiers-php/events/295730096/"},{id:"devoxxbe2023",family:"devoxx",conference:"devoxxbe",title:"Devoxx Belgium 2023",position:[51.2446187,4.4138273],url:"https://devoxx.be/"},{id:"elsassjug2023",family:"meetup",title:"Meetup Elsass JUG 2023",position:[48.57418574511497,7.749376357574279]},{id:"dddfr102023",family:"meetup",title:"Meetup DDDFR October 2023",position:[48.88018681133493,2.3236002534603286]},{id:"codeursenseine2023",family:"ces",conference:"codeursenseine",title:"Codeur en Seine 2023",position:[49.4461,1.0658],color:"#0165b3",url:"https://www.codeursenseine.com/2023/"},{id:"atbdx2023",family:"agiletour",conference:"atbdx",title:"Agile Tour Bordeaux 2023",position:[44.81677105789815,-.5521432421404316],url:"https://agiletourbordeaux.fr/programme.html"},{id:"xcraft2023",family:"xcraft",conference:"xcraft",title:"XCraft 2023",position:[45.74792507549267,4.817995],url:"https://xcraft.fr/index.html#planning"}
2,{id:"techforPE2023",family:"poleemploi",conference:"poleemploi",title:"Tech for PE 2023",position:[44.78219970273008,-.6547640125166673]},{id:"bdxio2023",family:"bdxio",conference:"bordeaux-developer-experience",title:"BDX.io 2023",position:[44.88805,-.56719],url:"https://www.bdxio.fr/"},{id:"bbl-fdj2023",family:"bbl",title:"BBL FDJ 2023"},{id:"devopsdday2023",family:"devopsdday",conference:"devopsdday",title:"Devops D-Day 2023",position:[43.2698,5.3963],color:"#000000",url:"https://www.devopsdday.com/"},{id:"devfestdijon2023",family:"devfest",conference:"devfestdijon",title:"DevFest Dijon 2023",position:[47.318058209353076,5.066965],url:"https://developers-group-dijon.fr/"},{id:"vxti24",family:"voxxed",conference:"vxti",title:"Voxxed Ticino 2024",position:[46.00557133368823,8.955680923842026],url:"https://voxxeddays.com/ticino"},{id:"vxcern24",family:"voxxed",conference:"vxcern",title:"Voxxed CERN 2024",position:[46.23380172368939,6.056502269979655],url:"https://cern.voxxeddays.com/"},{id:"snowcamp2024",family:"snc",conference:"snowcamp",title:"SnowCamp 2024",position:[45.19074,5.713],color:"#302b45",url:"https://snowcamp.io/fr/"},{id:"meetup-chtiJUG2024",family:"meetup",title:"Meetup Chti JUG Février 2024",position:[50.63713589565381,3.058432],url:"https://www.meetup.com/fr-FR/chtijug/events/298858043/"},{id:"sg-apiday-2024",family:"sg",title:"Société Générale APIDAY 2024",position:[48.85479470467831,2.4916810267314764]},{id:"atniort2024",family:"agiletour",conference:"atniort",title:"Agile Tour Niort 2024",position:[46.31588832023221,-.410888630686779],url:"https://agileniort.fr/"},{id:"devoxxfr2024",family:"devoxx",conference:"devoxxfr",title:"Devoxx France 2024",position:[48.878889,2.283333],url:"https://www.devoxx.fr/"},{id:"mixit2024",family:"mixit",conference:"mixit",title:"Mixit 2024",position:[45.78594555423249,4.868493438858929],url:"https://mixitconf.org/"},{id:"geeconkrakow2024",family:"geecon",conference:"geeconkrakow",title:"GeeCon Krakow 2024",position:[50.08883,19.98439],url:"https://2024.geecon.org/"},{id:"craftconf2024",family:"craftconf",conference:"craftconf",title:"CraftConf 2024",position:[47.50076231581331,19.069247122089777],url:"https://craft-conf.com/2024"},{id:"jnation2024",family:"jnation",conference:"jnation",title:"JNation 2024",position:[40.2040276817555,-8.436118003700876],url:"https://jnation.pt/"},{id:"alpescraft24",family:"alpescraft",conference:"alpescraft",title:"Alpes Craft 2024",position:[45.154749659198345,5.735252834947097],url:"https://www.alpescraft.fr/"},{id:"bsidesstrasbourg2024",family:"bsides",conference:"bsides",title:"Bsides Strasbourg 2024",position:[48.573608721563915,7.7771951962991235],url:"https://bsides-sxb.fr/"},{id:"devfestlille2024",family:"devfest",conference:"devfestlille",title:"DevFest Lille 2024",position:[50.632901857938066,3.077948250988216],url:"https://devfest.gdglille.org/index.html"},{id:"vxlu2024",family:"voxxed",conference:"vxlu",title:"VoxxedDays Luxembourg 2024",position:[49.5079315,6.2791118],color:"#000000",url:"https://voxxeddays.com/luxembourg/"},{id:"breizhcamp2024",family:"breizhcamp",conference:"breizhcamp",title:"Breizhcamp 2024",position:[48.11641,-1.6377],url:"https://2019.breizhcamp.org/"},{id:"scrennes092024",family:"meetup",title:"Software Crafter Rennes 2024",position:[48.11366098993597,-1.6018304019244332]},{id:"devoxxbe2024",family:"devoxx",conference:"devoxxbe",title:"Devoxx Belgium 2024",position:[51.2446187,4.4138273],url:"https://devoxx.be/"},{id:"dddfr102024",family:"meetup",title:"Meetup DDD FR Octobre 2024",position:[45.7555434603459,4.839808622742799],url:"https://www.meetup.com/ddd-fr/events/303647846"},{id:"kandddinsky2024",family:"kandddinsky",title:"Kandddinsky 2024",position:[52.50179798818455,13.449554169313222],url:"https://kandddinsky.de/"},{id:"jfall2024",conference:"jfall",family:"jfall",title:"J-Fall 2024",position:[52.01579021646887,5.647951596191224],url:"https://jfall.nl/"},{id:"agre2024",conference:"agre",family:"agre",title:"Agile Grenoble 2024",position:[45.19074,5.713],url:"http://agile-grenoble.org/"},{id:"codeursenseine2024",family:"ces",conference:"codeursenseine",title:"Codeur en Seine 2024",position:[49.4461,1.0658],color:"#0165b3",url:"https://www.codeursenseine.com/2024/"},{id:"devfestdijon2024",family:"devfest",conference:"devfestdijon",title:"DevFest Dijon 2024",position:[47.3112104940289,5.067741547375601],url:"https://developers-group-dijon.fr/"},{id:"meetup-springparis24",family:"meetup",title:"Meetup Spring Paris - Févr
2ier 2024",position:[48.88032111314956,2.3231218134924574],url:"https://www.meetup.com/spring-meetup-paris/events/304755539/"},{id:"snowcamp2025",family:"snc",conference:"snowcamp",title:"SnowCamp 2025",position:[45.19074,5.713],color:"#302b45",url:"https://snowcamp.io/fr/"},{id:"devopsdday2025",family:"devopsdday",conference:"devopsdday",title:"Devops D-Day 2025",position:[43.2698,5.3963],color:"#FFFFFF",url:"https://devops-dday.com/"},{id:"jfokus2025",family:"jfokus",conference:"jfokus",title:"JFokus 2025",position:[59.33028936990335,18.05588511003364],url:"https://www.jfokus.se/"},{id:"tnt25",family:"tnt",conference:"tourainetech",title:"Touraine Tech 2025",position:[47.3649451,.6827802],url:"https://touraine.tech/"},{id:"bbl-axa2025",family:"bbl",title:"BBL Axa 2025"},{id:"bbl-harvest2025",family:"bbl",title:"BBL Harvest 2025"},{id:"ouestfrance2025",family:"ouestfrance",title:"Ouest France 2025",position:[48.10269255344086,-1.6281555316423875]},{id:"msacraftday2025",family:"msa",title:"MSA Craft Day 2025",position:[50.542462836640915,3.0869946683126046]},{id:"vxzu2025",conference:"vxzu",family:"voxxed",title:"Voxxed Zürich 2025",position:[47.638818724060876,8.491286263235],url:"https://zurich.voxxeddays.com/"},{id:"cbdevday2025",conference:"commerzbank",family:"commerzbank",title:"Commerz Bank DevDay 2025"},{id:"vxam2025",conference:"vxam",family:"voxxed",title:"Voxxed Amsterdam 2025",position:[52.400731320867116,4.934673483708974],url:"https://amsterdam.voxxeddays.com/"},{id:"exploreddd2025",conference:"exploreddd",family:"eddd",title:"ExploreDDD 2025",position:[39.744306327786106,-104.99498471633501],url:"https://exploreddd.com/"},{id:"mixit2025",family:"mixit",conference:"mixit",title:"Mixit 2025",position:[45.78594555423249,4.868493438858929],url:"https://mixitconf.org/"},{id:"devoxxuk2025",family:"devoxx",conference:"devoxxuk",title:"Devoxx United Kingdom 2025",position:[51.53595967508604,-.1048408539697227],url:"https://www.devoxx.co.uk/"},{id:"codemotionmadrid2025",family:"codemotion",conference:"codemotionmadrid",title:"Codemotion Madrid 2025",position:[40.47243433225685,-3.6833984212505824],url:"https://conferences.codemotion.com/madrid2025/"},{id:"springio2025",family:"springio",conference:"springio",title:"Spring I/O 2025",position:[41.372635581257086,2.151434572791399],url:"https://2025.springio.net/"},{id:"craftconf2025",family:"craftconf",conference:"craftconf",title:"CraftConf 2025",position:[47.50076231581331,19.069247122089777],url:"https://craft-conf.com/2025"},{id:"dddeu2025",family:"dddeu",conference:"domaindrivendesigneurope",title:"DDD Europe 2025",position:[51.21837009500728,4.421851927741813],url:"https://2025.dddeurope.com/"},{id:"devoxxpl2025",family:"devoxx",conference:"devoxxpl",title:"Devoxx Poland 2025",position:[50.047867342927766,19.9313459833093],url:"https://devoxx.pl/"},{id:"breizhcamp2025",family:"breizhcamp",conference:"breizhcamp",title:"Breizhcamp 2025",position:[48.11641,-1.6377],url:"https://2025.breizhcamp.org/"},{id:"nantescraft2025",family:"nantescraft",conference:"nantescraft",title:"Nantes Craft 2025",position:[47.20661161165384,-1.559442716682561],url:"https://www.nantes-craft.fr/"},{id:"devoxxbe2025",family:"devoxx",conference:"devoxxbe",title:"Devoxx Belgium 2025",position:[51.2446187,4.4138273],url:"https://devoxx.be/"},{id:"kandddinsky2025",family:"kandddinsky",title:"Kandddinsky 2025",position:[52.50179798818455,13.449554169313222],url:"https://kandddinsky.de/"},{id:"atbdx2025",family:"agiletour",conference:"atbdx",title:"Agile Tour Bordeaux 2025",position:[44.86699792912182,-.5768411694608224]},{id:"newcrafts2025",family:"nc",title:"NewCrafts 2025",position:[48.854089558477334,2.2881934682258196]},{id:"snowcamp2026",conference:"snowcamp",title:"SnowCamp 2026",position:[45.154749659198345,5.735252834947097],color:"#302b45",url:"https://snowcamp.io/fr/"},{id:"capgemini2026",family:"capgemini",title:"Cap Gemini Conf 2026",position:[48.83124051463618,2.275085485975392]},{id:"springio2026",family:"springio",conference:"springio",title:"Spring I/O 2026",position:[41.38208299301162,2.108492265831028],url:"https://2026.springio.net/"},{id:"devoxxfr2026",family:"devoxx",conference:"devoxxfr",title:"Devoxx France 2026",position:[48.878889,2.283333],url:"https://www.devoxx.fr/"}
2,{id:"vxbuc2026",family:"voxxed",conference:"vxbuc",title:"Voxxed Bucharest 2026",position:[44.47955214147936,26.064463268840985],url:"https://voxxeddays.com/bucharest/"},{id:"devoxxuk2026",family:"devoxx",conference:"devoxxuk",title:"Devoxx United Kingdom 2026",position:[51.53595967508604,-.1048408539697227],url:"https://www.devoxx.co.uk/"},{id:"geeconkrakow2026",family:"geecon",conference:"geeconkrakow",title:"GeeCon Krakow 2026",position:[50.08883,19.98439],url:"https://2026.geecon.org/"},{id:"dddeu2026",family:"dddeu",conference:"domaindrivendesigneurope",title:"DDD Europe 2026",position:[51.21837009500728,4.421851927741813],url:"https://2026.dddeurope.com/"},{id:"devbcn2026",family:"devbcn",conference:"devbcn",title:"DevBcn 2026",position:[41.37139,2.18167],url:"https://www.devbcn.com/"},{id:"mixit2026",family:"mixit",conference:"mixit",title:"Mixit 2026",position:[45.78594555423249,4.868493438858929],url:"https://mixitconf.org/"},{id:"devoxxpl2026",family:"devoxx",conference:"devoxxpl",title:"Devoxx Poland 2026",position:[50.047867342927766,19.9313459833093],url:"https://devoxx.pl/"},{id:"adeodevsummit2026",family:"adeodevsummit",conference:"adeodevsummit",title:"Adeo Dev Summit x Decathlon 2026",position:[50.60089,3.09173],url:"https://conference-hall.io/adeodevsummitxdecathlon"},{id:"breizhcamp2026",family:"breizhcamp",conference:"breizhcamp",title:"Breizhcamp 2026",position:[48.11641,-1.6377],url:"https://breizhcamp.org/"},{id:"nantescraft2026",family:"nantescraft",conference:"nantescraft",title:"Nantes Craft 2026",position:[47.20661161165384,-1.559442716682561],url:"https://www.nantes-craft.fr/"},{id:"bdxio2026",family:"bdxio",conference:"bordeaux-developer-experience",title:"BDX.io 2026",position:[44.80647,-.60559],url:"https://bdxio.fr/"},{id:"devoxxbe2026",family:"devoxx",conference:"devoxxbe",title:"Devoxx Belgium 2026",position:[51.2446187,4.4138273],url:"https://devoxx.be/"}]}},"6rCl":function(e,t,i){var n={"./JkNourry.png":"1PAE","./adrienjoly.png":"ip0A","./aurorejeremie.png":"kCaF","./default.png":"852U","./estelandry.png":"vC6/","./josianchevalier.png":"qraq","./ju_derancourt.png":"YNvn","./thomaspierrain.png":"v+H7","./yanndanot.png":"FcR0"};function r(e){var t=o(e);return i(t)}function o(e){if(!i.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}r.keys=function(){return Object.keys(n)},r.resolve=o,e.exports=r,r.id="6rCl"},"8Syk":function(e,t){e.exports={id:"how-why-sponsor-confs",creationDate:"2019-06-01",defaultLanguage:"english",languages:{english:{defaultEvent:"devrelsalon062019",title:"how and why sponsor conferences?",description:["DevRel Salon meetup June 2019"]}},events:[{id:"devrelsalon062019"}],materials:[{type:"SLIDES",url:"https://slides.com/julientopcu/devrel-salon-2019",language:"english"}],interviews:[],feedbacks:[],tweets:[{id:"1138886442082607104"},{id:"1138887250895396864"}]}},"8Th+":function(e,t){e.exports={id:"no-estimates",creationDate:"2018-11-01",defaultLanguage:"english",languages:{english:{defaultEvent:"devoxxbe2018",title:"Developers, You should stop estimating your tasks! #noEstimates",description:["As we all know, estimating is both difficult and expensive and how often your tasks have taken longer than expected? Estimation is today one of the preferred methods for decision-making as well as the evaluation of the release dates of our projects ... but today there is an alternative: no longer estimating our tasks!","This talk is feedback on the implementation of #noEstimates on a development team for over a year. You will see what are the keys as well as the tools needed to set it up."]},french:{defaultEvent:"bdxio2018",title:"Développeurs, n'estimez plus vos tâches ! #noEstimates",description:["On le sait tous, estimer est à la fois difficile et coûteux et combien de fois vos tâches ont pris plus de temps que prévues? L'estimation est aujourd'hui l'une des méthodes de prédilection pour la prise de décision ainsi que l'évaluation des dates de release de nos projets... mais aujourd'hui il existe une alternative: ne plus estimer ses tâches!","Venez découvrir ce retour d'expérience sur la mise en place du #noEstimates sur une équipe de développement depuis plus d'un an. Vous verrez quelles s
2ont les clés ainsi que les outils nécessaires à sa mise en place."]}},events:[{id:"bdxio2018",slides:"https://slides.com/julientopcu/bdx-io-developpeurs-n-estimez-plus-vos-taches",video:"https://www.youtube.com/embed/gJjZaTdJOgg",language:"french",date:"2018-11-09"},{id:"devoxxbe2018",slides:"https://slides.com/julientopcu/devoxx-2018-developers-you-should-stop-estimating-your-tasks-noestimates",video:"https://www.youtube.com/embed/Ub2qhENLU3w",language:"english",date:"2018-11-14"},{id:"bbl-mappy2018",language:"french"}],materials:[{type:"SLIDES",url:"https://slides.com/julientopcu/bdx-io-developpeurs-n-estimez-plus-vos-taches",language:"french"},{type:"SLIDES",url:"https://slides.com/julientopcu/devoxx-2018-developers-you-should-stop-estimating-your-tasks-noestimates",language:"english"}],interviews:[],feedbacks:[],tweets:[{id:"1060880129763741698"}]}},"A+CX":function(e,t,i){"use strict";function n(e){var t=e.theme,i=e.name,n=e.props;if(!t||!t.props||!t.props[i])return n;var r,o=t.props[i];for(r in o)void 0===n[r]&&(n[r]=o[r]);return n}i.d(t,"a",(function(){return n}))},Copi:function(e,t,i){"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,o=n?Symbol.for("react.portal"):60106,s=n?Symbol.for("react.fragment"):60107,a=n?Symbol.for("react.strict_mode"):60108,l=n?Symbol.for("react.profiler"):60114,d=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,p=n?Symbol.for("react.concurrent_mode"):60111,m=n?Symbol.for("react.forward_ref"):60112,f=n?Symbol.for("react.suspense"):60113,h=n?Symbol.for("react.suspense_list"):60120,v=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,b=n?Symbol.for("react.block"):60121,y=n?Symbol.for("react.fundamental"):60117,w=n?Symbol.for("react.responder"):60118,x=n?Symbol.for("react.scope"):60119;function j(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case p:case s:case l:case a:case f:return e;default:switch(e=e&&e.$$typeof){case u:case m:case g:case v:case d:return e;default:return t}}case o:return t}}}function k(e){return j(e)===p}t.AsyncMode=c,t.ConcurrentMode=p,t.ContextConsumer=u,t.ContextProvider=d,t.Element=r,t.ForwardRef=m,t.Fragment=s,t.Lazy=g,t.Memo=v,t.Portal=o,t.Profiler=l,t.StrictMode=a,t.Suspense=f,t.isAsyncMode=function(e){return k(e)||j(e)===c},t.isConcurrentMode=k,t.isContextConsumer=function(e){return j(e)===u},t.isContextProvider=function(e){return j(e)===d},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return j(e)===m},t.isFragment=function(e){return j(e)===s},t.isLazy=function(e){return j(e)===g},t.isMemo=function(e){return j(e)===v},t.isPortal=function(e){return j(e)===o},t.isProfiler=function(e){return j(e)===l},t.isStrictMode=function(e){return j(e)===a},t.isSuspense=function(e){return j(e)===f},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===s||e===p||e===l||e===a||e===f||e===h||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===v||e.$$typeof===d||e.$$typeof===u||e.$$typeof===m||e.$$typeof===y||e.$$typeof===w||e.$$typeof===x||e.$$typeof===b)},t.typeOf=j}
2,FDkA:function(e,t){e.exports={id:"model-expressions-an-overlooked-aspect-of-domain-driven-design",creationDate:"2026-02-18",defaultLanguage:"english",cospeakers:[],languages:{english:{defaultEvent:"dddeu2026",title:"Model Expressions: An Overlooked Aspect of Domain-Driven Design?",description:["If you have ever noticed your front-end, back-end, and database each speaking a slightly different version of the business, you have already come across one of those gaps that quietly slip into our systems. These mismatches create inconsistencies that slow teams down and make even small changes feel heavier than they should.","Behind this sits a simple reality: every layer of the socio-technical system ends up expressing the domain model in its own way. These are the model expressions. When they drift apart, pick up constraints from one another, or assume responsibilities they were never meant to hold, the bounded context starts losing cohesion and essential business behaviors become harder to preserve. That is when familiar symptoms show up: layers influencing each other in odd ways, rules applied inconsistently, or business intent fading as it passes through the system.","In this talk, you will get a clear picture of what these model expressions are and how they relate to a bounded-context. We will explore how to shape a strategy that guides the way they interact so the system stays coherent over time. Through concrete examples of model-expression challenges, we will see how model tensions help spot design smells that erode the integrity of a bounded context."]}},events:[{id:"dddeu2026",date:"2026-06-12"}],materials:[{}],interviews:[],feedbacks:[],tweets:[]}},Ff2n:function(e,t,i){"use strict";i.d(t,"a",(function(){return r}));var n=i("zLVn");function r(e,t){if(null==e)return{};var i,r,o=Object(n.a)(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r<s.length;r++)i=s[r],-1===t.indexOf(i)&&{}.propertyIsEnumerable.call(e,i)&&(o[i]=e[i])}return o}},H2TA:function(e,t,i){"use strict";var n=i("wx14"),r=i("Ff2n"),o=i("q1tI"),s=i.n(o),a=i("2mql"),l=i.n(a),d=i("RD7I"),u=i("A+CX"),c=i("aXM8"),p=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function(i){var o=t.defaultTheme,a=t.withTheme,p=void 0!==a&&a,m=t.name,f=Object(r.a)(t,["defaultTheme","withTheme","name"]);var h=m,v=Object(d.a)(e,Object(n.a)({defaultTheme:o,Component:i,name:m||i.displayName,classNamePrefix:h},f)),g=s.a.forwardRef((function(e,t){e.classes;var a,l=e.innerRef,d=Object(r.a)(e,["classes","innerRef"]),f=v(Object(n.a)({},i.defaultProps,e)),h=d;return("string"==typeof m||p)&&(a=Object(c.a)()||o,m&&(h=Object(u.a)({theme:a,name:m,props:d})),p&&!h.theme&&(h.theme=a)),s.a.createElement(i,Object(n.a)({ref:l||t,classes:f},h))}));return l()(g,i),g}},m=i("cNwE");t.a=function(e,t){return p(e,Object(n.a)({defaultTheme:m.a},t))}},Htei:function(e,t){e.exports={id:"model-mitosis",creationDate:"2023-03-16",defaultLanguage:"english",cospeakers:[{id:"josianchevalier",name:"Josian Chevalier",profile:"https://twitter.com/JosianChevalier"}],languages:{english:{defaultEvent:"dddeu2023",title:"Model Mitosis: a dynamic pattern to deal with model tensions",description:["Just as models should be iterative, strategic design should change when the context and our understanding of the problem evolve. As a model grows to solve more problems, it becomes less supple in its ability to evolve. Tensions arise within the model that struggles to stay coherent.","Eventually it reaches a critical mass and becomes a big ball of mud.","How do we know when itâs time to let new models emerge? How do we carry on the decision to split a model? How can we handle the progressive differentiation of our models while avoiding unnecessary coupling? Itâs not as easy as a clean axe cut in the middle, finding the right boundaries is hard.","We would like to introduce the Model Mitosis, a dynamic pattern used to split a model into multiple ones that will get shaped and decoupled iteratively."]},french:{defaultEvent:"devoxxfr2024",title:"Model Mitosisâ¯: ne plus se tromper entre les microservices et le monolithe",description:["Tout comme le développement doit être itératif, le design du logiciel doit changer lorsque le contexte et notre c
2ompréhension du problème évoluent. Au fur et à mesure qu'un logiciel se développe pour résoudre plus de problèmes, il devient moins souple dans sa capacité à évoluer. Des tensions apparaissent au sein du modèle métier du logiciel qui peine à rester cohérent.","Finalement, il atteint une masse critique et devient un monolithe de code en spaghetti...Comment pouvons nous déterminer quand il est temps de modulariser notre logiciel ? Comment prendre la décision de le scinder en plusieurs modules ou services ? Comment gérer la différenciation progressive de nos modèles métiers tout en évitant les couplages inutiles ? Il n'est pas facile de découper son logiciel en deux car déterminer les bonnes frontières peut s'avérer être compliqué.","Découvrez avec nous le Model Mitosis, une approche dynamique utilisée pour diviser un modèle métier en plusieurs modèles qui seront façonnés et découplés de manière itérative.Gagnez en flexibilité afin de mieux déterminer quand diviser votre logiciel en plusieurs services tout en évitant de payer les coût d'échelle des microservices ou bien de devenir un monolithe distribué."]}},events:[{id:"dddeu2023",date:"2023-06-07",video:"https://www.youtube.com/embed/VO6BSb52K5g?si=W-xjWtX9NUYcqFCU"},{id:"carrefourdevsummit2023",date:"2023-09-07"},{id:"dddfr102023",date:"2023-10-17"},{id:"xcraft2023",date:"2023-11-03",video:"https://www.youtube.com/embed/w8tEZvgCIyc?si=rbv5aB6u1XCQAZo_"},{id:"vxcern24",date:"2024-01-23",video:"https://www.youtube.com/embed/ydatnnHo0lw?si=wq8jNwJm3Bva_Q_o"},{id:"devoxxfr2024",date:"2024-04-19",video:"https://www.youtube.com/embed/HNQJW5iMZgQ?si=KQVPBQKYU-Opv_43"},{id:"mixit2024",date:"2024-04-26",video:"https://www.youtube.com/embed/vBmMsN83ZTk"},{id:"geeconkrakow2024",date:"2024-05-15",video:"https://www.youtube.com/embed/HPNR6CYwt2k"},{id:"craftconf2024",date:"2024-05-30",video:"https://www.youtube.com/embed/g6_-p-Bpy-E"},{id:"alpescraft24",date:"2024-06-06"},{id:"devfestlille2024",date:"2024-06-07",video:"https://www.youtube.com/embed/EY6Bg80UDHA"},{id:"vxlu2024",date:"2024-06-21",video:"https://www.youtube.com/embed/YzKgDEniFy0?si=4wRKWRxgUz8c84rZ"},,{id:"breizhcamp2024",date:"2024-06-27",video:"https://www.youtube.com/embed/57AQRHo3HEw"},{id:"scrennes092024",date:"2024-09-18"},{id:"jfall2024",date:"2024-11-07",video:"https://www.youtube.com/embed/EjqkTqCHrHQ?si=tXGkgQ8kbu0Vfslr"},{id:"devoxxbe2024",date:"2024-10-11",video:"https://www.youtube.com/embed/_0AJM1oErU8?si=OLaGLCYyb00lLVBT"},{id:"codeursenseine2024",date:"2024-11-21"},{id:"devopsdday2025",date:"2025-01-30"},{id:"bbl-axa2025",date:"2025-02-10"},{id:"vxzu2025",date:"2025-03-25",video:"https://www.youtube.com/embed/Estmz1P9wCU?si=sIi2XnTcBBOThuYk"},{id:"exploreddd2025",date:"2025-04-16"},{id:"devoxxpl2025",date:"2025-06-12"},{id:"atbdx2025",date:"2025-10-30",video:"https://www.youtube.com/embed/F28vNyAQBQM"},{id:"devoxxuk2026",date:"2026-05-06"},{id:"devbcn2026",date:"2026-06-17"}],materials:[{type:"SLIDES",url:"https://slides.com/julientopcu/model-mitosis-a-dynamic-pattern-to-deal-with-model-tensions",language:"english"},{type:"SLIDES",url:"https://slides.com/julientopcu/model-mitosis-ne-plus-se-tromper-entre-les-microservices-et-le-monolithe",language:"french"},{type:"REPOSITORY",url:"https://gitlab.com/beyondxscratch/model-mitosis",icon:"https://gitlab.com/uploads/-/system/project/avatar/45417640/png-transparent-boba-fett-mandalorian-star-wars-darth-bane-logo-star-wars-mammal-hand-logo-thumbnail.png"}],interviews:[],feedbacks:[],tweets:[]}},JX7q:function(e,t,i){"use strict";function n(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}i.d(t,"a",(function(){return n}))}
2,JXoD:function(e,t){e.exports={id:"conway-law",creationDate:"2022-09-02",defaultLanguage:"english",languages:{english:{defaultEvent:"devoxxbe2023",title:"Conway's Law: When Best Practices Are Not Enough",description:["Your users are still struggling to retrieve the information they need, despite you have done everything to model your domain and ease the user experience?","Although you follow best practices, did you ever noticed that the software often deviates from the product design, the technical vision and sometimes the software quality is even below expectations?","What if we told you that all of this is linked ? There is a force that has an important influence on your product, your user experience, the quality of your software and your architecture !","During this talk, come and discover the Conway's Law that has a magical power over what you build, whatever your job profile is. We will see the impacts of this law on the different aspects of the software based on scientific studies and feedbacks from the field collected over the years."]},french:{defaultEvent:"devoxxfr2023",title:"Loi de Conway : Lorsque les bonnes pratiques ne suffisent pas",description:["Des utilisateurs qui ont toujours du mal à récupérer les informations dont ils ont besoin, alors que vous avez mis le paquet sur l'expérience utilisateur ? La frustration de voir qu'une fonctionnalité implémentée est rarement la solution fonctionnelle idéale que vous aviez défini, car il y a toujours un \"mais\" ? Ou plus techniquement, avez-vous des APIs découpées d'une manière qui semble au final arbitraire et qui ne suit pas le métier ? La sensation que votre organisation est orthogonale à vos objectifs ?","N'avez-vous jamais remarqué, que bien que vous soyez agile et vous suivez les bonnes pratiques, le logiciel qu'on construit s'écarte souvent de la vision produit, technique et parfois même des besoins de l'utilisateur que l'on a pourtant passé du temps à récolter ? Et si on vous disait que tout cela est lié, et qu'il existe une force qui a une influence certaine sur votre produit, votre expérience utilisateur et votre architecture ?","Lors de ce talk venez découvrir la Loi de Conway, cette force méconnue qui a un pouvoir magique sur ce que vous construisez quel que soit votre métier.Nous verrons ses impacts sur les différents aspects du logiciel et nous apprendrons comment l'apprivoiser."]}},events:[{id:"flowcon2022",date:"2022-10-18",video:"https://www.youtube.com/embed/GyWUN27Ercg"},{id:"journeeagilite2022",date:"2022-12-13"},{id:"atrennes2022",date:"2022-12-16",video:"https://www.youtube.com/embed/3PmBivng5UA"},{id:"tnt23",date:"2023-01-19",video:"https://www.youtube.com/embed/dcGPq7La5JY"},{id:"devoxxfr2023",date:"2023-04-13",video:"https://www.youtube.com/embed/Kx7XOqrPoWk"},{id:"mixit2023",date:"2023-04-14",video:"https://player.vimeo.com/video/822112047"},{id:"worldlinetechforum2023",date:"2023-07-04",video:"https://vimeo.com/842924522/9768c5149e",slides:"https://slides.com/julientopcu/conways-law-when-your-design-falls-out-with-your-organization"},{id:"cloudsud2023",date:"2023-09-14"},{id:"devoxxbe2023",date:"2023-10-05",slides:"https://slides.com/julientopcu/conways-law-when-your-design-falls-out-with-your-organization",video:"https://www.youtube.com/embed/si2amEqforU?si=faWMzQ09GkdUEarj"},{id:"codeursenseine2023",date:"2023-10-26",video:"https://www.youtube.com/embed/RhZnLogekzQ?si=GF5_K7lNdx53vRc-"},{id:"atbdx2023",date:"2023-10-27",video:"https://www.youtube.com/embed/b5D_wpPgyeA?si=7DsXl3383hYMl0Mx"},{id:"devfestdijon2023",date:"2023-12-08"},{id:"vxti24",date:"2024-01-19",video:"https://www.youtube.com/embed/KUYZpmzjEeM?si=fMmRrKC-8ooJe8JE"},{id:"vxcern24",date:"2024-01-22",video:'https://www.youtube.com/embed/c03WwH82NQI?si=2UV_NNidcGfrLfHQ"'},{id:"snowcamp2024",date:"2024-02-01"},{id:"atniort2024",date:"2024-03-21"},{id:"jnation2024",date:"2024-06-04",video:"https://www.youtube.com/embed/bHcas0MNozs"},{id:"breizhcamp2024",date:"2024-06-26",video:"https://www.youtube.com/embed/5OVctDglYEI"},{id:"agre2024",date:"2024-11-20"},{id:"ouestfrance2025",date:"2025-03-06"},{id:"msacraftday2025",date:"2025-03-11"},{id:"kandddinsky2025",date:"2025-10-22",video:"https://www.youtube.com/embed/c8UY4xQYdy8"}],materials:[{type:"SLIDES",url:"https://slides.com/julientopcu/loi-de-conway-lorsque-votre-conception-produit-se-fche-avec-votre-organisation",language:"french"},{type:"SLIDES",url:"https://slides.com/julientopcu/conways-law-when-your-design-falls-out-with-your-organization",language:"english"}],interviews:[],feedbacks:[],tweets:[]}},LybE:function(e,t,i){"use strict";i.d(t,"a",(function(){return s}));i("KQm4"),i("wx14");var n=i("U8pU"),r=(i("bv9d"),{xs:0,sm:600,md:960,lg:1280,xl:1920}),o={keys:["xs","sm","md","lg","xl"],up:function(e){return"@media (min-width:".concat(r[e],"px)")}};function s(e,t,i){if(Array.isArray(t)){var r=e.theme.breakpoints||o;return t.reduce((function(e,n,o){return e[r.up(r.keys[o])]=i(t[o]),e}),{})}if("object"===Object(n.a)(t)){var s=e.theme.breakpoints||o;return Object.keys(t).reduce((function(e,n){return e[s.up(n)]=i(t[n]),e}),{})}return i(t)}},OHcd:function(e,t,i){"use strict";i.d(t,"a",(function(){return a}));var n=i("q1tI"),r=i.n(n);function o(e){let t;try{t=i("6rCl")(`./${e}.png`)}catch(n){console.log(n),t=i("852U")}return t}function s({speaker:e}){return r.a.createElement("a",{className:"speaker-profile",href:e.profile},r.a.createElement("div",{className:"mic"}
2,"ðï¸"),r.a.createElement("img",{className:"speaker-img",title:"co-speaker",src:o(e.id)})," ",r.a.createElement("div",{className:"speaker-name"},e.name))}function a({cospeakers:e}){return void 0!==e?r.a.createElement("div",{className:"cospeakers"},r.a.createElement("div",{className:"speaker"},e.map(e=>r.a.createElement(s,{key:e.id,speaker:e})))):null}},P83p:function(e,t){e.exports={id:"junit5",creationDate:"2019-04-27",defaultLanguage:"english",cospeakers:[{id:"ju_derancourt",name:"Juliette de Rancourt",profile:"https://www.juliette.tech/"}],languages:{english:{defaultEvent:"devoxxbe2019",title:"JUnit: time to shift into 5th gear!",description:["Did you know that JUnit 5 is almost two years old?","However, a large number of Java projects are still tested with JUnit 4, which came out ... 13 years ago! A lot of things have changed since 2006, Java went from 5th to 12th version! Isn't it time to bring our tests up to date?","The JUnit team took advantage of this opportunity to completely rethink the framework. Many features have been added or reworked in order to fit with the new paradigms of the Java ecosystem.","During this talk, we'll see that even though JUnit 5 introduced many changes, the mechanisms of retro compatibility guarantee an easy and progressive migration."]},french:{defaultEvent:"devoxxfr2019",title:"JUnit : Il serait temps de passer la 5ème !",description:["Saviez-vous que JUnit 5 a déjà plus dâun an ?","Pourtant, un grand nombre de projets Java sont encore testés avec JUnit 4, qui est sorti⦠il y a 13 ans ! Enormément de choses ont évolué depuis 2006, Java a pris 6 versions ! Ne serait-il donc pas temps de remettre nos tests au goût du jour ?","Lâéquipe JUnit a profité de cette 5ème version pour restructurer complètement le framework. De nombreuses features ont été ajoutées ou retravaillées afin de sâadapter aux nouveaux paradigmes de lâécosystème Java. Lors de ce talk, nous verrons que même si tout cela a introduit beaucoup de changements, les mécanismes de rétro et post compatibilité garantissent une migration facile et progressive."]}},events:[{id:"bbl-societegenerale042019"},{id:"bbl-societegenerale062019"},{id:"devoxxfr2019",url:"https://cfp.devoxx.fr/2019/talk/TPC-2275/JUnit_:_il_serait_temps_de_passer_la_5eme_!",video:"https://www.youtube.com/embed/EfxwS54hdkM",date:"2019-04-18"},{id:"carbon062019"},{id:"vxlu2019",video:"https://www.youtube.com/embed/q9wxteKmqdo",date:"2019-06-20"},{id:"devoxxbe2019",date:"2019-11-07",url:"https://devoxx.be/talk/?id=17601",video:"https://www.youtube.com/embed/Fca8yUIJfd0"},{id:"parisjug122019",date:"2019-12-10",video:"https://www.youtube.com/embed/2zRv3_N7KOA"},{id:"snowcamp2020",date:"2020-01-23",url:"https://sched.co/XoOC"}],materials:[{type:"SLIDES",url:"https://slides.com/julientopcu/junit-il-serait-temps-de-passer-la-5me",language:"french"},{type:"SLIDES",url:"https://slides.com/julientopcu/junit-time-to-shift-into-5th-gear",language:"english"},{type:"REPOSITORY",url:"https://gitlab.com/crafts-records/remember-me",icon:"https://assets.gitlab-static.net/uploads/-/system/project/avatar/11340529/remember-me.png"}],interviews:[],feedbacks:[{url:"https://mailchi.mp/4b39a6614115/0dw1htrqpp-1432853",language:"french"},{url:"https://blog.ineat-conseil.fr/2019/05/devoxx-france-2019-jour-2/",language:"french"},{url:"https://jzanon.github.io/gloseDeDev/2019/05/05/devoxx-france-2019/",language:"french"},{url:"https://ahdak.github.io/blog/13-devoxx-junit-5/",language:"french"},{url:"http://cocault.over-blog.com/2020/03/junit-on-passe-la-cinquieme.html"}],tweets:[{id:"1141808109956018176"},{id:"1141734031484235776"},{id:"1129408772869431302"},{id:"1126070353497862144"},{id:"1126067025183412225"},{id:"1119871145749225475"},{id:"1119707546565193729"},{id:"1119615467088433152"},{id:"1119609572375834632"},{id:"1119308316130324480"},{id:"1118983164964352000"},{id:"1118972464183353344"},{id:"1118966111427530758"},{id:"1118965661764673537"},{id:"1118954141580238848"},{id:"1118916478747729920"},{id:"1118908249267417089"},{id:"1118907211839877120"}]}},PUTT:function(e,t){e.exports={id:"nodejs-ddd",creationDate:"2021-06-29",defaultLanguage:"french",cospeakers:[{id:"adrienjoly",name:"Adrien Joly",profile:"https://adrienjoly.com/"}],languages:{french:{defaultEvent:"bxs-1",title:"Développer en NodeJS avec le Domain-Driven Design",description:["Si vous voulez apprendre les bases du Domain-Driven Design, du Behavior-Driven Development et de l'Architecture Hexagonale - et/ou si tout simplement vous voulez voir comment tout cela s'implémente en NodeJs - ce live stream est fait pour vous !","Adrien Joly, notre guest, est un Software Crafter expert de l'écosystème NodeJs. Il veillera au grain quand à respecter l'état de l'art dans cette technologie.","Votre host, Julien Topçu est spécialisé dans les techniques de développement orienté métier. Il sera garant de la méthode lors de ce live code et pourra avec Adrien répondre à toutes vos questions.","Le Domain-Driven Design (DDD) est l'une des techniques phares de la conception de logiciels orientés métier. Elle remet la logique métier au centre du développement logiciel, en offrant des patterns tactiques permettant le meilleur alignement entre les besoins des utilisateurs et le code produit.","Le Behavior-Driven Development (BDD
2) est une façon de penser, concevoir et de coder les fonctionnalités pilotée par les comportements attendus. Sa double boucle, ATDD/TDD permet d'outrepasser les limitations du bottom-up inhérentes au Test-Driven Development seul.","L'Architecture Hexagonale (un pattern de Clean Architecture) permet de pérenniser son code métier en le rendant agnostique de tout code technique. Plus de problème de régression fonctionnelle lorsque l'on met à jour ou change un Framework. Cette architecture modulaire permet de limiter au minimum les impacts des couches techniques sur le domaine métier.","Retrouvez nous sur notre live stream, où vous pourrez interagir avec nous en direct lors de ce live coding et poser toutes vos questions"]}},events:[{id:"bxs-1",video:"https://www.youtube.com/embed/01G9YqAOQFg"}],materials:[{type:"REPOSITORY",url:"https://gitlab.com/beyondxscratch/nodejs-with-domain-driven-design",icon:"https://beyondxscratch.com/wp-content/uploads/2019/08/logo-white-1.png"}],interviews:[],feedbacks:[]}},"R/WZ":function(e,t,i){"use strict";var n=i("wx14"),r=i("RD7I"),o=i("cNwE");t.a=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object(r.a)(e,Object(n.a)({defaultTheme:o.a},t))}},RD7I:function(e,t,i){"use strict";i.d(t,"a",(function(){return mi}));var n=i("Ff2n"),r=i("wx14"),o=i("q1tI"),s=i.n(o),a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l="object"===("undefined"==typeof window?"undefined":a(window))&&"object"===("undefined"==typeof document?"undefined":a(document))&&9===document.nodeType;var d=i("vuIU"),u=i("dI71"),c=i("JX7q"),p=i("zLVn"),m={}.constructor;function f(e){if(null==e||"object"!=typeof e)return e;if(Array.isArray(e))return e.map(f);if(e.constructor!==m)return e;var t={};for(var i in e)t[i]=f(e[i]);return t}function h(e,t,i){void 0===e&&(e="unnamed");var n=i.jss,r=f(t),o=n.plugins.onCreateRule(e,r,i);return o||(e[0],null)}var v=function(e,t){for(var i="",n=0;n<e.length&&"!important"!==e[n];n++)i&&(i+=t),i+=e[n];return i},g=function(e){if(!Array.isArray(e))return e;var t="";if(Array.isArray(e[0]))for(var i=0;i<e.length&&"!important"!==e[i];i++)t&&(t+=", "),t+=v(e[i]," ");else t=v(e,", ");return"!important"===e[e.length-1]&&(t+=" !important"),t};function b(e){return e&&!1===e.format?{linebreak:"",space:""}:{linebreak:"\n",space:" "}}function y(e,t){for(var i="",n=0;n<t;n++)i+=" ";return i+e}function w(e,t,i){void 0===i&&(i={});var n="";if(!t)return n;var r=i.indent,o=void 0===r?0:r,s=t.fallbacks;!1===i.format&&(o=-1/0);var a=b(i),l=a.linebreak,d=a.space;if(e&&o++,s)if(Array.isArray(s))for(var u=0;u<s.length;u++){var c=s[u];for(var p in c){var m=c[p];null!=m&&(n&&(n+=l),n+=y(p+":"+d+g(m)+";",o))}}else for(var f in s){var h=s[f];null!=h&&(n&&(n+=l),n+=y(f+":"+d+g(h)+";",o))}for(var v in t){var w=t[v];null!=w&&"fallbacks"!==v&&(n&&(n+=l),n+=y(v+":"+d+g(w)+";",o))}return(n||i.allowEmpty)&&e?(n&&(n=""+l+n+l),y(""+e+d+"{"+n,--o)+y("}",o)):n}var x=/([[\].#*$><+~=|^:(),"'`\s])/g,j="undefined"!=typeof CSS&&CSS.escape,k=function(e){return j?j(e):e.replace(x,"\\$1")},S=function(){function e(e,t,i){this.type="style",this.isProcessed=!1;var n=i.sheet,r=i.Renderer;this.key=e,this.options=i,this.style=t,n?this.renderer=n.renderer:r&&(this.renderer=new r)}return e.prototype.prop=function(e,t,i){if(void 0===t)return this.style[e];var n=!!i&&i.force;if(!n&&this.style[e]===t)return this;var r=t;i&&!1===i.process||(r=this.options.jss.plugins.onChangeValue(t,e,this));var o=null==r||!1===r,s=e in this.style;if(o&&!s&&!n)return this;var a=o&&s;if(a?delete this.style[e]:this.style[e]=r,this.renderable&&this.renderer)return a?this.renderer.removeProperty(this.renderable,e):this.renderer.setProperty(this.renderable,e,r),this;var l=this.options.sheet;return l&&l.attached,this},e}(),D=function(e){function t(t,i,n){var r;r=e.call(this,t,i,n)||this;var o=n.selector,s=n.scoped,a=n.sheet,l=n.generateId;return o?r.selectorText=o:!1!==s&&(r.id=l(Object(c.a)(Object(c.a)(r)),a),r.selectorText="."+k(r.id)),r}Object(u.a)(t,e);var i=t.prototype;return i.applyTo=function(e){var t=this.renderer;if(t){var i=this.toJSON();for(var n in i)t.setProperty(e,n,i[n])}return this},i.toJSON=function(){var e={};for(var t in this.style){var i=this.style[t];"object"!=typeof i?e[t]=i:Array.isArray(i)&&(e[t]=g(i))}return e},i.toString=function(e){var t=this.options.sheet,i=!!t&&t.options.link?Object(r.a)({},e,{allowEmpty:!0}):e;return w(this.selectorText,this.style,i)},Object(d.a)(t,[{key:"selector",set:function(e){if(e!==this.selectorText){this.selectorText=e;var t=this.renderer,i=this.renderable;if(i&&t)t.setSelector(i,e)||t.replaceRule(i,this)}},get:function(){return this.selectorText}}]),t}(S),M={onCreateRule:function(e,t,i){return"@"===e[0]||i.parent&&"keyframes"===i.parent.type?null:new D(e,t,i)}},O={indent:1,children:!0},I=/@([\w-]+)/,C=function(){function e(e,t,i){this.type="conditional",this.isProcessed=!1,this.key=e;var n=e.match(I);for(var o in this.at=n?n[1]:"unknown",this.query=i.name||"@"+this.at,this.options=i,this.rules=new X(Object(r.a)({},i,{parent:this})),t)this.rules.add(o,t[o]);this.rules.process()}var t=e.prototype;return t.getRule=function(e){return this.rules.get(e)},t.indexOf=function(e){return this.rules.indexOf(e)},t.addRule=function(e,t,i){var n=this.rules.add(e,t,i);return n?(this.options.jss.plugins.onProcessRule(n),n):null},t.replaceRule=function(e,t,i){var n=this.rules.replace(e,t,i);return n&&this.options.jss.plugins.onProcessRule(n),n},t.toString=function(e){void 0===e&&(e=O);var t=b(e).linebreak;if(null==e.indent&&(e.indent=O.indent),null==e.children&&(e.children=O.children),!1===e.children)return this.query+" {}";var i=this.rules.toString(e);return i?this.query+" {"+t+i+t+"}":""},e}(),z=/@container|@media|@supports\s+/,P={onCreateRule:function(e,t,i){return z.test(e)?new C(e,t,i):null}},A={indent:1,children:!0},E=/@keyframes\s+([\w-]+)/,T=function(){function e(e,t,i){this.type="keyframes",this.at="@keyframes",this.isProcessed=!1;var n=e.match(E);n&&n[1]?this.name=n[1]:this.name="noname",this.key=this.type+"-"+this.name,this.options=i;var o=i.scoped,s=i.sheet,a=i.generateId;for(var l in this.id=!1===o?this.name:k(a(this,s)),this.rules=new X(Object(r.a)({},i,{parent:this})),t)this.rules.add(l,t[l],Object(r.a)({},i,{parent:this}));this.rules.process()}return e.prototype.toString=function(e){void 0===e&&(e=A);var t=b(e).linebreak;if(null==e.indent&&(e.indent=A.indent),null==e.children&&(e.children=A.children),!1===e.children)return this.at+" "+this.id+" {}";var i=this.rules.toString(e);return i&&(i=""+t+i+t),this.at+" "+this.id+" {"+i+"}"},e}(),R=/@keyframes\s+/,q=/\$([\w-]+)/g,N=function(e,t){return"string"==typeof e?e.replace(q,(function(e,i){return i in t?t[i]:e})):e},L=function(e,t,i){var n=e[t],r=N(n,i);r!==n&&(e[t]=r)},B={onCreateRule:function(e,t,i){return"string"==typeof e&&R.test(e)?new T(e,t,i):null},onProcessStyle:function(e,t,i){return"style"===t.type&&i?("animation-name"in e&&L(e,"animation-name",i.keyframes),"animation"in e&&L(e,"animation",i.keyframes),e):e},onChangeValue:function(e,t,i){var n=i.options.sheet;if(!n)return e;switch(t){case"animation":case"animation-name":return N(e,n.keyframes);default:return e}}},J=function(e){function t(){return e.apply(this,arguments)||this}return Object(u.a)(t,e),t.prototype.toString=function(e){var t=this.options.sheet,i=!!t&&t.options.link?Object(r.a)({},e,{allowEmpty:!0}):e;return w(this.key,this.style,i)},t}(S),H={onCreateRule:function(e,t,i){return i.parent&&"keyframes"===i.parent.type?new J(e,t,i):null}},U=function(){function e(e,t,i){this.type="font-face",this.at="@font-face",this.isProcessed=!1,this.key=e,this.style=t,this.options=i}return e.prototype.toString=function(e){var t=b(e).linebreak;if(Array.isArray(this.style)){for(var i="",n=0;n<this.style.length;n++)i+=w(this.at,this.style[n]),this.style[n+1]&&(i+=t);return i}return w(this.at,this.style,e)},e}(),F=/@font-face/,W={onCreateRule:function(e,t,i){return F.test(e)?new U(e,t,i):null}},Y=function(){function e(e,t,i){this.type="viewport",this.at="@viewport",this.isProcessed=!1,this.key=e,this.style=t,this.options=i}return e.prototype.toString=function(e){return w(this.key,this.style,e)},e}(),V={onCreateRule:function(e,t,i){return"@viewport"===e||"@-ms-v
2iewport"===e?new Y(e,t,i):null}},_=function(){function e(e,t,i){this.type="simple",this.isProcessed=!1,this.key=e,this.value=t,this.options=i}return e.prototype.toString=function(e){if(Array.isArray(this.value)){for(var t="",i=0;i<this.value.length;i++)t+=this.key+" "+this.value[i]+";",this.value[i+1]&&(t+="\n");return t}return this.key+" "+this.value+";"},e}(),G={"@charset":!0,"@import":!0,"@namespace":!0},Z=[M,P,B,H,W,V,{onCreateRule:function(e,t,i){return e in G?new _(e,t,i):null}}],Q={process:!0},K={force:!0,process:!0},X=function(){function e(e){this.map={},this.raw={},this.index=[],this.counter=0,this.options=e,this.classes=e.classes,this.keyframes=e.keyframes}var t=e.prototype;return t.add=function(e,t,i){var n=this.options,o=n.parent,s=n.sheet,a=n.jss,l=n.Renderer,d=n.generateId,u=n.scoped,c=Object(r.a)({classes:this.classes,parent:o,sheet:s,jss:a,Renderer:l,generateId:d,scoped:u,name:e,keyframes:this.keyframes,selector:void 0},i),p=e;e in this.raw&&(p=e+"-d"+this.counter++),this.raw[p]=t,p in this.classes&&(c.selector="."+k(this.classes[p]));var m=h(p,t,c);if(!m)return null;this.register(m);var f=void 0===c.index?this.index.length:c.index;return this.index.splice(f,0,m),m},t.replace=function(e,t,i){var n=this.get(e),o=this.index.indexOf(n);n&&this.remove(n);var s=i;return-1!==o&&(s=Object(r.a)({},i,{index:o})),this.add(e,t,s)},t.get=function(e){return this.map[e]},t.remove=function(e){this.unregister(e),delete this.raw[e.key],this.index.splice(this.index.indexOf(e),1)},t.indexOf=function(e){return this.index.indexOf(e)},t.process=function(){var e=this.options.jss.plugins;this.index.slice(0).forEach(e.onProcessRule,e)},t.register=function(e){this.map[e.key]=e,e instanceof D?(this.map[e.selector]=e,e.id&&(this.classes[e.key]=e.id)):e instanceof T&&this.keyframes&&(this.keyframes[e.name]=e.id)},t.unregister=function(e){delete this.map[e.key],e instanceof D?(delete this.map[e.selector],delete this.classes[e.key]):e instanceof T&&delete this.keyframes[e.name]},t.update=function(){var e,t,i;if("string"==typeof(arguments.length<=0?void 0:arguments[0])?(e=arguments.length<=0?void 0:arguments[0],t=arguments.length<=1?void 0:arguments[1],i=arguments.length<=2?void 0:arguments[2]):(t=arguments.length<=0?void 0:arguments[0],i=arguments.length<=1?void 0:arguments[1],e=null),e)this.updateOne(this.get(e),t,i);else for(var n=0;n<this.index.length;n++)this.updateOne(this.index[n],t,i)},t.updateOne=function(t,i,n){void 0===n&&(n=Q);var r=this.options,o=r.jss.plugins,s=r.sheet;if(t.rules instanceof e)t.rules.update(i,n);else{var a=t.style;if(o.onUpdate(i,t,s,n),n.process&&a&&a!==t.style){for(var l in o.onProcessStyle(t.style,t,s),t.style){var d=t.style[l];d!==a[l]&&t.prop(l,d,K)}for(var u in a){var c=t.style[u],p=a[u];null==c&&c!==p&&t.prop(u,null,K)}}}},t.toString=function(e){for(var t="",i=this.options.sheet,n=!!i&&i.options.link,r=b(e).linebreak,o=0;o<this.index.length;o++){var s=this.index[o].toString(e);(s||n)&&(t&&(t+=r),t+=s)}return t},e}(),$=function(){function e(e,t){for(var i in this.attached=!1,this.deployed=!1,this.classes={},this.keyframes={},this.options=Object(r.a)({},t,{sheet:this,parent:this,classes:this.classes,keyframes:this.keyframes}),t.Renderer&&(this.renderer=new t.Renderer(this)),this.rules=new X(this.options),e)this.rules.add(i,e[i]);this.rules.process()}var t=e.prototype;return t.attach=function(){return this.attached||(this.renderer&&this.renderer.attach(),this.attached=!0,this.deployed||this.deploy()),this},t.detach=function(){return this.attached?(this.renderer&&this.renderer.detach(),this.attached=!1,this):this},t.addRule=function(e,t,i){var n=this.queue;this.attached&&!n&&(this.queue=[]);var r=this.rules.add(e,t,i);return r?(this.options.jss.plugins.onProcessRule(r),this.attached?this.deployed?(n?n.push(r):(this.insertRule(r),this.queue&&(this.queue.forEach(this.insertRule,this),this.queue=void 0)),r):r:(this.deployed=!1,r)):null},t.replaceRule=function(e,t,i){var n=this.rules.get(e);if(!n)return this.addRule(e,t,i);var r=this.rules.replace(e,t,i);return r&&this.options.jss.plugins.onProcessRule(r),this.attached?this.deployed?(this.renderer&&(r?n.renderable&&this.renderer.replaceRule(n.renderable,r):this.renderer.deleteRule(n)),r):r:(this.deployed=!1,r)},t.insertRule=function(e){this.renderer&&this.renderer.insertRule(e)},t.addRules=function(e,t){var i=[];for(var n in e){var r=this.addRule(n,e[n],t);r&&i.push(r)}return i},t.getRule=function(e){return this.rules.get(e)},t.deleteRule=function(e){var t="object"==typeof e?e:this.rules.get(e);return!(!t||this.attached&&!t.renderable)&&(this.rules.remove(t),!(this.attached&&t.renderable&&this.renderer)||this.renderer.deleteRule(t.renderable))},t.indexOf=function(e){return this.rules.indexOf(e)},t.deploy=function(){return this.renderer&&this.renderer.deploy(),this.deployed=!0,this},t.update=function(){var e;return(e=this.rules).update.apply(e,arguments),this},t.updateOne=function(e,t,i){return this.rules.updateOne(e,t,i),this},t.toString=function(e){return this.rules.toString(e)},e}(),ee=function(){function e(){this.plugins={internal:[],external:[]},this.registry={}}var t=e.prototype;return t.onCreateRule=function(e,t,i){for(var n=0;n<this.registry.onCreateRule.length;n++){var r=this.registry.onCreateRule[n](e,t,i);if(r)return r}return null},t.onProcessRule=function(e){if(!e.isProcessed){for(var t=e.options.sheet,i=0;i<this.registry.onProcessRule.length;i++)this.registry.onProcessRule[i](e,t);e.style&&this.onProcessStyle(e.style,e,t),e.isProcessed=!0}},t.onProcessStyle=function(e,t,i){for(var n=0;n<this.registry.onProcessStyle.length;
vendor: 5,340 bytes, line 2
2n++)t.style=this.registry.onProcessStyle[n](t.style,t,i)},t.onProcessSheet=function(e){for(var t=0;t<this.registry.onProcessSheet.length;t++)this.registry.onProcessSheet[t](e)},t.onUpdate=function(e,t,i,n){for(var r=0;r<this.registry.onUpdate.length;r++)this.registry.onUpdate[r](e,t,i,n)},t.onChangeValue=function(e,t,i){for(var n=e,r=0;r<this.registry.onChangeValue.length;r++)n=this.registry.onChangeValue[r](n,t,i);return n},t.use=function(e,t){void 0===t&&(t={queue:"external"});var i=this.plugins[t.queue];-1===i.indexOf(e)&&(i.push(e),this.registry=[].concat(this.plugins.external,this.plugins.internal).reduce((function(e,t){for(var i in t)i in e&&e[i].push(t[i]);return e}),{onCreateRule:[],onProcessRule:[],onProcessStyle:[],onProcessSheet:[],onChangeValue:[],onUpdate:[]}))},e}(),te=new(function(){function e(){this.registry=[]}var t=e.prototype;return t.add=function(e){var t=this.registry,i=e.options.index;if(-1===t.indexOf(e))if(0===t.length||i>=this.index)t.push(e);else for(var n=0;n<t.length;n++)if(t[n].options.index>i)return void t.splice(n,0,e)},t.reset=function(){this.registry=[]},t.remove=function(e){var t=this.registry.indexOf(e);this.registry.splice(t,1)},t.toString=function(e){for(var t=void 0===e?{}:e,i=t.attached,n=Object(p.a)(t,["attached"]),r=b(n).linebreak,o="",s=0;s<this.registry.length;s++){var a=this.registry[s];null!=i&&a.attached!==i||(o&&(o+=r),o+=a.toString(n))}return o},Object(d.a)(e,[{key:"index",get:function(){return 0===this.registry.length?0:this.registry[this.registry.length-1].options.index}}]),e}()),ie="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window&&window.Math===Math?window:"undefined"!=typeof self&&self.Math===Math?self:Function("return this")(),ne="2f1acc6c3a606b082e5eef5e54414ffb";null==ie[ne]&&(ie[ne]=0);var re=ie[ne]++,oe=function(e){void 0===e&&(e={});var t=0;return function(i,n){t+=1;var r="",o="";return n&&(n.options.classNamePrefix&&(o=n.options.classNamePrefix),null!=n.options.jss.id&&(r=String(n.options.jss.id))),e.minify?""+(o||"c")+re+r+t:o+i.key+"-"+re+(r?"-"+r:"")+"-"+t}},se=function(e){var t;return function(){return t||(t=e()),t}},ae=function(e,t){try{return e.attributeStyleMap?e.attributeStyleMap.get(t):e.style.getPropertyValue(t)}catch(i){return""}},le=function(e,t,i){try{var n=i;if(Array.isArray(i)&&(n=g(i)),e.attributeStyleMap)e.attributeStyleMap.set(t,n);else{var r=n?n.indexOf("!important"):-1,o=r>-1?n.substr(0,r-1):n;e.style.setProperty(t,o,r>-1?"important":"")}}catch(s){return!1}return!0},de=function(e,t){try{e.attributeStyleMap?e.attributeStyleMap.delete(t):e.style.removeProperty(t)}catch(i){}},ue=function(e,t){return e.selectorText=t,e.selectorText===t},ce=se((function(){return document.querySelector("head")}));function pe(e){var t=te.registry;if(t.length>0){var i=function(e,t){for(var i=0;i<e.length;i++){var n=e[i];if(n.attached&&n.options.index>t.index&&n.options.insertionPoint===t.insertionPoint)return n}return null}(t,e);if(i&&i.renderer)return{parent:i.renderer.element.parentNode,node:i.renderer.element};if((i=function(e,t){for(var i=e.length-1;i>=0;i--){var n=e[i];if(n.attached&&n.options.insertionPoint===t.insertionPoint)return n}return null}(t,e))&&i.renderer)return{parent:i.renderer.element.parentNode,node:i.renderer.element.nextSibling}}var n=e.insertionPoint;if(n&&"string"==typeof n){var r=function(e){for(var t=ce(),i=0;i<t.childNodes.length;i++){var n=t.childNodes[i];if(8===n.nodeType&&n.nodeValue.trim()===e)return n}return null}(n);if(r)return{parent:r.parentNode,node:r.nextSibling}}return!1}var me=se((function(){var e=document.querySelector('meta[property="csp-nonce"]');return e?e.getAttribute("content"):null})),fe=function(e,t,i){try{"insertRule"in e?e.insertRule(t,i):"appendRule"in e&&e.appendRule(t)}catch(n){return!1}return e.cssRules[i]},he=function(e,t){var i=e.cssRules.length;return void 0===t||t>i?i:t},ve=function(){function e(e){this.getPropertyValue=ae,this.setProperty=le,this.removeProperty=de,this.setSelector=ue,this.hasInsertedRules=!1,this.cssRules=[],e&&te.add(e),this.sheet=e;var t=this.sheet?this.sheet.options:{},i=t.media,n=t.meta,r=t.element;this.element=r||function(){var e=document.createElement("style");return e.textContent="\n",e}(),this.element.setAttribute("data-jss",""),i&&this.element.setAttribute("media",i),n&&this.element.setAttribute("data-meta",n);var o=me();o&&this.element.setAttribute("nonce",o)}var t=e.prototype;return t.attach=function(){if(!this.element.parentNode&&this.sheet){!function(e,t){var i=t.insertionPoint,n=pe(t);if(!1!==n&&n.parent)n.parent.insertBefore(e,n.node);else if(i&&"number"==typeof i.nodeType){var r=i,o=r.parentNode;o&&o.insertBefore(e,r.nextSibling)}else ce().appendChild(e)}(this.element,this.sheet.options);var e=Boolean(this.sheet&&this.sheet.deployed);this.hasInsertedRules&&e&&(this.hasInsertedRules=!1,this.deploy())}},t.detach=function(){if(this.sheet){var e=this.element.parentNode;e&&e.removeChild(this.element),this.sheet.options.link&&(this.cssRules=[],this.element.textContent="\n")}},t.deploy=function(){var e=this.sheet;e&&(e.options.link?this.insertRules(e.rules):this.element.textContent="\n"+e.toString()+"\n")},t.insertRules=function(e,t){for(var i=0;i<e.index.length;i++)this.insertRule(e.index[i],i,t)},t.insertRule=function(e,t,i){if(void 0===i&&(i=this.element.sheet),e.rules){var n=e,r=i;
2if("conditional"===e.type||"keyframes"===e.type){var o=he(i,t);if(!1===(r=fe(i,n.toString({children:!1}),o)))return!1;this.refCssRule(e,o,r)}return this.insertRules(n.rules,r),r}var s=e.toString();if(!s)return!1;var a=he(i,t),l=fe(i,s,a);return!1!==l&&(this.hasInsertedRules=!0,this.refCssRule(e,a,l),l)},t.refCssRule=function(e,t,i){e.renderable=i,e.options.parent instanceof $&&this.cssRules.splice(t,0,i)},t.deleteRule=function(e){var t=this.element.sheet,i=this.indexOf(e);return-1!==i&&(t.deleteRule(i),this.cssRules.splice(i,1),!0)},t.indexOf=function(e){return this.cssRules.indexOf(e)},t.replaceRule=function(e,t){var i=this.indexOf(e);return-1!==i&&(this.element.sheet.deleteRule(i),this.cssRules.splice(i,1),this.insertRule(t,i))},t.getRules=function(){return this.element.sheet.cssRules},e}(),ge=0,be=function(){function e(e){this.id=ge++,this.version="10.10.0",this.plugins=new ee,this.options={id:{minify:!1},createGenerateId:oe,Renderer:l?ve:null,plugins:[]},this.generateId=oe({minify:!1});for(var t=0;t<Z.length;t++)this.plugins.use(Z[t],{queue:"internal"});this.setup(e)}var t=e.prototype;return t.setup=function(e){return void 0===e&&(e={}),e.createGenerateId&&(this.options.createGenerateId=e.createGenerateId),e.id&&(this.options.id=Object(r.a)({},this.options.id,e.id)),(e.createGenerateId||e.id)&&(this.generateId=this.options.createGenerateId(this.options.id)),null!=e.insertionPoint&&(this.options.insertionPoint=e.insertionPoint),"Renderer"in e&&(this.options.Renderer=e.Renderer),e.plugins&&this.use.apply(this,e.plugins),this},t.createStyleSheet=function(e,t){void 0===t&&(t={});var i=t.index;"number"!=typeof i&&(i=0===te.index?0:te.index+1);var n=new $(e,Object(r.a)({},t,{jss:this,generateId:t.generateId||this.generateId,insertionPoint:this.options.insertionPoint,Renderer:this.options.Renderer,index:i}));return this.plugins.onProcessSheet(n),n},t.removeStyleSheet=function(e){return e.detach(),te.remove(e),this},t.createRule=function(e,t,i){if(void 0===t&&(t={}),void 0===i&&(i={}),"object"==typeof e)return this.createRule(void 0,e,t);var n=Object(r.a)({},i,{name:e,jss:this,Renderer:this.options.Renderer});n.generateId||(n.generateId=this.generateId),n.classes||(n.classes={}),n.keyframes||(n.keyframes={});var o=h(e,t,n);return o&&this.plugins.onProcessRule(o),o},t.use=function(){for(var e=this,t=arguments.length,i=new Array(t),n=0;n<t;n++)i[n]=arguments[n];return i.forEach((function(t){e.plugins.use(t)})),this},e}(),ye=function(e){return new be(e)},we="object"==typeof CSS&&null!=CSS&&"number"in CSS;ye();function xe(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.baseClasses,i=e.newClasses;e.Component;if(!i)return t;var n=Object(r.a)({},t);
2return Object.keys(i).forEach((function(e){i[e]&&(n[e]="".concat(t[e]," ").concat(i[e]))})),n}var je={set:function(e,t,i,n){var r=e.get(t);r||(r=new Map,e.set(t,r)),r.set(i,n)},get:function(e,t,i){var n=e.get(t);return n?n.get(i):void 0},delete:function(e,t,i){e.get(t).delete(i)}},ke=i("aXM8"),Se="function"==typeof Symbol&&Symbol.for?Symbol.for("mui.nested"):"__THEME_NESTED__",De=["checked","disabled","error","focused","focusVisible","required","expanded","selected"];var Me=Date.now(),Oe="fnValues"+Me,Ie="fnStyle"+ ++Me,Ce=function(){return{onCreateRule:function(e,t,i){if("function"!=typeof t)return null;var n=h(e,{},i);return n[Ie]=t,n},onProcessStyle:function(e,t){if(Oe in t||Ie in t)return e;var i={};for(var n in e){var r=e[n];"function"==typeof r&&(delete e[n],i[n]=r)}return t[Oe]=i,e},onUpdate:function(e,t,i,n){var r=t,o=r[Ie];o&&(r.style=o(e)||{});var s=r[Oe];if(s)for(var a in s)r.prop(a,s[a](e),n)}}},ze="@global",Pe=function(){function e(e,t,i){for(var n in this.type="global",this.at=ze,this.isProcessed=!1,this.key=e,this.options=i,this.rules=new X(Object(r.a)({},i,{parent:this})),t)this.rules.add(n,t[n]);this.rules.process()}var t=e.prototype;return t.getRule=function(e){return this.rules.get(e)},t.addRule=function(e,t,i){var n=this.rules.add(e,t,i);return n&&this.options.jss.plugins.onProcessRule(n),n},t.replaceRule=function(e,t,i){var n=this.rules.replace(e,t,i);return n&&this.options.jss.plugins.onProcessRule(n),n},t.indexOf=function(e){return this.rules.indexOf(e)},t.toString=function(e){return this.rules.toString(e)},e}(),Ae=function(){function e(e,t,i){this.type="global",this.at=ze,this.isProcessed=!1,this.key=e,this.options=i;var n=e.substr("@global ".length);this.rule=i.jss.createRule(n,t,Object(r.a)({},i,{parent:this}))}return e.prototype.toString=function(e){return this.rule?this.rule.toString(e):""},e}(),Ee=/\s*,\s*/g;function Te(e,t){for(var i=e.split(Ee),n="",r=0;r<i.length;r++)n+=t+" "+i[r].trim(),i[r+1]&&(n+=", ");return n}var Re=function(){return{onCreateRule:function(e,t,i){if(!e)return null;if(e===ze)return new Pe(e,t,i);if("@"===e[0]&&"@global "===e.substr(0,"@global ".length))return new Ae(e,t,i);var n=i.parent;return n&&("global"===n.type||n.options.parent&&"global"===n.options.parent.type)&&(i.scoped=!1),i.selector||!1!==i.scoped||(i.selector=e),null},onProcessRule:function(e,t){"style"===e.type&&t&&(function(e,t){var i=e.options,n=e.style,o=n?n[ze]:null;if(o){for(var s in o)t.addRule(s,o[s],Object(r.a)({},i,{selector:Te(s,e.selector)}));delete n[ze]}}(e,t),function(e,t){var i=e.options,n=e.style;for(var o in n)if("@"===o[0]&&o.substr(0,ze.length)===ze){var s=Te(o.substr(ze.length),e.selector);t.addRule(s,n[o],Object(r.a)({},i,{selector:s})),delete n[o]}}(e,t))}}},qe=/\s*,\s*/g,Ne=/&/g,Le=/\$([\w-]+)/g;var Be=function(){function e(e,t){return function(i,n){var r=e.getRule(n)||t&&t.getRule(n);return r?r.selector:n}}function t(e,t){for(var i=t.split(qe),n=e.split(qe),r="",o=0;o<i.length;o++)for(var s=i[o],a=0;a<n.length;a++){var l=n[a];r&&(r+=", "),r+=-1!==l.indexOf("&")?l.replace(Ne,s):s+" "+l}return r}function i(e,t,i){if(i)return Object(r.a)({},i,{index:i.index+1});var n=e.options.nestingLevel;n=void 0===n?1:n+1;var o=Object(r.a)({},e.options,{nestingLevel:n,index:t.indexOf(e)+1});return delete o.name,o}return{onProcessStyle:function(n,o,s){if("style"!==o.type)return n;var a,l,d=o,u=d.options.parent;for(var c in n){var p=-1!==c.indexOf("&"),m="@"===c[0];if(p||m){if(a=i(d,u,a),p){var f=t(c,d.selector);l||(l=e(u,s)),f=f.replace(Le,l);var h=d.key+"-"+c;"replaceRule"in u?u.replaceRule(h,n[c],Object(r.a)({},a,{selector:f})):u.addRule(h,n[c],Object(r.a)({},a,{selector:f}))}else m&&u.addRule(c,{},a).addRule(d.key,n[c],{selector:d.selector});delete n[c]}}return n}}},Je=/[A-Z]/g,He=/^ms-/,Ue={};function Fe(e){return"-"+e.toLowerCase()}var We=function(e){if(Ue.hasOwnProperty(e))return Ue[e];var t=e.replace(Je,Fe);return Ue[e]=He.test(t)?"-"+t:t};function Ye(e){var t={};for(var i in e){t[0===i.indexOf("--")?i:We(i)]=e[i]}return e.fallbacks&&(Array.isArray(e.fallbacks)?t.fallbacks=e.fallbacks.map(Ye):t.fallbacks=Ye(e.fallbacks)),t}var Ve=function(){return{onProcessStyle:function(e){if(Array.isArray(e)){for(var t=0;t<e.length;t++)e[t]=Ye(e[t]);return e}return Ye(e)},onChangeValue:function(e,t,i){if(0===t.indexOf("--"))return e;var n=We(t);return t===n?e:(i.prop(n,e),null)}}},_e=we&&CSS?CSS.px:"px",Ge=we&&CSS?CSS.ms:"ms",Ze=we&&CSS?CSS.percent:"%";function Qe(e){var t=/(-[a-z])/g,i=function(e){return e[1].toUpperCase()},n={};for(var r in e)n[r]=e[r],n[r.replace(t,i)]=e[r];return n}var Ke=Qe({"animation-delay":Ge,"animation-duration":Ge,"background-position":_e,"background-position-x":_e,"background-position-y":_e,"background-size":_e,border:_e,"border-bottom":_e,"border-bottom-left-radius":_e,"border-bottom-right-radius":_e,"border-bottom-width":_e,"border-left":_e,"border-left-width":_e,"border-radius":_e,"border-right":_e,"border-right-width":_e,"border-top":_e,"border-top-left-radius":_e,"border-top-right-radius":_e,"border-top-width":_e,"border-width":_e,"border-block":_e,"border-block-end":_e,"border-block-end-width":_e,"border-block-start":_e,"border-block-start-width":_e,"border-block-width":_e,"border-inline":_e,"border-inline-end":_e,"border-inline-end-width":_e,"border-inline-start":_e,"border-inline-start-width":_e,"border-inline-width":_e,"border-start-start-radius":_e,"border-start-end-radius":_e,"border-end-start-radius":_e,"border-end-end-radius":_e,margin:_e,"margin-bottom":_e,"margin-left":_e,"margin-right":_e,"margin-top":_e,"margin-block":_e,"margin-block-end":_e,"margin-block-start":_e,"margin-inline":_e,"margin-inline-end":_e,"margin-inline-start":_e,padding:_e,"padding-bottom":_e,"padding-left":_e,"padding-right":_e,"padding-top":_e,"padding-block":_e,"padding-block-end":_e,"padding-block-start":_e,"padding-inline":_e,"padding-inline-end":_e,"padding-inline-start":_e,"mask-position-x":_e,"mask-position-y":_e,"mask-size":_e,height:_e,width:_e,"min-height":_e,"max-height":_e,"min-width":_e,"max-width":_e,bottom:_e,left:_e,top:_e,right:_e,inset:_e,"inset-block":_e,"inset-block-end":_e,"inset-block-start":_e,"inset-inline":_e,"inset-inline-end":_e,"inset-inline-start":_e,"box-shadow":_e,"text-shadow":_e,"column-gap":_e,"column-rule":_e,"column-rule-width":_e,"column-width":_e,"font-size":_e,"font-size-delta":_e,"letter-spacing":_e,"text-decoration-thickness":_e,"text-indent":_e,"text-stroke":_e,"text-stroke-width":_e,"word-spacing":_e,motion:_e,"motion-offset":_e,outline:_e,"outline-offset":_e,"outline-width":_e,perspective:_e,"perspective-origin-x":Ze,"perspective-origin-y":Ze,"transform-origin":Ze,"transform-origin-x":Ze,"transform-origin-y":Ze,"transform-origin-z":Ze,"transition-delay":Ge,"transition-duration":Ge,"vertical-align":_e,"flex-basis":_e,"shape-margin":_e,size:_e,gap:_e,grid:_e,"grid-gap":_e,"row-gap":_e,"grid-row-gap":_e,"grid-column-gap":_e,"grid-template-rows":_e,"grid-template-columns":_e,"grid-auto-rows":_e,"grid-auto-columns":_e,"box-shadow-x":_e,"box-shadow-y":_e,"box-shadow-blur":_e,"box-shadow-spread":_e,"font-line-height":_e,"text-shadow-x":_e,"text-shadow-y":_e,"text-shadow-blur":_e});function Xe(e,t,i){if(null==t)return t;if(Array.isArray(t))for(var n=0;n<t.length;n++)t[n]=Xe(e,t[n],i);else if("object"==typeof t)if("fallbacks"===e)for(var r in t)t[r]=Xe(r,t[r],i);else for(var o in t)t[o]=Xe(e+"-"+o,t[o],i);else if("number"==typeof t&&!1===isNaN(t)){var s=i[e]||Ke[e];
vendor: 3,790 bytes, line 2
2return!s||0===t&&s===_e?t.toString():"function"==typeof s?s(t).toString():""+t+s}return t}var $e=function(e){void 0===e&&(e={});var t=Qe(e);return{onProcessStyle:function(e,i){if("style"!==i.type)return e;for(var n in e)e[n]=Xe(n,e[n],t);return e},onChangeValue:function(e,i){return Xe(i,e,t)}}},et=i("KQm4"),tt="",it="",nt="",rt="",ot=l&&"ontouchstart"in document.documentElement;if(l){var st={Moz:"-moz-",ms:"-ms-",O:"-o-",Webkit:"-webkit-"},at=document.createElement("p").style;for(var lt in st)if(lt+"Transform"in at){tt=lt,it=st[lt];break}"Webkit"===tt&&"msHyphens"in at&&(tt="ms",it=st.ms,rt="edge"),"Webkit"===tt&&"-apple-trailing-word"in at&&(nt="apple")}var dt=tt,ut=it,ct=nt,pt=rt,mt=ot;var ft={noPrefill:["appearance"],supportedProperty:function(e){return"appearance"===e&&("ms"===dt?"-webkit-"+e:ut+e)}},ht={noPrefill:["color-adjust"],supportedProperty:function(e){return"color-adjust"===e&&("Webkit"===dt?ut+"print-"+e:e)}},vt=/[-\s]+(.)?/g;function gt(e,t){return t?t.toUpperCase():""}function bt(e){return e.replace(vt,gt)}function yt(e){return bt("-"+e)}var wt,xt={noPrefill:["mask"],supportedProperty:function(e,t){if(!/^mask/.test(e))return!1;if("Webkit"===dt){if(bt("mask-image")in t)return e;if(dt+yt("mask-image")in t)return ut+e}return e}},jt={noPrefill:["text-orientation"],supportedProperty:function(e){return"text-orientation"===e&&("apple"!==ct||mt?e:ut+e)}},kt={noPrefill:["transform"],supportedProperty:function(e,t,i){return"transform"===e&&(i.transform?e:ut+e)}},St={noPrefill:["transition"],supportedProperty:function(e,t,i){return"transition"===e&&(i.transition?e:ut+e)}},Dt={noPrefill:["writing-mode"],supportedProperty:function(e){return"writing-mode"===e&&("Webkit"===dt||"ms"===dt&&"edge"!==pt?ut+e:e)}},Mt={noPrefill:["user-select"],supportedProperty:function(e){return"user-select"===e&&("Moz"===dt||"ms"===dt||"apple"===ct?ut+e:e)}},Ot={supportedProperty:function(e,t){return!!/^break-/.test(e)&&("Webkit"===dt?"WebkitColumn"+yt(e)in t&&ut+"column-"+e:"Moz"===dt&&("page"+yt(e)in t&&"page-"+e))}},It={supportedProperty:function(e,t){if(!/^(border|margin|padding)-inline/.test(e))return!1;if("Moz"===dt)return e;var i=e.replace("-inline","");return dt+yt(i)in t&&ut+i}},Ct={supportedProperty:function(e,t){return bt(e)in t&&e}},zt={supportedProperty:function(e,t){var i=yt(e);return"-"===e[0]||"-"===e[0]&&"-"===e[1]?e:dt+i in t?ut+e:"Webkit"!==dt&&"Webkit"+i in t&&"-webkit-"+e}},Pt={supportedProperty:function(e){return"scroll-snap"===e.substring(0,11)&&("ms"===dt?""+ut+e:e)}},At={supportedProperty:function(e){return"overscroll-behavior"===e&&("ms"===dt?ut+"scroll-chaining":e)}},Et={"flex-grow":"flex-positive","flex-shrink":"flex-negative","flex-basis":"flex-preferred-size","justify-content":"flex-pack",order:"flex-order","align-items":"flex-align","align-content":"flex-line-pack"},Tt={supportedProperty:function(e,t){var i=Et[e];return!!i&&(dt+yt(i)in t&&ut+i)}},Rt={flex:"box-flex","flex-grow":"box-flex","flex-direction":["box-orient","box-direction"],order:"box-ordinal-group","align-items":"box-align","flex-flow":["box-orient","box-direction"],"justify-content":"box-pack"},qt=Object.keys(Rt),Nt=function(e){return ut+e},Lt=[ft,ht,xt,jt,kt,St,Dt,Mt,Ot,It,Ct,zt,Pt,At,Tt,{supportedProperty:function(e,t,i){var n=i.multiple;if(qt.indexOf(e)>-1){var r=Rt[e];if(!Array.isArray(r))return dt+yt(r)in t&&ut+r;if(!n)return!1;for(var o=0;o<r.length;o++)if(!(dt+yt(r[0])in t))return!1;return r.map(Nt)}return!1}}],Bt=Lt.filter((function(e){return e.supportedProperty})).map((function(e){return e.supportedProperty})),Jt=Lt.filter((function(e){return e.noPrefill})).reduce((function(e,t){return e.push.apply(e,Object(et.a)(t.noPrefill)),e}),[]),Ht={};if(l){wt=document.createElement("p");var Ut=window.getComputedStyle(document.documentElement,"");
2for(var Ft in Ut)isNaN(Ft)||(Ht[Ut[Ft]]=Ut[Ft]);Jt.forEach((function(e){return delete Ht[e]}))}function Wt(e,t){if(void 0===t&&(t={}),!wt)return e;if(null!=Ht[e])return Ht[e];"transition"!==e&&"transform"!==e||(t[e]=e in wt.style);for(var i=0;i<Bt.length&&(Ht[e]=Bt[i](e,wt.style,t),!Ht[e]);i++);try{wt.style[e]=""}catch(n){return!1}return Ht[e]}var Yt,Vt={},_t={transition:1,"transition-property":1,"-webkit-transition":1,"-webkit-transition-property":1},Gt=/(^\s*[\w-]+)|, (\s*[\w-]+)(?![^()]*\))/g;function Zt(e,t,i){if("var"===t)return"var";if("all"===t)return"all";if("all"===i)return", all";var n=t?Wt(t):", "+Wt(i);return n||(t||i)}function Qt(e,t){var i=t;if(!Yt||"content"===e)return t;if("string"!=typeof i||!isNaN(parseInt(i,10)))return i;var n=e+i;if(null!=Vt[n])return Vt[n];try{Yt.style[e]=i}catch(r){return Vt[n]=!1,!1}if(_t[e])i=i.replace(Gt,Zt);else if(""===Yt.style[e]&&("-ms-flex"===(i=ut+i)&&(Yt.style[e]="-ms-flexbox"),Yt.style[e]=i,""===Yt.style[e]))return Vt[n]=!1,!1;return Yt.style[e]="",Vt[n]=i,Vt[n]}l&&(Yt=document.createElement("p"));var Kt=function(){function e(t){for(var i in t){var n=t[i];if("fallbacks"===i&&Array.isArray(n))t[i]=n.map(e);else{var r=!1,o=Wt(i);o&&o!==i&&(r=!0);var s=!1,a=Qt(o,g(n));a&&a!==n&&(s=!0),(r||s)&&(r&&delete t[i],t[o||i]=a||n)}}return t}return{onProcessRule:function(e){if("keyframes"===e.type){var t=e;t.at="-"===(i=t.at)[1]||"ms"===dt?i:"@"+ut+"keyframes"+i.substr(10)}var i},onProcessStyle:function(t,i){return"style"!==i.type?t:e(t)},onChangeValue:function(e,t){return Qt(t,g(e))||e}}};var Xt=function(){var e=function(e,t){return e.length===t.length?e>t?1:-1:e.length-t.length};return{onProcessStyle:function(t,i){if("style"!==i.type)return t;for(var n={},r=Object.keys(t).sort(e),o=0;o<r.length;o++)n[r[o]]=t[r[o]];return n}}};function $t(){return{plugins:[Ce(),Re(),Be(),Ve(),$e(),"undefined"==typeof window?null:Kt(),Xt()]}}var ei=ye($t()),ti={disableGeneration:!1,generateClassName:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.disableGlobal,i=void 0!==t&&t,n=e.productionPrefix,r=void 0===n?"jss":n,o=e.seed,s=void 0===o?"":o,a=""===s?"":"".concat(s,"-"),l=0,d=function(){return l+=1};return function(e,t){var n=t.options.name;if(n&&0===n.indexOf("Mui")&&!t.options.link&&!i){if(-1!==De.indexOf(e.key))return"Mui-".concat(e.key);var o="".concat(a).concat(n,"-").concat(e.key);return t.options.theme[Se]&&""===s?"".concat(o,"-").concat(d()):o}return"".concat(a).concat(r).concat(d())}}(),jss:ei,sheetsCache:null,sheetsManager:new Map,sheetsRegistry:null},ii=s.a.createContext(ti);var ni=-1e9;function ri(){return ni+=1}i("U8pU");var oi=i("2+6g");function si(e){var t="function"==typeof e;return{create:function(i,n){var o;try{o=t?e(i):e}catch(l){throw l}if(!n||!i.overrides||!i.overrides[n])return o;var s=i.overrides[n],a=Object(r.a)({},o);return Object.keys(s).forEach((function(e){a[e]=Object(oi.a)(a[e],s[e])})),a},options:{}}}var ai={};function li(e,t,i){var n=e.state;if(e.stylesOptions.disableGeneration)return t||{};n.cacheClasses||(n.cacheClasses={value:null,lastProp:null,lastJSS:{}});var r=!1;return n.classes!==n.cacheClasses.lastJSS&&(n.cacheClasses.lastJSS=n.classes,r=!0),t!==n.cacheClasses.lastProp&&(n.cacheClasses.lastProp=t,r=!0),r&&(n.cacheClasses.value=xe({baseClasses:n.cacheClasses.lastJSS,newClasses:t,Component:i})),n.cacheClasses.value}function di(e,t){var i=e.state,n=e.theme,o=e.stylesOptions,s=e.stylesCreator,a=e.name;if(!o.disableGeneration){var l=je.get(o.sheetsManager,s,n);l||(l={refs:0,staticSheet:null,dynamicStyles:null},je.set(o.sheetsManager,s,n,l));var d=Object(r.a)({},s.options,o,{theme:n,flip:"boolean"==typeof o.flip?o.flip:"rtl"===n.direction});d.generateId=d.serverGenerateClassName||d.generateClassName;var u=o.sheetsRegistry;if(0===l.refs){var c;o.sheetsCache&&(c=je.get(o.sheetsCache,s,n));var p=s.create(n,a);c||((c=o.jss.createStyleSheet(p,Object(r.a)({link:!1},d))).attach(),o.sheetsCache&&je.set(o.sheetsCache,s,n,c)),u&&u.add(c),l.staticSheet=c,l.dynamicStyles=function e(t){var i=null;for(var n in t){var r=t[n],o=typeof r;if("function"===o)i||(i={}),i[n]=r;else if("object"===o&&null!==r&&!Array.isArray(r)){var s=e(r);s&&(i||(i={}),i[n]=s)}}return i}(p)}if(l.dynamicStyles){var m=o.jss.createStyleSheet(l.dynamicStyles,Object(r.a)({link:!0},d));m.update(t),m.attach(),i.dynamicSheet=m,i.classes=xe({baseClasses:l.staticSheet.classes,newClasses:m.classes}),u&&u.add(m)}else i.classes=l.staticSheet.classes;l.refs+=1}}function ui(e,t){var i=e.state;i.dynamicSheet&&i.dynamicSheet.update(t)}function ci(e){var t=e.state,i=e.theme,n=e.stylesOptions,r=e.stylesCreator;
2if(!n.disableGeneration){var o=je.get(n.sheetsManager,r,i);o.refs-=1;var s=n.sheetsRegistry;0===o.refs&&(je.delete(n.sheetsManager,r,i),n.jss.removeStyleSheet(o.staticSheet),s&&s.remove(o.staticSheet)),t.dynamicSheet&&(n.jss.removeStyleSheet(t.dynamicSheet),s&&s.remove(t.dynamicSheet))}}function pi(e,t){var i,n=s.a.useRef([]),r=s.a.useMemo((function(){return{}}),t);n.current!==r&&(n.current=r,i=e()),s.a.useEffect((function(){return function(){i&&i()}}),[r])}function mi(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=t.name,o=t.classNamePrefix,a=t.Component,l=t.defaultTheme,d=void 0===l?ai:l,u=Object(n.a)(t,["name","classNamePrefix","Component","defaultTheme"]),c=si(e),p=i||o||"makeStyles";c.options={index:ri(),name:i,meta:p,classNamePrefix:p};var m=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object(ke.a)()||d,n=Object(r.a)({},s.a.useContext(ii),u),o=s.a.useRef(),l=s.a.useRef();pi((function(){var r={name:i,state:{},stylesCreator:c,stylesOptions:n,theme:t};return di(r,e),l.current=!1,o.current=r,function(){ci(r)}}),[t,c]),s.a.useEffect((function(){l.current&&ui(o.current,e),l.current=!0}));var p=li(o.current,e.classes,a);return p};return m}},TOwV:function(e,t,i){"use strict";e.exports=i("qT12")},TbfD:function(e,t){e.exports={id:"ecosysteme-conferences",creationDate:"2019-09-27",defaultLanguage:"french",languages:{french:{defaultEvent:"craftsrecords-2",title:"L'écosystème des conférences tech en France",description:["L'équipe de CraftsRecords vous fait découvrir l'écosystème des conférences en France (et environs), leurs caractéristiques, le calendrier, comment ça se déroule, les formats de talk, les call for papers, etc...","Une liste non-exhaustive mais qui vous donnera la big picture du paysage français des conférences tech en France. Une bonne manière d'appréhender cet écosystème du partage de la connaissance lors que l'on veut se lancer en tant que speaker."]}},events:[{id:"craftsrecords-2",video:"https://www.youtube.com/embed/WrbNeWtn_fY"}],materials:[{type:"SLIDES",url:"https://slides.com/julientopcu/craftsrecords-lecosysteme-des-conferences",language:"french"}],interviews:[],feedbacks:[]}},TrhM:function(e,t,i){"use strict";function n(e){for(var t="https://mui.com/production-error/?code="+e,i=1;i<arguments.length;i+=1)t+="&args[]="+encodeURIComponent(arguments[i]);return"Minified Material-UI error #"+e+"; visit "+t+" for the full message."}i.d(t,"a",(function(){return n}))},U8pU:function(e,t,i){"use strict";function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}i.d(t,"a",(function(){return n}))},UZ2v:function(e,t){e.exports={id:"owasptop10",creationDate:"2019-04-27",defaultLanguage:"english",languages:{english:{defaultEvent:"devoxxbe2019",title:"How to get properly hacked!",description:["Yet another leak of credit card numbers on the internet! https://www.infoq.com/news/2018/11/british-airways-data-breach It is scary isn't it?","But wait a minute! What are we doing to make sure our application is actually secured?","During this live-coding and live-hacking session, discover the most common mistakes in software developement leading to security vulnerabilities, that the vast majority of us do without even knowing it! After that, you will not see your application in the same way ..."]},french:{defaultEvent:"sunnytech2019",title:"Comment se faire hacker bien comme il faut !",description:["Et encore une fuite de numéros de cartes de crédit sur internet! https://www.infoq.com/news/2018/11/british-airways-data-breach C'est révoltant n'est-ce pas ?","Mais attends, qu'est-ce qu'on fait nous pour s'assurer que notre appli n'est pas une passoire?","Dans cette live-coding-hacking session, venez découvrir les erreurs les plus communes en sécurité, que la grande majorité d'entre nous font sans même le savoir!","Après cela, vous ne verrez plus votre application de la même manière..."]}},events:[{id:"bbl-societegenerale042019"},{id:"devoxxfr2019",url:"https://cfp.devoxx.fr/2019/talk/YUM-3956/Comment_se_faire_hacker_bien_comme_il_faut!",video:"https://www.youtube.com/embed/Aa6yeVHs2fI",date:"2019-04-19"},{id:"rivieradev2019",url:"https://rivieradev.fr/session/606",date:"2019-05-16"},{id:"mixit2019",video:"https://player.vimeo.com/video/342927452",url:"https://mixitconf.org/2019/comment-se-faire-hacker-bien-comme-il-faut-",date:"2019-04-26"},{id:"vxlu2019",video:"https://www.youtube.com/embed/zw-bVxuyRuo",date:"2019-06-21"},{id:"sunnytech2019",video:"https://www.youtube.com/embed/TZiufzybMvE",url:"https://2019.sunny-tech.io/schedule/2019-06-27?sessionId=60",date:"2019-06-27"},{id:"summercamp2019",video:"https://www.youtube.com/embed/NCpxzHr13qs",url:"https://www.jugsummercamp.org/edition/10/presentations/XvpmnMltEJ6PNv0LBf4e",date:"2019-09-13"},{id:"bbl-axa2019"},{id:"devfestnantes2019",slides:"https://slides.com/julientopcu/back-in-black-hat-comment-se-faire-pogoter-hacker-bien-comme-il-faut",url:"https://devfest.gdgnantes.com/sessions/back_in_black_hat___comment_se_faire_pogoter__hacker__bien_comme_il_faut_/",video:"https://www.youtube.com/embed/NXS0z_HQVf8",date:"2019-10-22"},{id:"devoxxbe2019",date:"2019-11-08",url:"https://devoxx.be/talk/?id=13601",video:"https://www.youtube.com/embed/ipM1_7uPC38"},{id:"devopsdday2019",date:"2019-11-14",url:"https://devopsdday2019.sched.com/event/Sw40/comment-se-faire-hacker-bien-comme-il-faut",video:"https://www.youtube.com/embed/t9UxH8zC95A"},{id:"codeursenseine2019",date:"2019-11-21",video:"https://www.youtube.com/embed/8MAJJt254SM"},{id:"tnt20",date:"2020-01-31",video:"https://www.youtube.com/embed/v9SlplIIkU8"},{id:"devfestparis2020",date:"2020-02-14"},{id:"breizhcamp2020",date:"2020-03-26"},{id:"meetup-gdglemans062020",date:"2020-06-02"},{id:"devcon12",date:"2021-12-16",video:"https://www.youtube.com/embed/EZbjWNR7gyk"}],materials:[{type:"SLIDES",url:"https://slides.com/julientopcu/comment-se-faire-hacker-bien-comme-il-faut",language:"french"},{type:"SLIDES",url:"https://slides.com/julientopcu/how-to-get-properly-hacked",language:"english"},{type:"REPOSITORY",url:"https://gitlab.com/crafts-records/pangloss",icon:"https://assets.gitlab-static.net/uploads/-/system/group/avatar/4205710/wig.png"},{type:"ARTICLE",title:"You have critical security vulnerabilities in your software but you donât know it yet!",icon:"https://beyondxscratch.files.wordpress.com/2018/09/invasion.png",url:"https://beyondxscratch.c
2om/2018/10/09/devsecops-owasp-you-have-critical-security-vulnerabilities-in-your-software-but-you-dont-know-it-yet/"}],interviews:[],feedbacks:[{url:"https://mailchi.mp/4b39a6614115/0dw1htrqpp-1432853",language:"french"},{url:"https://www.duchess-france.org/retour-sur-devoxx-france-2019/",language:"french"},{url:"https://www.attineos.com/blog/actu/carnet-de-bord-tineos-devoxx-partie-2",language:"french"},{url:"http://xinri.free.fr/wp/index.php/securite/top-10-owasp-erreurs-les-plus-souvent-faites-lors-des-devs/",language:"french"},{url:"https://www.ekino.fr/articles/retour-sur-le-3eme-jour-de-conference-de-devoxx-2019-19-04",language:"french"},{url:"https://boutdecode.fr/article/cors-avec-nodejs",language:"french"},{url:"https://dev.to/sandordargo/rivieradev-2019-the-gastronomical-dev-conference-1g6n",language:"french"},{url:"https://medium.com/teads-engineering/10-talks-from-sunny-tech-the-hottest-tech-conference-in-france-ca2ba6ff4596",language:"french"},{url:"https://ahdak.github.io/blog/20-devoxx-security-api/",language:"french"},{url:"https://blog.wescale.fr/2019/04/23/devoxx-france-2019/",language:"french"},{url:"https://link.medium.com/hJ0uDn7C80",language:"french"},{url:"https://medium.com/@diane.mansuy/devoxx-2019-pourquoi-c%C3%A9tait-bien-6235fd13a168",language:"french"},{url:"https://pierreboissinot.github.io/2019-10-27-devfest-nantes-2019/",language:"french"},{url:"https://developer.epages.com/blog/events/being-a-devoxxian-in-antwerp/"},{url:"https://ordina-jworks.github.io/conference/2019/11/18/devoxx-2019.html"},{url:"https://link.medium.com/yISy5KUE01"},{url:"https://blog.wescale.fr/2020/02/28/nos-retours-sur-le-devfest-paris-2020/"}],tweets:[{id:"1189900423425089536"},{id:"1186728677964484611"},{id:"1186538364595527680"},{id:"1186551274793328640"},{id:"1186555907808907265"},{id:"1186555185440669697"},{id:"1186537484991258624"},{id:"1172447959981547521"},{id:"1172437050882060289"},{id:"1131578369554952193"},{id:"1131603353937600512"},{id:"1131577347826696192"},{id:"1131575700304138241"},{id:"1130099643113791489"},{id:"1129309162767360000"},{id:"1129301940763090944"},{id:"1129299913177743361"},{id:"1129299220677185536"},{id:"1127588679038439424"},{id:"1126070353497862144"},{id:"1119476331178278912"},{id:"1119344737247465474"},{id:"1119308316130324480"},{id:"1119301409722327048"},{id:"1119279903696916481"},{id:"1119277438528294915"},{id:"1119264069838675968"}]}},Usas:function(e,t){e.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTkuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTEyIDUxMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8cmVjdCB5PSI4NS4zMzEiIHN0eWxlPSJmaWxsOiNGMEYwRjA7IiB3aWR0aD0iNTEyIiBoZWlnaHQ9IjM0MS4zMzciLz4KPHJlY3QgeT0iODUuMzMxIiBzdHlsZT0iZmlsbDojMDA1MkI0OyIgd2lkdGg9IjE3MC42NjMiIGhlaWdodD0iMzQxLjMzNyIvPgo8cmVjdCB4PSIzNDEuMzM3IiB5PSI4NS4zMzEiIHN0eWxlPSJmaWxsOiNEODAwMjc7IiB3aWR0aD0iMTcwLjY2MyIgaGVpZ2h0PSIzNDEuMzM3Ii8+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+Cjwvc3ZnPgo="},Z2dy:function(e,t){e.exports={id:"bdd",creationDate:"2021-11-04",defaultLanguage:"french",cospeakers:[{id:"aurorejeremie",name:"Aurore Jérémie",profile:"https://twitter.com/AuroreJeremie"}],languages:{french:{defaultEvent:"atbdx2021",title:"Bien répondre aux besoins utilisateur, c'est surtout une histoire de comportement (logiciel) !",description:["C'est super, tu arrives sur un nouveau projet ! Mais très vite, tu te rends compte que le seul moyen de comprendre ce qu'il fait, est d'aller faire de l'archéologie dans le code. Niveau user stories, elles sont bien définies... pourtant tu ne sais jamais jusquâoù tu dois aller pour les implémenter ! D'ailleurs à chaque fois que tu en livres, tu es a côté du besoin métier...","
2Et si on te disait que le Behavior-Driven Development pouvait t'aider à résoudre tes problèmes !!","En partant d'une user story, nous allons voir comment en faire émerger les comportements attendus du logiciel. Puis lors de la phase de développement, nous aborderons les pratiques qui permettent d'implémenter et vérifier automatiquement les attentes des utilisateurs."]}},events:[{id:"atbdx2021",date:"2021-11-04",video:"https://www.youtube.com/embed/3JF2ztnvKok"},{id:"agre2021",date:"2021-11-25",video:"https://www.youtube.com/embed/Urtnkf_rIQ0"},{id:"bbl-vaduo2023",date:"2023-09-19"}],materials:[{type:"SLIDES",url:"https://slides.com/julientopcu/bien-rpondre-aux-besoins-utilisateur-cest-surtout-une-histoire-de-comportement-logiciel",language:"french"},{type:"REPOSITORY",url:"https://github.com/auroreJ/spotifloor",icon:"https://cdn-icons-png.flaticon.com/512/25/25231.png"}],interviews:[],feedbacks:[],tweets:[]}},aXM8:function(e,t,i){"use strict";i.d(t,"a",(function(){return s}));var n=i("q1tI"),r=i.n(n);var o=r.a.createContext(null);function s(){return r.a.useContext(o)}},aXR6:function(e,t){e.exports={id:"live-coding-the-hive",creationDate:"2025-06-01",defaultLanguage:"english",cospeakers:[{id:"thomaspierrain",name:"Thomas Pierrain",profile:"https://twitter.com/tpierrain"}],languages:{english:{defaultEvent:"devoxxbe2025",title:"Live Coding The Hive: building a microservices-ready modular monolith",description:["After a decade, the industry has realized that poorly designed microservices can easily turn into a distributed monolith, often more problematic than the spaghetti monolith they aimed to address. To tackle this issue, the concept of a modular monolith is emerging as an alternative approach.","However, the challenge still lies in effectively splitting it without falling into the pitfall of tightly coupled modules. The Hive pattern helps you build a microservices-ready modular monolith, by leveraging multiple hexagonal architectures and vertical slicing, each module is loosely coupled and ready to be extracted as a separate service.","During this live coding session, we will begin with a legacy spaghetti monolith and migrate it step-by-step to a Hived modular monolith, wrapping up with a demonstration of extracting a module and transforming it into a separate micro-service."]},french:{defaultEvent:"devoxxfr2026",title:"The Hive : coder un monolithe modulaire prêt pour les microservices",description:["Après une décennie, notre industrie sâest rendu compte que des microservices mal conçus peuvent très facilement se transformer en un monolithe distribué, encore plus problématique que le monolithe spaghetti quâil était censé corriger. Pour répondre à ce problème, le concept de monolithe modulaire apparaît aujourdâhui comme une alternative intéressante.","Cependant, dans cette approche de monolithe modulaire, la difficulté réside plus que jamais dans la capacité à le découper efficacement sans créer de modules trop fortement couplés. Si cette étape est mal gérée, il peut devenir impossible de le scinder ultérieurement en plusieurs services, lorsque cela sâavèrera indispensable.","Le pattern de la ruche (The Hive) permet construction dâun monolithe modulaire prêt pour pour être découpé en microservices en combinant plusieurs architectures hexagonales au concept du vertical slicing.","Lors de cette session de live coding, nous partirons dâune situation de monolithe spaghetti legacy, que nous ferons évoluer étape par étape vers un monolithe modulaire basé sur le pattern Hive, avant de conclure par une démonstration dâextraction et de transformation dâun module en microservice séparé."]}},events:[{id:"devoxxbe2025",date:"2025-10-10",video:"https://www.youtube.com/embed/VKcRNtj0tzc"},{id:"springio2026",date:"2026-04-14"},{id:"devoxxfr2026",date:"2026-04-23",video:"https://www.youtube.com/embed/5VDpsY-Eg4Q"},{id:"geeconkrakow2026",date:"2026-05-15"},{id:"adeodevsummit2026",date:"2026-05-27"}],materials:[{type:"SLIDES",url:"https://slides.com/julientopcu/live-coding-the-hive",language:"english"},{type:"REPOSITORY",url:"https://gitlab.com/beyondxscratch/hive-pattern",
2icon:"https://gitlab.com/uploads/-/system/project/avatar/72406089/honeycomb.png"}],interviews:[],feedbacks:[],tweets:[]}},bv9d:function(e,t,i){"use strict";var n=i("2+6g");t.a=function(e,t){return t?Object(n.a)(e,t,{clone:!1}):e}},cNwE:function(e,t,i){"use strict";var n=i("rePB"),r=i("Ff2n"),o=i("2+6g"),s=i("wx14"),a=["xs","sm","md","lg","xl"];function l(e){var t=e.values,i=void 0===t?{xs:0,sm:600,md:960,lg:1280,xl:1920}:t,n=e.unit,o=void 0===n?"px":n,l=e.step,d=void 0===l?5:l,u=Object(r.a)(e,["values","unit","step"]);function c(e){var t="number"==typeof i[e]?i[e]:e;return"@media (min-width:".concat(t).concat(o,")")}function p(e,t){var n=a.indexOf(t);return n===a.length-1?c(e):"@media (min-width:".concat("number"==typeof i[e]?i[e]:e).concat(o,") and ")+"(max-width:".concat((-1!==n&&"number"==typeof i[a[n+1]]?i[a[n+1]]:t)-d/100).concat(o,")")}return Object(s.a)({keys:a,values:i,up:c,down:function(e){var t=a.indexOf(e)+1,n=i[a[t]];return t===a.length?c("xs"):"@media (max-width:".concat(("number"==typeof n&&t>0?n:e)-d/100).concat(o,")")},between:p,only:function(e){return p(e,e)},width:function(e){return i[e]}},u)}function d(e,t,i){var r;return Object(s.a)({gutters:function(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return console.warn(["Material-UI: theme.mixins.gutters() is deprecated.","You can use the source of the mixin directly:","\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n [theme.breakpoints.up('sm')]: {\n paddingLeft: theme.spacing(3),\n paddingRight: theme.spacing(3),\n },\n "].join("\n")),Object(s.a)({paddingLeft:t(2),paddingRight:t(2)},i,Object(n.a)({},e.up("sm"),Object(s.a)({paddingLeft:t(3),paddingRight:t(3)},i[e.up("sm")])))},toolbar:(r={minHeight:56},Object(n.a)(r,"".concat(e.up("xs")," and (orientation: landscape)"),{minHeight:48}),Object(n.a)(r,e.up("sm"),{minHeight:64}),r)},i)}var u=i("TrhM"),c={black:"#000",white:"#fff"},p={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#d5d5d5",A200:"#aaaaaa",A400:"#303030",A700:"#616161"},m={50:"#e8eaf6",100:"#c5cae9",200:"#9fa8da",300:"#7986cb",400:"#5c6bc0",500:"#3f51b5",600:"#3949ab",700:"#303f9f",800:"#283593",900:"#1a237e",A100:"#8c9eff",A200:"#536dfe",A400:"#3d5afe",A700:"#304ffe"},f={50:"#fce4ec",100:"#f8bbd0",200:"#f48fb1",300:"#f06292",400:"#ec407a",500:"#e91e63",600:"#d81b60",700:"#c2185b",800:"#ad1457",900:"#880e4f",A100:"#ff80ab",A200:"#ff4081",A400:"#f50057",A700:"#c51162"},h={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"},v={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00"},g={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff"},b={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853"};function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return Math.min(Math.max(t,e),i)}function w(e){if(e.type)return e;if("#"===e.charAt(0))return w(function(e){e=e.substr(1);var t=new RegExp(".{1,".concat(e.length>=6?2:1,"}"),"g"),i=e.match(t);return i&&1===i[0].length&&(i=i.map((function(e){return e+e}))),i?"rgb".concat(4===i.length?"a":"","(").concat(i.map((function(e,t){return t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3})).join(", "),")"):""}(e));var t=e.indexOf("("),i=e.substring(0,t);if(-1===["rgb","rgba","hsl","hsla"].indexOf(i))throw new Error(Object(u.a)(3,e));var n=e.substring(t+1,e.length-1).split(",");return{type:i,values:n=n.map((function(e){return parseFloat(e)}))}}function x(e){var t=e.type,i=e.values;return-1!==t.indexOf("rgb")?i=i.map((function(e,t){return t<3?parseInt(e,10):e})):-1!==t.indexOf("hsl")&&(i[1]="".concat(i[1],"%"),i[2]="".concat(i[2],"%")),"".concat(t,"(").concat(i.join(", "),")")}function j(e){var t="hsl"===(e=w(e)).type?w(function(e){var t=(e=w(e)).values,i=t[0],n=t[1]/100,r=t[2]/100,o=n*Math.min(r,1-r),s=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(e+i/30)%12;return r-o*Math.max(Math.min(t-3,9-t,1),-1)},a="rgb",l=[Math.round(255*s(0)),Math.round(255*s(8)),Math.round(255*s(4))];return"hsla"===e.type&&(a+="a",l.push(t[3])),x({type:a,values:l})}(e)).values:e.values;return t=t.map((function(e){return(e/=255)<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4)}
2)),Number((.2126*t[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function k(e,t){if(e=w(e),t=y(t),-1!==e.type.indexOf("hsl"))e.values[2]*=1-t;else if(-1!==e.type.indexOf("rgb"))for(var i=0;i<3;i+=1)e.values[i]*=1-t;return x(e)}function S(e,t){if(e=w(e),t=y(t),-1!==e.type.indexOf("hsl"))e.values[2]+=(100-e.values[2])*t;else if(-1!==e.type.indexOf("rgb"))for(var i=0;i<3;i+=1)e.values[i]+=(255-e.values[i])*t;return x(e)}var D={text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.54)",disabled:"rgba(0, 0, 0, 0.38)",hint:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:c.white,default:p[50]},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpacity:.12}},M={text:{primary:c.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)",hint:"rgba(255, 255, 255, 0.5)",icon:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:p[800],default:"#303030"},action:{active:c.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpacity:.24}};function O(e,t,i,n){var r=n.light||n,o=n.dark||1.5*n;e[t]||(e.hasOwnProperty(i)?e[t]=e[i]:"light"===t?e.light=S(e.main,r):"dark"===t&&(e.dark=k(e.main,o)))}function I(e){var t=e.primary,i=void 0===t?{light:m[300],main:m[500],dark:m[700]}:t,n=e.secondary,a=void 0===n?{light:f.A200,main:f.A400,dark:f.A700}:n,l=e.error,d=void 0===l?{light:h[300],main:h[500],dark:h[700]}:l,y=e.warning,w=void 0===y?{light:v[300],main:v[500],dark:v[700]}:y,x=e.info,k=void 0===x?{light:g[300],main:g[500],dark:g[700]}:x,S=e.success,I=void 0===S?{light:b[300],main:b[500],dark:b[700]}:S,C=e.type,z=void 0===C?"light":C,P=e.contrastThreshold,A=void 0===P?3:P,E=e.tonalOffset,T=void 0===E?.2:E,R=Object(r.a)(e,["primary","secondary","error","warning","info","success","type","contrastThreshold","tonalOffset"]);function q(e){return function(e,t){var i=j(e),n=j(t);return(Math.max(i,n)+.05)/(Math.min(i,n)+.05)}(e,M.text.primary)>=A?M.text.primary:D.text.primary}var N=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:300,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:700;if(!(e=Object(s.a)({},e)).main&&e[t]&&(e.main=e[t]),!e.main)throw new Error(Object(u.a)(4,t));if("string"!=typeof e.main)throw new Error(Object(u.a)(5,JSON.stringify(e.main)));return O(e,"light",i,T),O(e,"dark",n,T),e.contrastText||(e.contrastText=q(e.main)),e},L={dark:M,light:D};return Object(o.a)(Object(s.a)({common:c,type:z,primary:N(i),secondary:N(a,"A400","A200","A700"),error:N(d),warning:N(w),info:N(k),success:N(I),grey:p,contrastThreshold:A,getContrastText:q,augmentColor:N,tonalOffset:T},L[z]),R)}function C(e){return Math.round(1e5*e)/1e5}function z(e){return C(e)}var P={textTransform:"uppercase"};function A(e,t){var i="function"==typeof t?t(e):t,n=i.fontFamily,a=void 0===n?'"Roboto", "Helvetica", "Arial", sans-serif':n,l=i.fontSize,d=void 0===l?14:l,u=i.fontWeightLight,c=void 0===u?300:u,p=i.fontWeightRegular,m=void 0===p?400:p,f=i.fontWeightMedium,h=void 0===f?500:f,v=i.fontWeightBold,g=void 0===v?700:v,b=i.htmlFontSize,y=void 0===b?16:b,w=i.allVariants,x=i.pxToRem,j=Object(r.a)(i,["fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem"]);var k=d/14,S=x||function(e){return"".concat(e/y*k,"rem")},D=function(e,t,i,n,r){return Object(s.a)({fontFamily:a,fontWeight:e,fontSize:S(t),lineHeight:i},'"Roboto", "Helvetica", "Arial", sans-serif'===a?{letterSpacing:"".concat(C(n/t),"em")}:{},r,w)},M={h1:D(c,96,1.167,-1.5),h2:D(c,60,1.2,-.5),h3:D(m,48,1.167,0),h4:D(m,34,1.235,.25),h5:D(m,24,1.334,0),h6:D(h,20,1.6,.15),subtitle1:D(m,16,1.75,.15),subtitle2:D(h,14,1.57,.1),body1:D(m,16,1.5,.15),body2:D(m,14,1.43,.15),button:D(h,14,1.75,.4,P),caption:D(m,12,1.66,.4),overline:D(m,12,2.66,1,P)};return Object(o.a)(Object(s.a)({htmlFontSize:y,pxToRem:S,round:z,fontFamily:a,fontSize:d,fontWeightLight:c,fontWeightRegular:m,fontWeightMedium:h,fontWeightBold:g},M),j,{clone:!1})}function E(){return["".concat(arguments.length<=0?void 0:arguments[0],"px ").concat(arguments.length<=1?void 0:arguments[1],"px ").concat(arguments.length<=2?void 0:arguments[2],"px ").concat(arguments.length<=3?void 0:arguments[3],"px rgba(0,0,0,").concat(.2,")"),"".concat(arguments.length<=4?void 0:arguments[4],"px ").concat(arguments.length<=5?void 0:arguments[5],"px ").concat(arguments.length<=6?void 0:arguments[6],"px ").concat(arguments.length<=7?void 0:arguments[7],"px rgba(0,0,0,").concat(.14,")"),"".concat(arguments.length<=8?void 0:arguments[8],"px ").concat(arguments.length<=9?void 0:arguments[9],"px ").concat(arguments.length<=10?void 0:arguments[10],"px ").concat(arguments.length<=11?void 0:arguments[11],"px rgba(0,0,0,").concat(.12,")")].join(",")}var T=["none",E(0,2,1,-1,0,1,1,0,0,1,3,0),E(0,3,1,-2,0,2,2,0,0,1,5,0),E(0,3,3,-2,0,3,4,0,0,1,8,0),E(0,2,4,-1,0,4,5,0,0,1,10,0),E(0,3,5,-1,0,5,8,0,0,1,14,0),E(0,3,5,-1,0,6,10,0,0,1,18,0),E(0,4,5,-2,0,7,10,1,0,2,16,1),E(0,5,5,-3,0,8,10,1,0,3,14,2),E(0,5,6,-3,0,9,12,1,0,3,16,2),E(0,6,6,-3,0,10,14,1,0,4,18,3),E(0,6,7,-4,0,11,15,1,0,4,20,3),E(0,7,8,-4,0,12,17,2,0,5,22,4),E(0,7,8,-4,0,13,19,2,0,5,24,4),E(0,7,9,-4,0,14,21,2,0,5,26,4),E(0,8,9,-5,0,15,22,2,0,6,28,5),E(0,8,10,-5,0,16,24,2,0,6,30,5),E(0,8,11,-5,0,17,26,2,0,6,32,5),E(0,9,11,-5,0,18,28,2,0,7,34,6),E(0,9,12,-6,0,19,29,2,0,7,36,6
2),E(0,10,13,-6,0,20,31,3,0,8,38,7),E(0,10,13,-6,0,21,33,3,0,8,40,7),E(0,10,14,-6,0,22,35,3,0,8,42,7),E(0,11,14,-7,0,23,36,3,0,9,44,8),E(0,11,15,-7,0,24,38,3,0,9,46,8)],R={borderRadius:4},q=i("+Hmc");function N(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:8;if(e.mui)return e;var t=Object(q.a)({spacing:e}),i=function(){for(var e=arguments.length,i=new Array(e),n=0;n<e;n++)i[n]=arguments[n];return 0===i.length?t(1):1===i.length?t(i[0]):i.map((function(e){if("string"==typeof e)return e;var i=t(e);return"number"==typeof i?"".concat(i,"px"):i})).join(" ")};return Object.defineProperty(i,"unit",{get:function(){return e}}),i.mui=!0,i}var L={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},B={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function J(e){return"".concat(Math.round(e),"ms")}var H={easing:L,duration:B,create:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["all"],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=t.duration,n=void 0===i?B.standard:i,o=t.easing,s=void 0===o?L.easeInOut:o,a=t.delay,l=void 0===a?0:a;Object(r.a)(t,["duration","easing","delay"]);return(Array.isArray(e)?e:[e]).map((function(e){return"".concat(e," ").concat("string"==typeof n?n:J(n)," ").concat(s," ").concat("string"==typeof l?l:J(l))})).join(",")},getAutoHeightDuration:function(e){if(!e)return 0;var t=e/36;return Math.round(10*(4+15*Math.pow(t,.25)+t/5))}},U={mobileStepper:1e3,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500};function F(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.breakpoints,i=void 0===t?{}:t,n=e.mixins,s=void 0===n?{}:n,a=e.palette,u=void 0===a?{}:a,c=e.spacing,p=e.typography,m=void 0===p?{}:p,f=Object(r.a)(e,["breakpoints","mixins","palette","spacing","typography"]),h=I(u),v=l(i),g=N(c),b=Object(o.a)({breakpoints:v,direction:"ltr",mixins:d(v,g,s),overrides:{},palette:h,props:{},shadows:T,typography:A(h,m),spacing:g,shape:R,transitions:H,zIndex:U},f),y=arguments.length,w=new Array(y>1?y-1:0),x=1;x<y;x++)w[x-1]=arguments[x];return b=w.reduce((function(e,t){return Object(o.a)(e,t)}),b)}var W=F();t.a=W},dVIQ:function(e,t){e.exports={id:"hateoas-ddd",creationDate:"2021-07-03",defaultLanguage:"english",languages:{english:{defaultEvent:"dddeu2022",title:"Crafting domain-driven designed REST APIs",description:["You have just coded your business logic by applying the principles of Domain-Driven Design!","But when comes the time to write your API, you are facing a serious issue! All the intention and the expression of your domain go up in smoke to fit the blankness methods GET, POST, etc.","Denatured by the REST layer, the business workflow is then deported on the consumer side to compensate for the limited vocabulary of this well-known CRUD protocol...","During this talk, we will see how to bring the business intent back inside the REST API by finally being able to expose our domain services and agregates' methods. The business workflow will also be encapsulated in the REST API in order to have the power to guide our consumers through the workflow of our domain."]},french:{defaultEvent:"devoxxfr2021",title:"REST next level : Ecrire des APIs web orientées métier",description:["Vous venez de coder votre logique métier, et peut-être que vous avez même fait l'effort d'appliquer les principes du Domain-Driven Design !","Mais au moment de l'écriture de votre API... Catastrophe ! Toute l'intention et l'expression de votre domaine partent en fumée pour rentrer dans le moule des méthodes GET, POST, etc. Dénaturé par la couche REST, le métier se voit alors en partie réimplémenté côté front pour compenser le vocabulaire limité de ce protocole basé sur un CRUD...","Lors de ce talk, nous verrons comment HATEOAS - le dernier niveau de maturité d'une architecture REST - peut nous aider à écrire une API web orientée métier qui aura la puissance de guider vos consommateurs à travers le workflow de votre domaine."]}},events:[{id:"dddfr042020",date:"2020-04-02",cancelled:!0},{id:"devoxxfr2020",date:"2020-04-16",cancelled:!0},{id:"rivieradev2020",date:"2020-05-14",cancelled:!0},{id:"rivieradev2021",date:"2021-07-03"},{id:"bbl-nexity2021",date:"2021-07-19"},{id:"summercamp2021",date:"2021-09-10"},{id:"devoxxfr2021",date:"2021-09-29",video:"https://www.youtube.com/embed/7qqzqse1hgc"},{id:"scrennes102021",date:"2021-10-14",video:"https://www.youtube.com/embed/96vfLoM3yxY"},{id:"devfestlille2021",date:"2021-11-19"},{id:"dddfr012022",date:"2022-01-27",video:"https://www.youtube.com/embed/Ki9Fq8_SQPs"},{id:"snowcamp2022",date:"2022-02-02"},{id:"bbl-societegenerale022022",date:"2022-02-22"},{id:"bbl-jolimoi022022",date:"2022-02-24"},{id:"carrefourdevsummit2022",date:"2022-03-02"},{id:"bbl-worldline2022",date:"2022-04-05"},{id:"devoxxuk2022",date:"2022-05-11",video:"https://www.youtube.com/embed/k5S3qcCFDiQ"},{id:"bbl-maltacademy2022",date:"2022-05-17"},{id:"web2day2022",date:"2022-06-03"},{id:"dddeu2022",date:"2022-06-22",video:"https://www.youtube.com/embed/x3Bf25altb4"},{id:"bbl-allianz092022",date:"2022-09-27"},{id:"bbl-starof-java2022",date:"2022-12-12"},{id:"bbl-iad2023",date:"2023-03-13"},,{id:"springio2023",date:"2023-05-19",video:"https://www.youtube.com/embed/93UK4gwV41c"},{id:"devoxxpl2023",date:"2023-06-02",video:"https://www.youtube.com/embed/-QdSIimpYJs"},{id:"meetup-afup-poitier2023",date:"2023-09-21"},{id:"devoxxbe2023",date:"2023-10-06",video:"https://www.youtube.com/embed/bHc8Gudrhdo?si=EAurME7JheQRsFfl"}
2,{id:"techforPE2023",date:"2023-11-07"},{id:"meetup-chtiJUG2024",date:"2024-02-22",video:"https://www.youtube.com/embed/K2FIhIhKufs"},{id:"sg-apiday-2024",date:"2024-03-08"},{id:"tnt25",date:"2025-02-07",video:"https://www.youtube.com/embed/-4hCjO90Kwk?si=5u-4gR31o3TaZ0F2"},{id:"cbdevday2025",date:"2025-03-27"}],materials:[{type:"SLIDES",url:"https://slides.com/julientopcu/rest-next-level-ecrire-des-apis-web-orientes-mtier",language:"french"},{type:"REPOSITORY",url:"https://gitlab.com/crafts-records/columbiad-express",icon:"https://gitlab.com/uploads/-/system/group/avatar/7294152/planet-earth.png"}],interviews:[],feedbacks:[{url:"https://k49.fr.nf/rex-jug-summer-camp-2021/",language:"french"},{url:"https://mailchi.mp/devoxx.fr/devoxx-france-vous-rgale-10422662",language:"french"}],tweets:[{id:"1443927428578041856"},{id:"1443932045680467975"},{id:"1443935012529840129"},{id:"1443936545711525889"},{id:"1443937389878054917"},{id:"1443941926697414660"},{id:"1443953399834218497"},{id:"1443965611013546000"},{id:"1443971234702692352"},{id:"1443971511178698754"},{id:"1443972127963680773"},{id:"1443976753970651142"},{id:"1443999765654605843"},{id:"1444016017341091867"},{id:"1444244597182451712"}]}},daya:function(e,t){e.exports={id:"it-pop-culture",creationDate:"2025-12-01",defaultLanguage:"french",cospeakers:[],languages:{french:{defaultEvent:"snowcamp2026",title:"Pourquoi la Tech tient plus de la pop culture que de l'ingénierie ?",description:["En partant d'une user story, nous allons voir comment en faire émerger les comportements attendus du logiciel. Puis lors de la phase de développement, nous aborderons les pratiques qui permettent d'implémenter et vérifier automatiquement les attentes des utilisateurs.","Pourtant, quand on observe nos échanges sur les réseaux sociaux ou dans nos réunions, on découvre un tout autre monde. Dâun côté, un influenceur proclame que âtester est une perte de tempsâ. De lâautre, une experte affirme que le TDD est la clé de la robustesse logicielle. Un Scrum Master défend la vélocité en story points pendant quâune développeuse revendique le noEstimates. Et au centre, les commentateurs tranchent : âtout le monde a raison, du moment que ça vous apporte de la valeur","Et si, au fond, notre univers technique ressemblait plus à une pop culture quâà une science appliquée ? Et si, derrière nos débats passionnés, se cachait une croyance partagée : celle que nos opinions valent des vérités ?","Dans cette conférence, nous verrons comment nos comportements, nos biais et nos figures dâautorité ont transformé la Tech en un espace de croyances, parfois éloigné de sa nature dâingénierie. Nous explorerons comment retrouver une posture plus critique et plus rigoureuse"]}},events:[{id:"snowcamp2026",date:"2026-01-16"},{id:"mixit2026",date:"2026-04-17",video:"https://www.youtube.com/embed/1JA3wPw7dsw"},{id:"breizhcamp2026",date:"2026-06-24"},{id:"bdxio2026",date:"2026-10-29"}],materials:[{type:"SLIDES",url:"https://slides.com/julientopcu/pourquoi-la-tech-tient-plus-de-la-pop-culture-que-de-lingnierie",language:"french"}],interviews:[],feedbacks:[],tweets:[]}},f02q:function(e,t,i){var n={"./english.svg":"h8N5","./french.svg":"Usas"};function r(e){var t=o(e);return i(t)}function o(e){if(!i.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}r.keys=function(){return Object.keys(n)},r.resolve=o,e.exports=r,r.id="f02q"},f2ub:function(e,t){e.exports={id:"test-hexarch",creationDate:"2019-03-01",defaultLanguage:"french",cospeakers:[{id:"JkNourry",name:"Jordan Nourry",profile:"https://twitter.com/JkNourry"}],languages:{french:{defaultEvent:"bdxio2019",title:"Architecture Hexagonale : Comment bien écrire ses tests ?",description:["De plus en plus dâéquipes adoptent lâarchitecture hexagonale comme structure de prédilection pour leurs applications métiers, mais peu dâentre elles savent réellement bien les tester. Et malheureusement lorsque lâon se plante sur ce point, la maintenance de notre architecture hexa devient un véritable calvaire!","Lors de ce talk, nous allons aborder les 5 niveaux de tests préconisés pour les microservices adaptés à l'architecture héxagonale. Et en prime comment avoir une documentation drivée par les tests.","Venez découvrir à côté de quoi vous êtes peut-être passés dans le développement de vos tests! Ceci est une live coding session en Java/Kotlin SpringBoot."]}},events:[{id:"breizhcamp2019",slides:"https://slides.com/julientopcu/architecture-hexagonale-level-2-comment-bien-ecrire-ses-tests/#/",date:"2019-03-22"},{id:"bdxio2019",date:"2019-11-15",slides:"https://slides.com/julientopcu/bdxio-architecture-hexagonale-level-2-comment-bien-crire-ses-tests",video:"https://www.youtube.com/embed/v--zkIEciq4"},{id:"parisjug122019",date:"2019-12-10",video:"https://www.youtube.com/embed/4vBJAN3ttkc"},{id:"nantesjug032020",date:"2020-03-12",cancelled:!0}],materials:[{type:"SLIDES",url:"https://slides.com/julientopcu/architecture-hexagonale-level-2-comment-bien-ecrire-ses-tests",language:"french"},{type:"REPOSITORY",url:"https://gitlab.com/crafts-records/talkadvisor",icon:"https://assets.gitlab-static.net/uploads/-/system/group/avatar/4690839/owl.png"},{type:"ARTICLE",title:"Hexagonal Architecture: Decoupling your technical co
2de from your business logic",url:"https://beyondxscratch.com/2017/08/19/decoupling-your-technical-code-from-your-business-logic-with-the-hexagonal-architecture-hexarch/",icon:"https://beyondxscratch.files.wordpress.com/2017/08/space-telescope-mirror-segments-james-webb-cosmos-46168.jpeg"},{type:"ARTICLE",title:"Implementing Functional Tests in Domain-Driven Design & Hexagonal Architecture using Cucumber (Domain-Driven Testing)",url:"https://beyondxscratch.com/2019/08/26/implementing-functional-tests-in-domain-driven-design-hexagonal-architecture-using-cucumber-domain-driven-testing/",icon:"https://beyondxscratch.files.wordpress.com/2019/07/background.png"},{type:"ARTICLE",title:"DDD/Hexagonal Architecture Tips & Tricks: Binding the Domain to the Spring Context with ComponentScan",url:"https://beyondxscratch.com/2019/07/28/domaindrivendesign-hexagonalarchitecture-tips-tricks-binding-the-domain-to-the-spring-context-with-componentscan/",icon:"https://beyondxscratch.files.wordpress.com/2019/07/background.png"},{type:"ARTICLE",title:"Behavior-Driven Development from scratch",url:"https://beyondxscratch.com/2019/05/21/behavior-driven-development-from-scratch/",icon:"https://beyondxscratch.files.wordpress.com/2018/12/infinity-3614410_1920.jpg"}],interviews:[],feedbacks:[{url:"https://www.liksi.tech/2019/07/08/karate-le-testing-e2e-automatise-human-readable/",language:"french"},{url:"https://blog.zenika.com/2019/04/08/flashback-breizhcamp-jour-3/",language:"french"},{url:"https://www.liksi.tech/2019/04/11/breizhcamp-2019/",language:"french"},{url:"https://www.gekko.fr/gekko-was-present-at-bdx-i-o-2019-what-about-you/"},{url:"https://meetups.vcz.fr/meetups/bdx-io/2019-11-15_Hexagonal-architecture-writing-tests.html",language:"english"}],tweets:[{id:"1148168479561981952"},{id:"1109092024567894022"}]}},h8N5:function(e,t){e.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTkuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTEyIDUxMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8cmVjdCB5PSI4NS4zMzMiIHN0eWxlPSJmaWxsOiNGMEYwRjA7IiB3aWR0aD0iNTEyIiBoZWlnaHQ9IjM0MS4zMzciLz4KPHBvbHlnb24gc3R5bGU9ImZpbGw6I0Q4MDAyNzsiIHBvaW50cz0iMjg4LDg1LjMzIDIyNCw4NS4zMyAyMjQsMjIzLjk5NiAwLDIyMy45OTYgMCwyODcuOTk2IDIyNCwyODcuOTk2IDIyNCw0MjYuNjYyIDI4OCw0MjYuNjYyIAoJMjg4LDI4Ny45OTYgNTEyLDI4Ny45OTYgNTEyLDIyMy45OTYgMjg4LDIyMy45OTYgIi8+CjxnPgoJPHBvbHlnb24gc3R5bGU9ImZpbGw6IzAwNTJCNDsiIHBvaW50cz0iMzkzLjc4NSwzMTUuMzU4IDUxMiwzODEuMDM0IDUxMiwzMTUuMzU4IAkiLz4KCTxwb2x5Z29uIHN0eWxlPSJmaWxsOiMwMDUyQjQ7IiBwb2ludHM9IjMxMS42NTIsMzE1LjM1OCA1MTIsNDI2LjY2MiA1MTIsMzk1LjE4OCAzNjguMzA3LDMxNS4zNTggCSIvPgoJPHBvbHlnb24gc3R5bGU9ImZpbGw6IzAwNTJCNDsiIHBvaW50cz0iNDU4LjYzNCw0MjYuNjYyIDMxMS42NTIsMzQ0Ljk5OCAzMTEuNjUyLDQyNi42NjIgCSIvPgo8L2c+Cjxwb2x5Z29uIHN0eWxlPSJmaWxsOiNGMEYwRjA7IiBwb2ludHM9IjMxMS42NTIsMzE1LjM1OCA1MTIsNDI2LjY2MiA1MTIsMzk1LjE4OCAzNjguMzA3LDMxNS4zNTggIi8+Cjxwb2x5Z29uIHN0eWxlPSJmaWxsOiNEODAwMjc7IiBwb2ludHM9IjMxMS42NTIsMzE1LjM1OCA1MTIsNDI2LjY2MiA1MTIsMzk1LjE4OCAzNjguMzA3LDMxNS4zNTggIi8+CjxnPgoJPHBvbHlnb24gc3R5bGU9ImZpbGw6IzAwNTJCNDsiIHBvaW50cz0iOTAuMzQxLDMxNS4zNTYgMCwzNjUuNTQ2IDAsMzE1LjM1NiAJIi8+Cgk8cG9seWdvbiBzdHlsZT0iZmlsbDojMDA1MkI0OyIgcG9pbnRzPSIyMDAuMzQ4LDMyOS41MSAyMDAuMzQ4LDQyNi42NjEgMjUuNDkxLDQyNi42NjEgCSIvPgo8L2c+Cjxwb2x5Z29uIHN0eWxlPSJmaWxsOiNEODAwMjc7IiBwb2ludHM9IjE0My42OTMsMzE1LjM1OCAwLDM5NS4xODggMCw0MjYuNjYyIDAsNDI2LjY2MiAyMDAuMzQ4LDMxNS4zNTggIi8+CjxnPgoJPHBvbHlnb24gc3R5bGU9ImZpbGw6IzAwNTJCNDsiIHBvaW50cz0iMTE4LjIxNSwxOTYuNjM0IDAsMTMwLjk1OCAwLDE5Ni42MzQgCSIvPgoJPHBvbHlnb24gc3R5bGU9ImZpbGw6IzAwNTJCNDsiIHBvaW50cz0iMjAwLjM0OCwxOTYuNjM0IDAsODUuMzMgMCwxMTYuODA0IDE0My42OTMsMTk2LjYzNCAJIi8+Cgk8cG9seWdvbiBzdHlsZT0iZmlsbDojMDA1MkI0OyIgcG9pbnRzPSI1My4zNjYsODUuMzMgMjAwLjM0OCwxNjYuOTk0IDIwMC4zNDgsODUuMzMgCSIvPgo8L2c+Cjxwb2x5Z29uIHN0eWxlPSJmaWxsOiNGMEYwRjA7IiBwb2ludHM9IjIwMC4zNDgsMTk2LjYzNCAwLDg1LjMzIDAsMTE2LjgwNCAxNDMuNjkzLDE5Ni42MzQgIi8+Cjxwb2x5Z29uIHN0eWxlPSJmaWxsOiNEODAwMjc7IiBwb2ludHM9IjIwMC4zNDgsMTk2LjYzNCAwLDg1LjMzIDAsMTE2LjgwNCAxNDMuNjkzLDE5Ni42MzQgIi8+CjxnPgoJPHBvbHlnb24gc3R5bGU9ImZpbGw6IzAwNTJCNDsiIHBvaW50cz0iNDIxLjY1OSwxOTYuNjM2IDUxMiwxNDYuNDQ2IDUxMiwxOTYuNjM2IAkiLz4KCTxwb2x5Z29uIHN0eWxlPSJmaWxsOiMwMDUyQjQ7IiBwb2ludHM9IjMxMS42NTIsMTgyLjQ4MiAzMTEuNjUyLDg1LjMzMSA0ODYuNTA5LDg1LjMzMSAJIi8+CjwvZz4KPHBvbHlnb24gc3R5bGU9ImZpbGw6I0Q4MDAyNzsiIHBvaW50cz0iMzY4LjMwNywxOTYuNjM0IDUxMiwxMTYuODA0IDUxMiw4NS4zMyA1MTIsODUuMzMgMzExLjY1MiwxOTYuNjM0ICIvPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8L3N2Zz4K"}
2,huYP:function(e,t){e.exports={id:"context-map-train-booking",creationDate:"2022-09-01",defaultLanguage:"english",languages:{english:{defaultEvent:"dddfr092022",title:"Context maps on the roof - Train Booking",description:["Context map is a truly powerful tool coming from Domain Driven Design (DDD). It allows us to understand and tackle the complexity of any kind of domain, by understanding there can be many different contexts involved in a given Domain.","Through 3 examples that will present from scratch different domains, this evening will be an opportunity to illustrate the strength of the Context Map: a highly effective collaborative tool for understanding and collaboration between product and tech.","The same support serving a single goal: user satisfaction."]}},events:[{id:"dddfr092022",video:"https://www.youtube.com/embed/-qMSfJ8mq_k"}],materials:[{type:"SLIDES",url:"https://slides.com/julientopcu/train-booking-context-map",language:"english"}],interviews:[],feedbacks:[]}},"i/+r":function(e,t){e.exports={id:"hexagonal-architecture-a-complexity-and-technical-debt-management-pattern",creationDate:"2022-05-11",defaultLanguage:"english",cospeakers:[],languages:{english:{defaultEvent:"devoxxbe2024",title:"Hexagonal Architecture in Practice, Live Coding That Will Make Your Applications More Sustainable",description:["There always comes a point where software becomes so complex and old that it becomes unmaintainable. Updating the technical stack without breaking everything becomes impossible, implementing new features takes longer, and the technical debt is so overwhelming that refactoring becomes exorbitant.","What if we told you that all of this is more of a practice problem than a software aging problem?","Come and discover through hands-on experience in this 100% live coding session how Hexagonal Architecture can tackle software complexity, making it possible for you to be adaptable and sustainable while helping you manage your technical debt more effectively."]},french:{defaultEvent:"devoxxfr2024",title:"Architecture Hexagonale : un pattern de gestion de la complexité logicielle et de la dette technique",description:["Il arrive toujours un moment où, le logiciel est tellement gros et vieux quâil devient inmaintenable.Impossible de mettre à jour la stack technique sans tout casser, les nouvelles fonctionnalités deviennent de plus en plus longue à implémenter et la dette technique étant tellement lourde que le refactoring devient exorbitant.","Et si on vous disait que tout ça était plus un problème de pratique quâun problème de vieillesse du logiciel ?","Venez découvrir par ce retour dâexpérience, comment lâArchitecture Hexagonale peut tacler la complexité logicielle en vous permettant dâêtre évolutif et pérenne tout en vous aidant à mieux gérer votre dette technique."]}},events:[{id:"alpescraft22",date:"2022-06-09",video:"https://www.youtube.com/embed/dtP-tTHjckE",slides:"https://slides.com/julientopcu/architecture-hexagonale-un-pattern-de-gestion-de-la-complexit-logicielle-et-de-la-dette-technique"},{id:"breizhcamp2023",date:"2023-06-29",video:"https://www.youtube.com/embed/xUlUEQL7i2E"},{id:"bbl-valsoftware2023",date:"2023-07-11"},{id:"elsassjug2023",date:"2023-10-11"},{id:"devoxxfr2024",date:"2024-04-19",video:"https://www.youtube.com/embed/-dXN8wkN0yk?si=t8IdHiwDb1y1Dz0j"},{id:"devoxxbe2024",date:"2024-10-10",video:"https://www.youtube.com/embed/YPmKHm7G19Q?si=2OmN6Wh3iMhNa722",slides:"https://slides.com/julientopcu/hexagonal-architecture-in-practice-live-coding-that-will-make-your-applications-more-sustainable"},{id:"devfestdijon2024",date:"2024-12-06",video:"https://www.youtube.com/embed/zuB98pj3EeM"},{id:"meetup-springparis24",date:"2024-12-10"},{id:"jfokus2025",date:"2025-02-03",video:"https://www.youtube.com/embed/NTVVLoOkkIg"},{id:"tnt25",date:"2025-02-07",video:"https://www.youtube.com/embed/vvEP8wZNFfQ?si=cd35vnu8zOa3Qj6f"},{id:"vxam2025",date:"2025-04-03",video:"https://www.youtube.com/embed/ZN_g_Vdzob4?si=yaRniAemGJ7LIgh7"},{id:"devoxxuk2025",date:"2025-05-08",video:"https://www.youtube.com/embed/duyKOK-qBL0"},{id:"codemotionmadrid2025",date:"2025-05-20",video:"https://www.youtube.com/embed/aAmpbAIMVek"},{id:"springio2025",date:"2025-05-22",video:"https://www.youtube.com/embed/3siPsq17NAU"},{id:"devoxxpl2025",date:"2025-06-13"},{id:"nantescraft2025",date:"2025-10-02"},{id:"capgemini2026",date:"2026-02-19"},{id:"vxbuc2026",date:"2026-04-29",video:"https://www.youtube.com/embed/QZrl5tghsTA"}],materials:[{type:"SLIDES",url:"https://slides.com/julientopcu/architecture-hexagonale-un-pattern-de-gestion-de-la-complexit-logicielle-et-de-la-dette-technique",language:"french"},{type:"SLIDES",url:"https://slides.com/julientopcu/hexagonal-architecture-in-practice-live-coding-that-will-make-your-applications-more-sustainable",language:"english"},{type:"REPOSITORY",url:"https://gitlab.com/beyondxscratch/hexagonal-architecture-java-springboot",icon:"https://beyondxscratch.c
2om/wp-content/uploads/2019/08/logo-white-1.png"}],interviews:[],feedbacks:[]}},iuhU:function(e,t,i){"use strict";function n(e){var t,i,r="";if("string"==typeof e||"number"==typeof e)r+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(i=n(e[t]))&&(r&&(r+=" "),r+=i);else for(t in e)e[t]&&(r&&(r+=" "),r+=t);return r}t.a=function(){for(var e,t,i=0,r="";i<arguments.length;)(e=arguments[i++])&&(t=n(e))&&(r&&(r+=" "),r+=t);return r}},izJ4:function(e,t){e.exports={id:"model-tension-heuristics-preventing-accidental-design-debt",creationDate:"2025-03-12",defaultLanguage:"english",cospeakers:[{id:"josianchevalier",name:"Josian Chevalier",profile:"https://twitter.com/JosianChevalier"}],languages:{english:{defaultEvent:"dddeu2025",title:"Model Tension Heuristics: Preventing Accidental Design Debt",description:["All models are wrong, but some are useful.â This insight from George Box has become a cornerstone of software modeling. While exploration and experimentation are essential for shaping models, it is often challenging to know when a model is wrong or, worse, when an existing model has become obsolete and is no longer as useful.",'As a result, unsuitable models may be still used for a long time, leading to different issues not always identified as forms of design debt. These include the spork effect (intrinsic coupling), model fragmentation (extrinsic coupling), and model sclerosis, which ultimately contribute to entropy or the "Big Ball of Mud" phenomenon. These problems arise from undetected and unresolved model tensions.',"In this talk, we will explore what model tensions are, the complications they cause and why they occur. We will also present a set of heuristics to identify and address different kind of model tensions."]},french:{defaultEvent:"devoxxfr2026",title:"Vous pensiez que la dette technique était le pire? Voici la dette de conception !",description:["Dans nos métiers, la dette technique est sans doute la chose la plus frustrante, éprouvante et coriace contre laquelle nous devons lutter. Bien sûr, il existe des bonnes pratiques : refactoriser, viser la simplicité avec KISS, éviter de trop anticiper avec YAGNI afin de limiter cette dette au maximum. Et pourtant, on nây vient jamais vraiment à bout. Pire encore, elle continue de sâaccumuler même lorsque nous les appliquons, comme une fatalité.","Et si ces mêmes bonnes pratiques ne faisaient parfois quâempirer le problème au lieu de le résoudre? La dette technique peut nâêtre que la partie visible de quelque chose de plus profond : la dette de design accidentelle (dette de conception). Un problème bien plus complexe, donnant lieu à des logiciels spaghettis et à des microservices en monolithe distribué, dont nous sommes souvent à lâorigine sans même nous en rendre compte.","Dans cette conférence, nous explorerons les mécanismes de la dette de design et ses impacts sur notre architecture, nos processus, notre organisation, et même notre business. à travers des exemples concrets, nous verrons comment la détecter, analyser sa profondeur et agir avant quâelle ne sâancre durablement."]}},events:[{id:"dddeu2025",date:"2025-06-06",video:"https://www.youtube.com/embed/EZTl9FH5AFQ"},{id:"newcrafts2025",date:"2025-11-04",video:"https://www.youtube.com/embed/bW0d3vDzi8Q"},{id:"devoxxfr2026",date:"2026-04-22",video:"https://www.youtube.com/embed/lfACSvxl4uY"},{id:"devoxxpl2026",date:"2026-06-18"},{id:"breizhcamp2026",date:"2026-06-24"},{id:"nantescraft2026",date:"2026-09-10"},{id:"devoxxbe2026",date:"2026-10-08"}],materials:[{type:"SLIDES",url:"https://slides.com/julientopcu/model-tension-heuristics-preventing-accidental-design-debt",language:"english"}],interviews:[],feedbacks:[],tweets:[]}},j1Rg:function(e,t){e.exports={id:"nodejs-hexagonal-architecture",creationDate:"2021-07-21",defaultLanguage:"french",cospeakers:[{id:"adrienjoly",name:"Adrien Joly",profile:"https://adrienjoly.com/"}],languages:{french:{defaultEvent:"bxs-2",title:"Développer en NodeJS avec l'Architecture Hexagonale",description:["Après le succès de la première
2édition, Adrien Joly et Julien Topçu reviennent dans un live coding pour terminer l'implémentation de leur application d'e-commerce en NodeJS & TypeScript au moyen du Domain-Driven Design et de l'Architecture Hexagonale.","Maintenant que le domaine est terminé (qu'on retouchera peut-être un peu au passage), nous allons nous attaquer à nos adapters, c'est à dire nos controllers pour exposer notre service en REST et notre couche de persistance en base de donnée.","Ce live est interactif, n'hésitez pas à interagir avec nos streameurs au moyen du chat intégré !","En espérant vous voir aussi nombreux que la première fois !"]}},events:[{id:"bxs-2",video:"https://www.youtube.com/embed/VMgFozpPSkM"}],materials:[{type:"REPOSITORY",url:"https://gitlab.com/beyondxscratch/nodejs-with-domain-driven-design",icon:"https://beyondxscratch.com/wp-content/uploads/2019/08/logo-white-1.png"}],interviews:[],feedbacks:[]}},jTFr:function(e,t,i){var n={"./bdd.js":"Z2dy","./context-map-train-booking.js":"huYP","./conway-law.js":"JXoD","./ecosysteme-conferences.js":"TbfD","./fed-up-with-softwarecraftsmanship.js":"r8vT","./hateoas-ddd.js":"dVIQ","./hexagonal-architecture-a-complexity-and-technical-debt-management-pattern.js":"i/+r","./hexagonal-architecture-nodejs-migration.js":"jiF7","./hive.js":"4n+Q","./how-why-sponsor-confs.js":"8Syk","./it-pop-culture.js":"daya","./junit5.js":"P83p","./kanban-noestimates-xp.js":"s1rx","./live-coding-the-hive.js":"aXR6","./model-expressions-an-overlooked-aspect-of-domain-driven-design.js":"FDkA","./model-mitosis.js":"Htei","./model-tension-heuristics-preventing-accidental-design-debt.js":"izJ4","./no-estimates.js":"8Th+","./nodejs-ddd.js":"PUTT","./nodejs-hexagonal-architecture.js":"j1Rg","./oauth-made-easy.js":"0Ur2","./osez-devenir-speaker.js":"ujcs","./owasptop10.js":"UZ2v","./test-hexarch.js":"f2ub","./vulnerabilities-in-dependencies.js":"0got"};function r(e){var t=o(e);return i(t)}function o(e){if(!i.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}r.keys=function(){return Object.keys(n)},r.resolve=o,e.exports=r,r.id="jTFr"},jiF7:function(e,t){e.exports={id:"hexagonal-architecture-nodejs-migration",creationDate:"2022-02-15",defaultLanguage:"french",cospeakers:[{id:"adrienjoly",name:"Adrien Joly",profile:"https://adrienjoly.com/"},{id:"JkNourry",name:"Jordan Nourry",profile:"https://twitter.com/JkNourry"}],languages:{french:{defaultEvent:"devoxxfr2022",title:"Architecturoplastie hexagonale dâun backend Node.js : Opération à code ouvert",description:["Votre backend n'a même pas 3 ans et pourtant, il nâest pas en forme. Il devient difficile dây ajouter de nouvelles fonctionnalités, de maintenir et/ou de refactorer lâexistant. Le code est intolérant à la montée de versions de librairies, pouvant lui causer une régressionnite fonctionnelle aiguë. Les tests deviennent douloureux à lâécriture.","Les précédents choix techniques ont comme effet secondaire de limiter ou verrouiller lâévolution du logiciel, à un point où il devient tentant de repartir de zéro. Votre backend commence lentement à pourrir, son architecture sâétant sclérosée.","Mais savez-vous quâil existe différents types de complexité logicielle ? Et que bien les identifier en les séparant avec un pattern dâarchitecture adapté, peut améliorer la pérennité de nos applications ? Et tout ça, quels que soient les frameworks que vous utilisez ?","Dans cette opération à code ouvert sous forme dâun mob-programming intéractif, venez découvrir comment redonner un coup de jeune à votre backend à bout de souffle en le faisant migrer vers de lâArchitecture Hexagonale."]}},events:[{id:"devoxxfr2022",date:"2022-04-20",slides:"https://slides.com/julientopcu/architecturoplastie-hexagonale-dun-backend-nodejs-operation-code-ouvert",video:"https://www.youtube.com/embed/r2XMwAUqZBA"},{id:"vxlu2023",date:"2023-06-21",video:"https://www.youtube.com/embed/r_x_sEDCV1Y"}],materials:[{type:"REPOSITORY",url:"https://gitlab.com/shodo.io/public/hexagonal-architecture-nodejs-migration",icon:"https://cdn-images-1.medium.com/max/105/1*[email protected]"},{type:"SLIDES",url:"https://slides.com/julientopcu/architecturoplastie-hexagonale-dun-backend-nodejs-operation-code-ouvert",language:"french"}],interviews:[],feedbacks:[]}},l3Wi:function(e,t,i){"use strict";function n(e){var t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:166;function n(){for(var n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];var s=this,a=function(){e.apply(s,r)};clearTimeout(t),t=setTimeout(a,i)}return n.clear=function(){clearTimeout(t)},n}i.d(t,"a",(function(){return n}))},o46R:function(e,t,i){"use strict";i.d(t,"a",(function(){return r}));var n=i("U8pU");function r(e){var t=function(e,t){if("object"!=Object(n.a)(e)||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var r=i.call(e,t||"default");if("object"!=Object(n.a)(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==Object(n.a)(t)?t:t+""}},qT12:function(e,t,i){"use strict";var n=60103,r=60106,o=60107,s=60108,a=60114,l=60109,d=60110,u=60112,c=60113,p=60120,m=60115,f=60116,h=60121,v=60122,g=60117,b=60129,y=60131;if("function"==typeof Symbol&&Symbol.for){var w=Symbol.for;n=w("react.element"),r=w("react.portal"),o=w("react.fragment"),s=w("react.strict_mode"),a=w("react.profiler"),l=w("react.provider"),d=w("react.context"),u=w("react.forward_ref"),c=w("react.suspense"),p=w("react.suspense_list"),m=w("react.memo"),f=w("react.lazy"),h=w("react.block"),v=w("react.server.block"),g=w("react.fundamental"),b=w("react.debug_trace_mode"),y=w("react.legacy_hidden")}function x(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case n:switch(e=e.type){case o:case a:case s:case c:case p:return e;default:switch(e=e&&e.$$typeof){case d:case u:case f:case m:case l:return e;default:return t}}case r:return t}}}var j=l,k=n,S=u,D=o,M=f,O=m,I=r,C=a,z=s,P=c;t.ContextConsumer=d,t.ContextProvider=j,t.Element=k,t.ForwardRef=S,t.Fragment=D,t.Lazy=M,t.Memo=O,t.Portal=I,t.Profiler=C,t.StrictMode=z,t.Suspense=P,t.isAsyncMode=function(){return!1},t.isConcurrentMode=function(){return!1},t.isContextConsumer=function(e){return x(e)===d},t.isContextProvider=function(e){return x(e)===l},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===n},t.isForwardRef=function(e){return x(e)===u},t.isFragment=function(e){return x(e)===o},t.isLazy=function(e){return x(e)===f},t.isMemo=function(e){return x(e)===m},t.isPortal=function(e){return x(e)===r},t.isProfiler=function(e){return x(e)===a},t.isStrictMode=function(e){return x(e)===s},t.isSuspense=function(e){return x(e)===c},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===a||e===b||e===s||e===c||e===p||e===y||"object"==typeof e&&null!==e&&(e.$$typeof===f||e.$$typeof===m||e.$$typeof===l||e.$$typeof===d||e.$$typeof===u||e.$$typeof===g||e.$$typeof===h||e[0]===v)},t.typeOf=x},qZSX:function(e,t,i){"use strict";i.d(t,"a",(function(){return o}
2));var n=i("q1tI"),r=i.n(n);function o({language:e}){return r.a.createElement("img",{className:"flag",src:i("f02q")(`./${e}.svg`)})}},r36Y:function(e,t,i){"use strict";e.exports=i("Copi")},r8vT:function(e,t){e.exports={id:"fed-up-with-softwarecraftsmanship",creationDate:"2022-09-03",defaultLanguage:"french",cospeakers:[{id:"yanndanot",name:"Yann Danot",profile:"https://twitter.com/YDanot"}],languages:{french:{defaultEvent:"bdxio2022",title:"Yâen a marre du software craftsmanship !",description:["Vous en avez assez quâon vous dise de faire des katas. Vous ne voyez pas le rapport avec vos problématiques de tous les jours. Soyons sérieux : on doit délivrer, on nâa pas forcément le temps de s'entraîner sur de la théorie. Et puis les coachs craft débarquent souvent avec un rôle prédicateur, ont de grands principes, câest beau, mais imposent des méthodes sans chercher à comprendre vos peines, ce n'est pas le TDD qui va résoudre vos irritants.⦠Bref yâen a marre du craft.","Mais est-ce le software craftsmanship le problème, ou bien la communauté qui nâest pas à la hauteur de ses ambitions ?","Dans ce talk, 2 coachs craft lancent un signal dâalarme sur les dérives dâun mouvement qui commencent à écoeurer les gens.Nous verrons les défauts de postures - souvent élitistes et dogmatiques - les croyances et les problèmes dâimplémentation qui sont les causes de la fatigue et de la défiance grandissante envers le craft."]}},events:[{id:"scrennes092022",date:"2022-09-29",video:"https://www.youtube.com/embed/KpQ-t9wWU3k"},{id:"codeursenseine2022",date:"2022-11-17",video:"https://www.youtube.com/embed/Rwbhq8T4RDo"},{id:"bdxio2022",date:"2022-12-02",video:"https://www.youtube.com/embed/jG8dtEZZIXM"},{id:"atrennes2022",date:"2022-12-15"},{id:"sclux022023",date:"2023-02-07",video:"https://www.youtube.com/embed/38Mcwd-iYgY"},{id:"scromandie022023",date:"2023-04-18",video:"https://www.youtube.com/embed/IwNdfI74wLU"},{id:"bbl-fdj2023",date:"2023-11-16"},{id:"devopsdday2023",date:"2023-11-23"}],materials:[{type:"SLIDES",url:"https://slides.com/julientopcu/yen-a-marre-du-software-craftsmanship",language:"french"}],interviews:[],feedbacks:[],tweets:[]}},rePB:function(e,t,i){"use strict";i.d(t,"a",(function(){return r}));var n=i("o46R");function r(e,t,i){return(t=Object(n.a)(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}},s1rx:function(e,t){e.exports={id:"kanban-noestimates-xp",creationDate:"2018-07-15",defaultLanguage:"french",languages:{french:{defaultEvent:"bbl-contentsquare2018",title:"KanBan #noEstimates & Extreme Programming : Boostez votre création de valeur",description:["Bien que l'on ait fait le grand saut vers l'agilité, certains fondamentaux de l'organisation de nos équipes n'ont pas changé.","Réunionite, priorisation par le coût, effet tunnel des projets et de nos développements... du legacy hérité de la bonne époque du waterfall qui malheureusement persiste encore dans notre manière de travailler.","Apprenez à mesurer votre création de valeur, devenir prédictible, identifier les bottlenecks qui vous empêchent de vous améliorer et comment évoluer vers le #noEstimates avec des vrais cas pratiques."]}},events:[{id:"bbl-contentsquare2018",video:"https://www.youtube.com/embed/P0_M00X4Xlw",language:"french"},{id:"meetup-expedia2018"}],materials:[{type:"SLIDES",url:"https://slides.com/julientopcu/kanban-no-estimates-xp-meetup",language:"french"}],interviews:[],feedbacks:[]}},tr08:function(e,t,i){"use strict";i.d(t,"a",(function(){return o}));var n=i("aXM8"),r=(i("q1tI"),i("cNwE"));function o(){return Object(n.a)()||r.a}},ujcs:function(e,t){e.exports={id:"osez-devenir-speaker",creationDate:"2020-02-20",defaultLanguage:"french",cospeakers:[{id:"estelandry",name:"Estelle Landry",profile:"https://twitter.com/estelandry"}],languages:{french:{defaultEvent:"summercamp2020",title:"Osez Devenir Speaker !",description:["Devenir Speaker, câest peut-être quelque chose qui vous fait envie. Mais quâest ce qui vous empêche dâaller plus loin ?","Sûrement cette petite voix qui vous dit quâil y a beaucoup de gens plus qualifiés que vous pour parler dâun sujet. Quâest ce que vous avez à partager de toute manière ? Et puis parler devant une centaine de personnes ce nâest pas pour vous, les gens qui arr
2ivent à faire ça ont certaines prédispositionsâ¦","Lors de cette session, nous verrons ensemble que cette petite voix a tort. Vous pouvez le faire ! Et pour bien se lancer, nous verrons les bonnes pratiques de la création d'un talk jusqu'à la réalisation de celui-ci: le choix du sujet, la création du talk et la candidature aux conférences."]}},events:[{id:"bbl-octo2020",date:"2020-02-20",slides:"https://slides.com/julientopcu/bbl-osez-devenir-speaker"},{id:"breizhcamp2020",date:"2020-03-26",cancelled:!0},{id:"rivieradev2020",date:"2020-05-14",cancelled:!0},{id:"summercamp2020",date:"2020-09-11",video:"https://www.youtube.com/embed/278MbzdJ_Gg",slides:"https://slides.com/julientopcu/osez-devenir-speaker",language:"french"},{id:"atbdx2020",date:"2020-10-28",video:"https://www.youtube.com/embed/U4YFr_UMXCA"},{id:"meetup-gdglemans112020",date:"2020-11-12",cancelled:!0}],materials:[{type:"SLIDES",url:"https://slides.com/julientopcu/osez-devenir-speaker",language:"french"}],interviews:[],feedbacks:[],tweets:[]}},vuIU:function(e,t,i){"use strict";i.d(t,"a",(function(){return o}));var n=i("o46R");function r(e,t){for(var i=0;i<t.length;i++){var r=t[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,Object(n.a)(r.key),r)}}function o(e,t,i){return t&&r(e.prototype,t),i&&r(e,i),Object.defineProperty(e,"prototype",{writable:!1}),e}},w2BD:function(e,t,i){var n={"./adeodevsummit.png":"XbCh","./agiletour.png":"dQqP","./agre.png":"EYiy","./alpescraft.png":"IgJn","./atbdx.png":"v5wY","./atniort.png":"oicx","./atrennes.png":"s491","./axa.png":"13BK","./bbl.png":"nvIR","./bdxio.png":"7nkq","./beyondxscratch.png":"sItv","./bordeaux-developer-experience.png":"jWnB","./breizhcamp.png":"Vmbd","./breizhcamp2019.png":"Kcq+","./bsides.png":"wosp","./carbonit.png":"B/bw","./carrefourdevsummit22.png":"8jKC","./ces.png":"8NiB","./cfrdevsummit.png":"6Osu","./cloudsud.png":"Hxv6","./codemotion.png":"FIK9","./codeursenseine.png":"rNZz","./commerzbank.png":"AB9u","./contentsquare.png":"vHyI","./craftconf.png":"Iyvz","./craftsrecords.png":"rnzn","./dddeu.png":"t+mz","./default.png":"fy6g","./devbcn.png":"4a9Q","./devcon.png":"f4aW","./devfest.png":"ABBH","./devfestlille2021.png":"lwQm","./devfestnantes2018.png":"hY4V","./devfestnantes2019.png":"c3Il","./devfestparis2020.png":"eT6z","./devfesttoulouse2018.png":"UU9S","./devopsdday.png":"qhyF","./devopsdday2019.png":"d+sg","./devopsdday2022.png":"t1nX","./devoxx.png":"tkK4","./devoxxbe.png":"IThj","./devoxxfr.png":"TyeP","./devoxxpl.png":"cxAF","./devoxxuk.png":"o0JU","./domaindrivendesigneurope.png":"suLn","./eddd.png":"Rp5q","./exploreddd.png":"AYrt","./fc.png":"txfN","./flowcon.png":"kDD/","./geecon.png":"mPBd","./insee.png":"X3GG","./jfall.png":"nPN/","./jfokus.png":"QROu","./jnation.png":"+fph","./kandddinsky.png":"fpDu","./mappy.png":"ojsR","./meetup.png":"+mGx","./mixit.png":"Z6pc","./mixit2019.png":"6cJY","./msa.png":"uh4P","./nantescraft.png":"awnM","./nantesjug.png":"cnSY","./nc.png":"u3fX","./newcrafts.png":"oZ+M","./ouestfrance.png":"Zv8Z","./parisjug.png":"wYpr","./poleemploi.png":"I1Hd","./rivdev.png":"i8WQ","./rivieradev.png":"GnOB","./sg.png":"5w8T","./snc.png":"+764","./snowcamp.png":"n7W8","./societegenerale.png":"o3Fg","./springio.png":"lz64","./summercamp.png":"xXiq","./sunnytech.png":"Raxd","./tnt.png":"K7Br","./tourainetech.png":"O5Ci","./voxxed.png":"DOmk","./vxdms2018.png":"Erar","./vxlu.png":"YXGU","./web2day.png":"SClu","./worldlinetechforum.png":"xLBz","./xcraft.png":"py3A"};function r(e){var t=o(e);return i(t)}function o(e){if(!i.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}r.keys=function(){return Object.keys(n)},r.resolve=o,e.exports=r,r.id="w2BD"},wx14:function(e,t,i){"use strict";function n(){return(n=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)({}).hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e}).apply(null,arguments)}i.d(t,"a",(function(){return n}))},zLVn:function(e,t,i){"use strict";function n(e,t){if(null==e)return{};var i={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;i[n]=e[n]}return i}i.d(t,"a",(function(){return n}))}}]); 3//# sourceMappingURL=d9d38ef3ab7710d8557d95d882d1f942072172a6-640e5cda6fc7f6b3a71b.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.