diff --git a/.gitignore b/.gitignore index 0de7928..276db58 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ public/ node_modules/ .firebase/ .idea/ -.firebase/ \ No newline at end of file +.vscode/ +yarn-error.log diff --git a/content/partners/soutien/welovedevs_com.md b/content/partners/soutien/welovedevs_com.md new file mode 100644 index 0000000..66e6e2b --- /dev/null +++ b/content/partners/soutien/welovedevs_com.md @@ -0,0 +1,22 @@ +--- +key: welovedevs_com +title: WeLoveDevs.com +category: soutien +order: 34 +logo: /images/partners/logo-welovedevs_com.png +website: 'https://welovedevs.com/' +lang: fr +why: > + Pour supporter la communauté de développeur Toulousaine, leurs partages de + connaissance, pour rencontrer plus de personnes fantastiques encore ! +socials: + - icon: twitter + link: 'https://welovedevs.com/' + - icon: linkedin + link: 'https://www.linkedin.com/company/welovedevs/' + - icon: facebook + link: 'https://www.facebook.com/welovedevs/' +--- +WeLoveDevs.com aide les développeurs à définir quelle entreprise leur permettra de s'épanouir. +Nous pensons qu'un développeur devrait pouvoir trouver par lui-même une entreprise où il sera heureux. +Aussi WeLoveDevs.com permet aux entreprises de proposer une vitrine sur la vie de leurs collaborateurs. Nos équipes les accompagnent dans le fait de produire du contenu authentique et transparent, qui donne envie d'être candidat. diff --git a/content/schedule/_index.fr.md b/content/schedule/_index.fr.md index a61d049..f260569 100644 --- a/content/schedule/_index.fr.md +++ b/content/schedule/_index.fr.md @@ -4,10 +4,21 @@ menu: main: weight: 10 +horizontal: false + draft: true --- {{% hero %}} + + + ICal + + + + ICal + + {{% /hero %}} diff --git a/content/schedule/_index.md b/content/schedule/_index.md index a255479..fd22076 100644 --- a/content/schedule/_index.md +++ b/content/schedule/_index.md @@ -4,9 +4,16 @@ menu: main: weight: 10 +horizontal: false + draft: true --- {{% hero %}} + + + ICal + + {{% /hero %}} diff --git a/data/info.yml b/data/info.yml index deb38c0..3a082d3 100644 --- a/data/info.yml +++ b/data/info.yml @@ -1,16 +1,16 @@ id: HJRThubF4uYPkb7jSUxi name: DevFest Toulouse 2019 address: + latLng: + lng: 1.4345827 + lat: 43.6115538 formattedAddress: '11 Espl. Compans Caffarelli, 31000 Toulouse, France' locality: - long_name: Toulouse short_name: Toulouse + long_name: Toulouse country: long_name: France short_name: FR - latLng: - lat: 43.6115538 - lng: 1.4345827 dates: - start: '2019-10-03T10:00:00.000Z' end: '2019-10-03T10:00:00.000Z' + start: '2019-10-03T10:00:00.000Z' diff --git a/data/schedule.yml b/data/schedule.yml index a76e756..0affa44 100644 --- a/data/schedule.yml +++ b/data/schedule.yml @@ -136,7 +136,7 @@ - slot: slot-lt-2 talk: machine_learning_avec_des_allumettes_et_des_cotillons - slot: slot-5 - talk: un_distributeur_automatique_d_argent_de_poche_pour_les_enfants + talk: a_kotlin_multiplatform_evolution - slot: pause-5 talk: __pause - slot: slot-6 diff --git a/layouts/kids/single.html b/layouts/kids/single.html new file mode 100644 index 0000000..f10e5d3 --- /dev/null +++ b/layouts/kids/single.html @@ -0,0 +1,18 @@ +{{ define "main" }} +
+
+
+
+

+ {{ .Params.fullTitle }} + {{ .Params.brief }} +

+
+
+
+
+ {{ .Content }} +
+
+ +{{ end }} \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..2f7908a --- /dev/null +++ b/package.json @@ -0,0 +1,20 @@ +{ + "name": "site-devfest-2019", + "version": "1.0.0", + "repository": "https://gitlab.com/devfest-toulouse/site-devfest-2019", + "author": "Igor Laborie ", + "license": "Apache-2.0", + "scripts": { + "generate:pdf": "node tools/pdf.js", + "prebuild": "hugo", + "build:minify": "node tools/minify.js", + "build": "run-p build:*" + }, + "devDependencies": { + "glob": "^7.1.4", + "html-minifier": "^4.0.0", + "npm-run-all": "^4.1.5", + "plop-logger": "^2.3.0", + "puppeteer": "^1.19.0" + } +} diff --git a/static/api/site.json b/static/api/site.json index 13aa4e0..c16f7cf 100644 --- a/static/api/site.json +++ b/static/api/site.json @@ -3,23 +3,23 @@ "id": "HJRThubF4uYPkb7jSUxi", "name": "DevFest Toulouse 2019", "address": { + "latLng": { + "lng": 1.4345827, + "lat": 43.6115538 + }, "formattedAddress": "11 Espl. Compans Caffarelli, 31000 Toulouse, France", "locality": { - "long_name": "Toulouse", - "short_name": "Toulouse" + "short_name": "Toulouse", + "long_name": "Toulouse" }, "country": { "long_name": "France", "short_name": "FR" - }, - "latLng": { - "lat": 43.6115538, - "lng": 1.4345827 } }, "dates": { - "start": "2019-10-03T10:00:00.000Z", - "end": "2019-10-03T10:00:00.000Z" + "end": "2019-10-03T10:00:00.000Z", + "start": "2019-10-03T10:00:00.000Z" } }, "sessions": [ @@ -2331,7 +2331,7 @@ }, { "slot": "slot-5", - "talk": "un_distributeur_automatique_d_argent_de_poche_pour_les_enfants" + "talk": "a_kotlin_multiplatform_evolution" }, { "slot": "pause-5", @@ -3226,6 +3226,31 @@ "website": "https://twitter.com/ToulouseJS", "socials": [], "description": "\nFind ToulouseJS on [https://twitter.com/ToulouseJS](https://twitter.com/ToulouseJS)\n\n![ToulouseJS](/images/partners/community/toulousejs.png)\n" + }, + { + "key": "welovedevs_com", + "title": "WeLoveDevs.com", + "category": "soutien", + "order": 34, + "logo": "/images/partners/logo-welovedevs_com.png", + "website": "https://welovedevs.com/", + "lang": "fr", + "why": "Pour supporter la communauté de développeur Toulousaine, leurs partages de connaissance, pour rencontrer plus de personnes fantastiques encore !\n", + "socials": [ + { + "icon": "twitter", + "link": "https://welovedevs.com/" + }, + { + "icon": "linkedin", + "link": "https://www.linkedin.com/company/welovedevs/" + }, + { + "icon": "facebook", + "link": "https://www.facebook.com/welovedevs/" + } + ], + "description": "WeLoveDevs.com aide les développeurs à définir quelle entreprise leur permettra de s'épanouir.\nNous pensons qu'un développeur devrait pouvoir trouver par lui-même une entreprise où il sera heureux.\nAussi WeLoveDevs.com permet aux entreprises de proposer une vitrine sur la vie de leurs collaborateurs. Nos équipes les accompagnent dans le fait de produire du contenu authentique et transparent, qui donne envie d'être candidat.\n" } ], "team": [ diff --git a/static/images/partners/logo-welovedevs_com.png b/static/images/partners/logo-welovedevs_com.png new file mode 100644 index 0000000..fdff2fa Binary files /dev/null and b/static/images/partners/logo-welovedevs_com.png differ diff --git a/static/schedule/schedule.ics b/static/schedule/schedule.ics new file mode 100644 index 0000000..023eb41 --- /dev/null +++ b/static/schedule/schedule.ics @@ -0,0 +1,811 @@ +BEGIN:VCALENDAR +VERSION:2.0 +PROID:-//Devfest/DevFest Toulouse 2019//FR +X-WR-CALDESC:DevFest Toulouse 2019 +X-WR-CALNAME:DevFest Toulouse 2019 +X-WR-TIMEZONE:Europe/Paris +BEGIN:VEVENT +DESCRIPTION:Le numérique fait-il partie du problème ou de la solution quand + on parle de réchauffement climatique ?\n\n5 milliards de smartphones en ci + rculation en 2020\, ça représente quoi en consommation énergétique\, en gaz + à effet de serre\, en pollution chimique ?\n\nLe streaming illimité à 10 e + uros par mois c'est le pied mais aujourd'hui Netflix a à peu près l'emprein + te carbone du plus gros cimentier mondial\, qui va payer la facture environ + nementale ?\n\nTous les mails de votre vie (que vous ne lirez plus jamais) + disponibles sur Gmail\, très utile\, mais après 2020 on ne saura peut-être + plus produire industriellement les équipements nécessaires à leur stockage. + \n\nOn arrive dans "l'âge des limites"\, pour le numérique comme pour le re + ste. Quels sont les leviers pour basculer vers un numérique durable ?\n\nEt + si malgré tout on décidait de s'en foutre ? 2 degrés en plus\, c'est juste + un pull en moins non ? Non. Par contre c'est 30% en moins sur les rendemen + ts agricoles pour ... 30 % de population en plus en 2050. En 1970\, Dennis + Meadows modélisait sur les ordinateurs du MIT un crash du système planétair + e pour les décennies 2020-2030. Pour l'instant\, c'est cette trajectoire qu + e notre monde suit. +DTSTART:20191003T100000 +DURATION:PT40M +LOCATION:Grand amphi. +SUMMARY:"Numérique et environnement" ou "On aurait pu sauver les abeilles\, + on a préféré sortir un nouvel iPhone" +UID:zDbtrtvdLPG1okj07wyI +URL:https://devfesttoulouse.fr/sessions/_numerique_et_environnement__ou__on + _aurait_pu_sauver_les_abeilles__on_a_prefere_sortir_un_nouvel_iphone_ +TRANSP:TRANSPARENT +CATEGORIES:wtf +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Nous savons tous développer une API mais avons-nous tous bien i + ntégré les problématiques d'environnements et de cycles logiciels multiples + ? L'opérabilité\, la gouvernance\, le versioning\, la traçabilité\, la séc + urité — et bien plus encore — de ces API web une fois en production ?\n\nDu + rant ce talk\, c'est plusieurs dizaines de points d'attentions rarement évo + qué que je vous propose d'aborder\, à la lumière de retours d'expériences p + rovenant de chez Uber\, Stripe\, Facebook\, ... +DTSTART:20191003T110000 +DURATION:PT40M +LOCATION:Grand amphi. +SUMMARY:⛳️ Votre API web passe-t-elle le contrôle technique ? +UID:Gxr3XZR1HEu14tbneJLb +URL:https://devfesttoulouse.fr/sessions/_votre_api_web_passe_t_elle_le_cont + role_technique__ +TRANSP:TRANSPARENT +CATEGORIES:method___tools +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Avec les annonces de l'arrivée de la réalité augmentée (ou RA) + dans Google Maps et Google Search sur Android lors de Google IO 2019\, nou + s constatons que la RA va prendre une place de plus en plus importante dans + notre quotidien. La sortie d'ARCore en mars 2018 sur Android a simplifié l + e développement d’application en RA sur Android.\n\nAu cours de cette sessi + on\, nous vous proposons de découvrir ARCore\, via l’utilisation dans un na + vigateur\, des applications natives ou des moteurs 3D comme Unity ainsi que + les CloudAnchors qui permettent la persistance et le partage de positions + d’objets dans les scènes de réalité augmentée\, y compris avec des utilisat + eurs d’iOS.\n\nAprès une initiations aux concepts liés à la RA (meshes\, 6 + DoF\,...)\, nous présenterons les différentes fonctionnalités d’ARCore. Nou + s discuterons aussi des différentes approches d’utilisation\, de leurs limi + tations et avantages au travers d'une application de cartographie 3D en réa + lité augmentée. +DTSTART:20191003T120000 +DURATION:PT40M +LOCATION:Grand amphi. +SUMMARY:A la découverte de la réalité augmentée avec ARCore +UID:qXAvodXoMK3db8ZLcVwb +URL:https://devfesttoulouse.fr/sessions/a_la_decouverte_de_la_realite_augme + ntee_avec_arcore +TRANSP:TRANSPARENT +CATEGORIES:native_mobile_apps +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Qui ne s’est jamais fait manipulé ? Évidemment\, on est tous al + lé à une soirée alors qu’on en avait pas envie\, on a tous acheté un truc s + ans en avoir besoin et on a tous été influencé par ses proches. \n\nL’idée + de cette présentation est de vous ouvrir les yeux sur les relations et les + influences entre les gens. Je vous exposerai les mécanismes de prise de déc + ision au travers de 3 techniques simples de manipulation.\n\nA la sortie de + ce talk\, vous devriez être moins influençable et maître de vos décisions + (voir même manipuler les autres). +DTSTART:20191003T125000 +DURATION:PT15M +LOCATION:Grand amphi. +SUMMARY:3 techniques faciles de manipulation +UID:zVUXQkHQtSiGJeIwVd05 +URL:https://devfesttoulouse.fr/sessions/3_techniques_faciles_de_manipulatio + n +TRANSP:TRANSPARENT +CATEGORIES:wtf +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Le code barre est une invention qui a radicalement modifié nos + sociétés. Sans elle\, pas d'inventaire efficace\, de supermarchés ou de ven + te en ligne.\n\nMais comment coder les chiffres de façon fiable avec des pe + tites barres noires et blanches ? Quand les contraintes matérielles empêche + nt d'utiliser le binaire\, l'ingéniosité et un peu de chance ont permis de + créer ce produit\, maintenant présent partout.\n\n\nNous découvrirons les d + étails de ce codage\, et comment il pourrait même contenir davantage d'info + rmations. +DTSTART:20191003T140500 +DURATION:PT15M +LOCATION:Grand amphi. +SUMMARY:10 est une puissance de 2 +UID:jABRUDzqext8Rx8CmA4j +URL:https://devfesttoulouse.fr/sessions/10_est_une_puissance_de_2 +TRANSP:TRANSPARENT +CATEGORIES:wtf +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Vous aimez VS Code car il est simple\, intuitif et qu'il fait c + e que vous lui demandez. \nMais saviez-vous que vous pouviez coder à plus + ieurs dans VS Code? et même permettre à une personne tierce de jouer avec v + otre débugger depuis l'autre bout du monde? Saviez-vous que vous pouviez av + oir un client slack dans VS Code\, et même un chat audio? \nEt avez-vous e + xploré toutes les possibilités que VS Code offre quand vous utilisez github + ? \nNous verrons dans ce talk tout ce qui fait de VS Code l'éditeur de cod + e parfait pour faire du code collaboratif. +DTSTART:20191003T143000 +DURATION:PT40M +LOCATION:Grand amphi. +SUMMARY:Allo Paris\, ici San Francisco. Et si on codait ensemble avec VS Co + de? +UID:Cej88MtlRVZrJRK0FJ2p +URL:https://devfesttoulouse.fr/sessions/allo_paris__ici_san_francisco__et_s + i_on_codait_ensemble_avec_vs_code_ +TRANSP:TRANSPARENT +CATEGORIES:method___tools +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:When you start a brand new app or service\, you need to think a + bout how you will manage authentication and permissions. But if you are lik + e everyone else\, you genuinely do not want to actually think about this. I + f someone else could do that for you\, life would be great. And this has ac + tually happened\, you have the choice between several boilerplate projects + or authentication/authorization libraries. In fact\, you have a lot of opti + ons. Which one to choose? Let's have a closer look to them!\n\nAt the end o + f this talk\, you will have a good overview of the common existing solution + s and their benefits. +DTSTART:20191003T153000 +DURATION:PT40M +LOCATION:Grand amphi. +SUMMARY:Authentication/Authorization Starters Battle +UID:6E03tbU6L5w0IyjMi7yF +URL:https://devfesttoulouse.fr/sessions/authentication_authorization_starte + rs_battle +TRANSP:TRANSPARENT +CATEGORIES:method___tools +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Dans un monde de saveurs complexes et sofistiquées\, la guerre + du toping fait rage chez les crèmes glacées du Web ! Face au champs de bata + il\, les pronostiques vont bon train pour savoir qui l’emportera entre le c + runchy Angulaire\, le fondant Reactifs et le décoratif Vue.\n\nDurant ce te + mps\, loin de ces vicissitudes\, la petite saveur basique vanille fait son + bonhomme de chemin. S’agirait-il du héro de la légende\, succeptible de ren + verser le destin de ce monde sans heurts ?\n\nSache\, voyageur\, qu’elle es + t déjà passée par nos contrées. Laisse moi te raconter comment elle nous a + permis de renverser notre vieux roi\, et tu saura enfin ce qui se prépare p + our ton royaume. +DTSTART:20191003T163000 +DURATION:PT40M +LOCATION:Grand amphi. +SUMMARY:Brace yourself\, 🍦Vanilla is coming … back 🕶! +UID:rJDTMZMYX57DCKYhW09c +URL:https://devfesttoulouse.fr/sessions/brace_yourself__vanilla_is_coming__ + back__ +TRANSP:TRANSPARENT +CATEGORIES:web +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Programmer le noyau d'un système d'exploitation est un très bon + moyen pour en comprendre le fonctionnement et le scope de son travail (IO\ + , gestion de la mémoire\, etc).\nCette présentation a pour but de présenter + et de développer les composants élémentaires d'un micro noyau UNIX.\n\nDan + s ce talk je présenterai:\n- L'émulateur QEMU\n- La réalisation d'un secteu + r de boot avec une micro console\n- Comment gérer les interruptions hardwar + e (clavier) et software\n- La gestion des appels systèmes\n- Un système mul + ti-process simple qui va permettre de découvrir le surcoût des changements + de contexte liés à la programmation concurrentielle +DTSTART:20191003T173000 +DURATION:PT40M +LOCATION:Grand amphi. +SUMMARY:Comprendre le rôle du noyau d'un système d'exploitation en créant u + n from scratch +UID:tOexEcqeKEztPbNmR4JT +URL:https://devfesttoulouse.fr/sessions/comprendre_le_role_du_noyau_d_un_sy + steme_d_exploitation_en_creant_un_from_scratch +TRANSP:TRANSPARENT +CATEGORIES:cloud___infra +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Les microservices\, la scalabilité instantanée et les plates-fo + rmes à haute densité comme Kubernetes nécessitent des applications à faible + empreinte mémoire et démarrage rapide. Java n'était pas bien positionné ca + r il favorise les temps de traitement aux dépens du CPU et de la RAM.\n\nPl + us maintenant.\n\nEntre en scène Quarkus\, une stack Java orientée microser + vices qui supporte vos composants favoris (Hibernate\, Vert.x\, Camel\, RES + TEasy ...) sur GraalVM et HotSpot avec une faible empreinte mémoire et un d + émarrage rapide. Tout ce qu'il faut pour tirer pleinement parti des contain + ers.\n\nLa gestion de la donnée est souvent l'aspect le plus complexe : déc + ouvrons comment Quarkus gère la persistance avec Hibernate ORM. Venez explo + rer le live reload\, notre vision de la persistance avec Hibernate Panache\ + , l'indexation full text avec Hibernate Search\, l'environnement de test\, + la compilation native GraalVM et bien plus. Quarkus se vit plus qu'il ne se + verbalise\, attendez-vous à une démo détaillée. +DTSTART:20191003T100000 +DURATION:PT40M +LOCATION:Grande salle +SUMMARY:De Java à un exécutable natif : GraalVM et Quarkus changent la donn + e +UID:Qy836EfpA0wC4M6jYcTk +URL:https://devfesttoulouse.fr/sessions/de_java_a_un_executable_natif___gra + alvm_et_quarkus_changent_la_donne +TRANSP:TRANSPARENT +CATEGORIES:method___tools +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:DevOps is everywhere\, and every new or existing project is at + least considering to follow its principles. While implementing DevOps for s + ingle projects become more and more straightforward\, it's still a challeng + e to have a coherent DevOps approach at Enterprise level.\n\nLet's dig in w + hat it takes to achieve DevOps in large companies\, with Airbus as an examp + le. +DTSTART:20191003T110000 +DURATION:PT40M +LOCATION:Grande salle +SUMMARY:DevOps at scale +UID:aOHds477R7FiM3cnWAXp +URL:https://devfesttoulouse.fr/sessions/devops_at_scale +TRANSP:TRANSPARENT +CATEGORIES:method___tools +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:How a developer can tell if the system is sick just by taking a + look at the input and the output? If you'd like to know that (plus you lik + e standup comedy)\, come an see! The treatment is safe \;-)\n\nOne approach + to get familiar with a system is a long and intense reading the manual (an + d to run an eye over the source code sometimes). Another approach is to tak + e a deep dive into the data model (often in the DB) and to surf the user in + terface. Both are natural ends of the system\, the legendary Input and Outp + ut. By examining these ends one can check if there's good digestion or if g + uts are rotten. Careful examination can confirm "common DDDosis"\, "maligna + nt stringosis"\, "regex diarrhoea" or "not-made-here syndrome".\nUnfortunat + ely\, sometimes developers get infected in their prenatal life (meaning: at + their university). Let me invite you to treatment. A laxative one. (That i + s: a sequel of "Passwords. Do you keep them safe?") +DTSTART:20191003T120000 +DURATION:PT40M +LOCATION:Grande salle +SUMMARY:Four Diseases +UID:PmoMEVHO3imfUIMXsPai +URL:https://devfesttoulouse.fr/sessions/four_diseases +TRANSP:TRANSPARENT +CATEGORIES:wtf +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Quel est le point commun entre un jeu de sudoku\, la planificat + ion d'une conférence et les déplacements d'un commercial ?\n\nQuand on souh + aite les traiter automatiquement\, tous ces problèmes peuvent être résolus + par un solveur de contraintes. Dans ce talk\, je vais essayer de vous faire + une introduction pratique à la programmation par contraintes\, en présenta + nt les concepts de base\, puis en les mettant en application avec plusieurs + exemples de problèmes connus de tout le monde (ou presque)\, pour finir pa + r un cas plus complexe sur lequel je travaille actuellement. +DTSTART:20191003T143000 +DURATION:PT40M +LOCATION:Grande salle +SUMMARY:Introduction à la programmation par contraintes +UID:iU4EzEThVDvpaHDsGjOO +URL:https://devfesttoulouse.fr/sessions/introduction_a_la_programmation_par + _contraintes +TRANSP:TRANSPARENT +CATEGORIES:big_data___ml___ai +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:L’âgisme dans les fonctions IT\, et en particulier dans le Déve + loppement Soft\, est incontournable.\n\nLes « vieux » n’ont décidément pas + la cote\, le marché de l'emploi des softeux cinquantenaires en est la preuv + e !\nPourtant\, codage et sénioritude semblent loin d'être incompatibles.\n + \n- Alors quels préjugés peuvent en être la cause ?\n- L’avance rapide de l + a technologie numérique est-elle incompatible avec le ralentissement biolog + ique ?\n- Les cheveux gris sont-ils un Handicap pour la Sécurité de l’Info + ?\n- Le Cloud doit-il être « Arthrose-free » ?\n\nEt surtout\, comment se f + ait-il qu’à 47 ans je vienne d’intégrer l’équipe Devops & Tools de Continen + tal Digital Services et que personne ne m’ait encore rien dit ? +DTSTART:20191003T125000 +DURATION:PT15M +LOCATION:Grande salle +SUMMARY:« 47 ans : ils n’ont toujours pas remarqué … » +UID:pY6MCQBMfIYlIKfHdhL4 +URL:https://devfesttoulouse.fr/sessions/_47_ans___ils_nont_toujours_pas_rem + arque__ +TRANSP:TRANSPARENT +CATEGORIES:wtf +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Avec mon épouse nous avons commencer à donner de l'argent de po + che à nos enfants.\n\n![Calvin et l'argent de poche](https://i.pinimg.com/o + riginals/ad/47/94/ad47940ca35ce4bd5122a916abf9f589.png)\n\nPour qu'ils puis + sent faire comme les grands (et parce que c'est fun aussi :D) j'ai conçu un + DAAP (**D**istributeur **A**utomatique d'**A**rgent de **P**oche) qui leur + permet\, le jour de la distribution de l'argent de poche\, d'insérer leur + "carte bleue"\, saisir leur code et de voir la machine s'ébranler pour dis + tribuer les pièces.\n\nDans ce talk on parlera d'Arduino\, d'impression 3D\ + , de carte à puce\, d'électronique et des problèmes que j'ai rencontré et c + omment j'ai pu les résoudre. +DTSTART:20191003T140500 +DURATION:PT15M +LOCATION:Grande salle +SUMMARY:Un distributeur automatique d'argent de poche pour les enfants +UID:ZmSIPnuidcxjKLVfEKM8 +URL:https://devfesttoulouse.fr/sessions/un_distributeur_automatique_d_argen + t_de_poche_pour_les_enfants +TRANSP:TRANSPARENT +CATEGORIES:wtf +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:## Résumé\nEn Novembre 2017\, j'ai découvert "une backdoor" dan + s tout les téléphones de la marque Oneplus. A l'aide d'une simple ligne de + commande\, un attaquant ayant un accès physique au téléphone\, pouvait deve + nir root et ainsi obtenir un contrôle total du téléphone de la victime.\n\n + ## Détails\nDans ce talk\, j'expliquerai le processus qui m'a permit de fai + re cette découverte:\n1. Extraction du build\n2. Récupération des applicati + ons dites "systèmes"\n3. Détection de la vulnérabilité dans l'application A + ndroid "EngineeringMode"\n4. Exploitation de la vulnérabilité\n\n## Sujet a + bordés\nLors de la détection et l'analyse de cette faille nous aborderons l + a philosophie du **hacking**\, comment faire du **reverse engineering** sur + des applications **Android** et une **librairie native**. Nous analyserons + du **Java** ainsi que du **C** \n\n## Categorie\nNative mobile apps\n\n## + Format\nUne conférence de 40 min +DTSTART:20191003T153000 +DURATION:PT40M +LOCATION:Grande salle +SUMMARY:L'histoire de la découverte d'une backdoor signé Oneplus +UID:Kwery1cbJrx3ZFj6x1JU +URL:https://devfesttoulouse.fr/sessions/l_histoire_de_la_decouverte_d_une_b + ackdoor_signe_oneplus +TRANSP:TRANSPARENT +CATEGORIES:native_mobile_apps +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:En 2019 le monde de l’informatique n’a que l’agilité à la bouch + e. Ca groome à tous les coins de rue\, ça s’excite en daily\, ça colle des + post-it et ça empile les serious game en rétro. Bien sûr ça gère la transfo + rmation numérique (désolé\, même au second degré je ne peux pas employer “d + igitale”) et au final plus personne ne comprend rien. \n\nDes chefs de proj + et subitement propulsés ScrumMaster qui ne savent pas ce qu’ils doivent fai + re. Des PO qui découvrent la priorisation. Des développeurs qui doivent com + poser avec des specs floues et changeantes sans vision globale du projet. P + our compléter le tableau\, la subite apparition de coachs agile à peine sor + ti de l’école qui n’ont jamais vu un projet de leur vie et qui viennent exp + liquer des concepts qu’ils ne maîtrisent qu’à moitié.\n\nEn 2019 le monde d + e l’informatique rêve secrètement de cycles en V\, de stabilité\, de spécif + ications générales et de dossier d’architecture.\n\nEn 2019 le monde de l’i + nformatique est au bord du burn-out agile.\n\n## Plan du talk \n\n- Petit + historique : l’évolution des pratiques sur les 20 dernières années \n- Pour + quoi ce bordel agile ? \n- Finalement l’agilité c’est quoi ? \n- Est-ce qu’ + il faut revenir au cycle en V ? +DTSTART:20191003T163000 +DURATION:PT40M +LOCATION:Grande salle +SUMMARY:Le burn-out agile +UID:KAH9Lyx0b2TKNSQVZNw2 +URL:https://devfesttoulouse.fr/sessions/le_burn_out_agile +TRANSP:TRANSPARENT +CATEGORIES:method___tools +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Nos systèmes sont designés de manière optimiste\, de la gestion + technique des erreurs à la modélisation de nos interfaces. \nQue ce soit + les codes d'erreurs\, les exceptions ou les modélisations plus avancées\, e + lles servent pour arrêter un traitement et _potentiellement_ afficher un me + ssage d'information à un utilisateur.\n\nMais avec les architectures micros + ervices\, la distribution des traitements ou une simple volonté de résilien + ce\, la gestion des erreurs est devenue un enjeu important de tous les syst + èmes afin qu’ils restent accessibles de tous\, tout le temps tout en mainte + nant le système dans un état cohérent.\n\nQue fait-on lorsqu’une erreur int + ervient ? Peut-on compenser voire gérer l’erreur depuis le système pour l’u + tilisateur ?\n\nLa réponse a ces questions se trouvent autant dans la défin + ition du produit que dans le choix technique.\nUn outil bien conçu est un o + util intelligent qui peut faire les bons choix au bon moment pour l'utilisa + teur. Et si on apprenait ensemble à concevoir nos erreurs ? +DTSTART:20191003T173000 +DURATION:PT40M +LOCATION:Grande salle +SUMMARY:Le design de l'erreur +UID:pAMZmFT2wrfqPr9IdeXv +URL:https://devfesttoulouse.fr/sessions/le_design_de_l_erreur +TRANSP:TRANSPARENT +CATEGORIES:method___tools +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Sans nécessiter de formation musicale pointue\, tout développeu + r peut créer des morceaux qui sonnent bien et faire du "live coding" pour i + mproviser en direct.\n\nAprès un rapide tour d'horizon des environnements d + e codage musical comme Sonic-Pi en Ruby ou FoxDot en Python\, on codera/com + posera en live un morceau de musique électro avec comme seul outil un navig + ateur web\, les API WebAudio et WebMIDI et la librairie Tone.js.\n\nQuelque + s samples bien choisis\, une pincée de séquences harmonieuses\, une bonne d + ose d'aléatoire encadré\, et hop\, tout le monde se mettra à danser ! Et pu + isque la musique c'est aussi des maths\, on parlera de musique générative a + vec des chaînes de Markov et des L-Systems.\n\nDavid Guetta n'a qu'à bien s + e tenir ! +DTSTART:20191003T100000 +DURATION:PT40M +LOCATION:Salle du haut +SUMMARY:Live coding musical : vous savez coder ? Devenez compositeur avec W + ebAudio et WebMIDI ! +UID:WwHpapkCgEg5IMW5vTId +URL:https://devfesttoulouse.fr/sessions/live_coding_musical___vous_savez_co + der___devenez_compositeur_avec_webaudio_et_webmidi__ +TRANSP:TRANSPARENT +CATEGORIES:web +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:If the new React Context API and Suspense killed Redux (they di + dn't)\, surely Hooks kill the need for a form library\, right? Well\, not e + xactly. Managing form state is more than just holding your current values i + n state\; it's about sync and async validition errors\, and much more! But + that doesn't mean that Hooks are irrelevant to the situation. Hooks make bu + ilding forms in React easier than ever before. +DTSTART:20191003T110000 +DURATION:PT40M +LOCATION:Salle du haut +SUMMARY:Modern Forms in React +UID:McfMVcKDdZv68NSo2JIJ +URL:https://devfesttoulouse.fr/sessions/modern_forms_in_react +TRANSP:TRANSPARENT +CATEGORIES:web +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Depuis les années 70 tous les constructeurs autos intégrent des + calculateurs électroniques.\nLes moteurs des voitures modernes sont des sy + stèmes informatiques complexes qui s'appuient sur des dizaines de capteurs. + .. et du code. \nComment ça fonctionne ? A quoi ressemble ce code et que fa + it-il ?\nQu'est-ce qu'il se passe lorsqu'on fait une "reprog" ? \nQu'est-ce + que signifie le voyant moteur allumé ? Comment débugger tout ça ?\nSoulevo + ns le capot (électronique)\, analysons le matériel mis en oeuvre mais surto + ut le logiciel grâce aux sources des calculateurs "Megasquirt" et allons ex + plorer la face cachée numérique de nos voitures. +DTSTART:20191003T120000 +DURATION:PT40M +LOCATION:Salle du haut +SUMMARY:Mon p*** de voyant moteur est encore allumé ! Comment debugger mon + moteur ? Plongeon dans les entrailles des calculateurs moteur +UID:fW4yvmVxjXb57vQJhIXu +URL:https://devfesttoulouse.fr/sessions/mon_p____de_voyant_moteur_est_encor + e_allume___comment_debugger_mon_moteur___plongeon_dans_les_entrailles_des_c + alculateurs_moteur +TRANSP:TRANSPARENT +CATEGORIES:wtf +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Comment faire quand on doit faire le suivi de toute l'infrastru + cture du plus grand fournisseur de cloud Européen ? Comment choisir un out + il quand les plus populaires ne tient pas la marée à cette échèle ? Commen + t construire une plateforme Metrics pour unifier\, concilier et remplacer d + es années de legacy fragmenté et des solutions partielles ?\n\nDans ce talk + nous racontons notre expérience sur la construction et la maintenance d'OV + H Metrics\, la plateforme utilisée pour monitorer toute l'infrastructure OV + H. Nous avions besoin d'aller à des endroits ou la plupart de solutions de + monitoring ne sont jamais allées\, opérer à l'échelle du plus grand fournis + seur Européen de cloud et hosting : 27 data centers\, plus de 300k serveurs + (physiques !) et des centaines de produits pour accomplir notre mission av + ec nos 1\,3 millions de clients.\n\nVenez pour entendre cette histoire de s + éries temporelles\, de solutions open-sources poussées à l'extreme\, de clu + sters HBase opérés en limite de capacité\, et de comment une petite équipe + s'est appuyé sur une poignée de solutions open-source et une bonne dose d + e code maison pour construire une des solutions de monitoring les plus perf + ormantes au monde. +DTSTART:20191003T143000 +DURATION:PT40M +LOCATION:Salle du haut +SUMMARY:Monitoring OVH: 300k serveurs\, 27 DCs une plateforme de métriques +UID:xwAvvIJJfDdBD7N4oGa5 +URL:https://devfesttoulouse.fr/sessions/monitoring_ovh__300k_serveurs__27_d + cs_une_plateforme_de_metriques +TRANSP:TRANSPARENT +CATEGORIES:big_data___ml___ai +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Brainfuck est probablement le plus connu des langages de progra + mmation ésotériques. Ses 8 instructions en font un langage Turing-complet a + vec lequel il est théoriquement possible d’écrire n’importe quel programme. + \n\nEt en pratique ? Après une explication du langage (avec 8 instructions + c’est rapide !) on verra comment j’ai utilisé Brainfuck pour les qualificat + ions au concours d’informatique Prologin\, sur un problème de parcours de g + raphes ! +DTSTART:20191003T125000 +DURATION:PT15M +LOCATION:Salle du haut +SUMMARY:Applications de Brainfuck\, langage minimaliste mais Turing-complet +UID:oiZTE4THbAJeaNVlLc03 +URL:https://devfesttoulouse.fr/sessions/applications_de_brainfuck__langage_ + minimaliste_mais_turing_complet +TRANSP:TRANSPARENT +CATEGORIES:wtf +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Ces dernières années\, les "fabriques de dev" et autres formati + ons courtes explosent. C'est un fait\, tout dev a été ou sera amené à trava + iller avec l'un de ces jeunes développeurs.euses. Mais qui sont-ils ? Pourq + uoi une reconversion dans ce genre de d'organisation ? Qu'ont-ils appris lo + rs de leurs formation express ? C'est fiable ce genre de dev ? Comment puis + -je les intégrer au mieux dans ma structure ?\n\nAutant de questions que vo + us vous êtes sans doute déjà posées. Pendant ces 15 minutes\, je vous prése + nterai mon retour d'expérience en tant que développeuse provenant de l'une + de ces écoles de dev et maintenant développeuse Javascript depuis 2 ans au + sein d'une startup Toulousaine. +DTSTART:20191003T140500 +DURATION:PT15M +LOCATION:Salle du haut +SUMMARY:Développeurs en reconversion\, développeurs quand même ! +UID:adcMAUSbsAK27dQJA4Iw +URL:https://devfesttoulouse.fr/sessions/developpeurs_en_reconversion__devel + oppeurs_quand_meme__ +TRANSP:TRANSPARENT +CATEGORIES:wtf +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:De nombreux services en ligne existent pour gérer en toute sécu + rité des appareils IoT à grande échelle : "Azure IoT" de Microsoft et "AWS + IoT" d'Amazon sont parmi les plus connus.\n\nGoogle propose également sa so + lution : "Cloud IoT" basée sur la plate-forme Google Cloud (GCP).\nDans ce + talk\, nous partirons d'un microcontrôleur neuf ultra connu et abordable\, + et notre but sera tout d'abord de découvrir comment écrire du code pour ce + composant nous permettant de récupérer des informations sur notre environne + ment.\nEnsuite\, nous ferons en sorte que ce composant envoie ses données v + ers un service Cloud\, pour enfin découvrir ce que permettent ces solutions + en ligne dédiées à l'IoT.\n\nPour l'exemple\, et parce qu'il faut bien cho + isir une solution\, nous utiliserons Google Cloud IoT Core\, les concepts r + estant similaires sur les autres plate-formes. +DTSTART:20191003T153000 +DURATION:PT40M +LOCATION:Salle du haut +SUMMARY:Premiers pas avec un microcontrôleur et Google Cloud IoT Core +UID:R9O1S7M9oRMmwd0cNBaz +URL:https://devfesttoulouse.fr/sessions/premiers_pas_avec_un_microcontroleu + r_et_google_cloud_iot_core +TRANSP:TRANSPARENT +CATEGORIES:iot +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Un chatbot créé par Microsoft qui dérive avec des propos antisé + mites\, Amazon qui scanne des CVs et finit par ne recruter que des hommes b + lancs\, des algorithmes de reconnaissance faciale qui ont du mal avec les p + ersonnes de couleur noire\, ... Que d'exemples où l'IA a intégré nos propre + s biais sociétaux. Il est urgent que nous\, développeurs\, prenions nos res + ponsabilités et mesurons les enjeux éthiques de l'IA pour éviter que les st + éréotypes\, les inégalités et les préjugés se retrouvent au cœur de nos fut + urs systèmes.\n\nCette présentation propose des root cause analysis sur des + exemples concrets de ces biais et présente des alternatives qui auraient p + ermis d'éviter ces biais en "production" autant d'un point de vue humain qu + e technique.\n\nNous verrons notamment que l’éthique peut directement être + abordée au niveau des données et de leur préparation à l’apprentissage. Nou + s nous concentrerons principalement sur l’impact des statistiques des donné + es d’entraînement et les transformations à appliquer en pré-processing (mét + riques de fairness\, améliorer la fairness sur des données annotées)\, et n + ous montrerons comment des benchmarks permettent d'appréhender l’impact des + méthodes de fairness sur la précision des modèles entraînés.\n\nLa confian + ce et l’équité passe avant tout par une compréhension de la prise de décisi + on par l’utilisateur. Par conséquent\, nous présenterons diverses méthodes + pour expliquer la prise de décision d’un modèle boîte noire (principalement + des algorithmes de deep learning) et mettons en garde contre une mauvaise + interprétation de ces explications. +DTSTART:20191003T163000 +DURATION:PT40M +LOCATION:Salle du haut +SUMMARY:Quand les ratés des IAs nous renvoient à nos propres biais sociétau + x +UID:ZsAGxn6UZi1hfzz2bwR7 +URL:https://devfesttoulouse.fr/sessions/quand_les_rates_des_ias_nous_renvoi + ent_a_nos_propres_biais_societaux +TRANSP:TRANSPARENT +CATEGORIES:big_data___ml___ai +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:_« Make it work\, make it right\, make it fast »_ - Kent Beck\n + \nNous connaissons tous cette citation. Pourtant nous sommes dès fois trop + souvent restés bloqué à l’étape 1 par manque de temps ou de priorisation.\n + \nL’accueil d’un nouveau développeur·euse dans une équipe est un des meille + urs moments pour vérifier qu’une base de code est « saine et scalable ».\n\ + nNous vous proposons dans ce talk un retour d’expérience sur quelques année + s de consulting sur des projets Angular au travers de cas concrets :\n- que + lles sont les mauvaises pratiques à éviter ?\n- quels sont les choix orient + és et assumés d’Angular pour vous éviter tout ça ?\n- quelque soit la taill + e de votre équipe\, l’expérience de vos collègues\, quels sont les princip + es d’architecture à adopter pour améliorer tout ça ? +DTSTART:20191003T173000 +DURATION:PT40M +LOCATION:Salle du haut +SUMMARY:Rockin’ in the Angular World +UID:niiUNFAFhYnPBiOrcDVf +URL:https://devfesttoulouse.fr/sessions/rockin_in_the_angular_world +TRANSP:TRANSPARENT +CATEGORIES:web +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:A lot of things have been said about WebAssembly inside of the\ + nbrowser\; after all\, that's why it was originally created. But a new\ncas + e is emerging as well\, and that's WebAssembly on the server. More\nspecifi + cally\, we're seeing a rise of support for WebAssembly in\nserverless appli + cation platforms\, combining two brand-new technologies\ntogether. We're al + so seeing a lot of growth of the Rust programming\nlanguage\, and its close + alignment with WebAssembly. In this talk\,\nSteve will talk about Rust\, W + ebAssembly\, serverless technologies\, and\nhow it all fits together. +DTSTART:20191003T100000 +DURATION:PT40M +LOCATION:Petite salle +SUMMARY:Rust\, WebAssembly\, and the future of Serverless +UID:2S9XtGGq3ouHnkivEDKC +URL:https://devfesttoulouse.fr/sessions/rust__webassembly__and_the_future_o + f_serverless +TRANSP:TRANSPARENT +CATEGORIES:cloud___infra +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:The singe most important feature of Rust is memory safety. Writ + ing code with performance of C++\, at a typical development cost\, and with + guaranteed absence of certain classes of memory safety related vulnerabili + ties is something that was not possible before. \n\nHowever\, all popular m + anaged languages with garbage collection take memory safety for granted\, s + o this aspect of Rust doesn't bring anything new to the table\, if you alre + ady use Java or Go. Nevertheless\, Rust can be an interesting choice as a h + igh-level language\, and this talks explains way. \n\nThe focus of the tal + k is fearless concurrency. Data races are a pervasive and unsolved problem + in languages like Java and Rust's guaranteed thread safety is a liberating + experience for application development. We also touch on some other benefit + s of the language for high-level tasks:\n\n* predictable performance due to + absence of garbage collection\n* control over the memory layout of objec + ts\, which gives you extra performance if you need it\n* module (crate) sy + stem that\, at the language level\, prevents dependency hell\n* additional + correctness guarantees\, like the absence of iterator validation or strict + control of error conditions +DTSTART:20191003T110000 +DURATION:PT40M +LOCATION:Petite salle +SUMMARY:Rust as a High-Level Langage +UID:PjQDGsFIQoo1By4Ogv3q +URL:https://devfesttoulouse.fr/sessions/rust_as_a_high_level_langage +TRANSP:TRANSPARENT +CATEGORIES:languages +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:It's a common idea: Dynamic typing gives you freedom to do what + ever you want\, but then you suffer mistakes and runtime errors. Static typ + ing limits your freedom\, but it leads to fewer bugs\, even if it's harder + to actually write code.\n\nThis isn't entirely false. Yes\, it can be quite + hard to write a Rust or Haskell program that compiles\, enough that it's a + running gag in their communities. "But once you get it to compile\, it's p + robably correct!"\, the joke goes. On the other hand\, when writing Ruby or + Javascript\, you're free to call functions with all sorts of things\, and + then runtime errors can easily slip into production. That said\, it's not a + s simple as a sliding scale between "freedom" and "safety". Neither of thes + e terms is one-dimensional -- a language feature that restricts your freedo + m in one way can actually free you in different ways.\n\nI'd like to demons + trate some interesting language features in Rust that make it easier to wri + te code and to express concepts compared to dynamic languages. Features tha + t don't just protect you from shooting your foot\, but give you power that' + s only available within the rules and "limitations" of a statically typed l + anguage. Even if you're not familiar with Rust\, I hope to focus the exampl + es on the features themselves rather than on the specifics of the language\ + , so come by and let's talk about being (type-safely) free. +DTSTART:20191003T120000 +DURATION:PT40M +LOCATION:Petite salle +SUMMARY:The Freedom of Static Typing +UID:RhWn82dKmICiQulwcVJF +URL:https://devfesttoulouse.fr/sessions/the_freedom_of_static_typing +TRANSP:TRANSPARENT +CATEGORIES:languages +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Il y a 20 ans\, personne de **sobre** n’aurait utilisé Javascri + pt pour autre chose que des étoiles filantes qui sortent de ta souris. Non\ + , à l'époque\, on préférait les serveurs d'application en Java! \nAujourd’ + hui\, non seulement on a des frameworks front\, mais il y a même des hipste + rs qui font du backend avec... Et depuis\, on fait des APIs. \n**Comment e + n est-on arrivé là?** \nC’est ça inspecteur. C’est ça la bonne question.\n + \nSi tu ne les as pas vécus\, viens découvrir l'arrivée du Web\, l'histoire + de Netscape\, la browser-war\, la naissance du serveur d'application\, les + débuts du web dynamique et la prise d'assaut du JS.\n\nSit back\, relax\, + and Enjoy! +DTSTART:20191003T143000 +DURATION:PT40M +LOCATION:Petite salle +SUMMARY:The rise of the web +UID:0MXH99V8NY9xyeurYCmA +URL:https://devfesttoulouse.fr/sessions/the_rise_of_the_web +TRANSP:TRANSPARENT +CATEGORIES:web +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Jean-Yves Girard\, le génial inventeur des indispensables [mont + res à moutarde](http://girard.perso.math.cnrs.fr/moutarde.pdf) (1990)\, est + certes un joyeux trublion.\n\nMais avant d'en arriver à ce sommet indépass + able\, il a tout même publié deux-trois petites choses en chemin:\n\n- Rust + \, vous connaissez? L'idée première du système de typage de Rust est la log + ique dite "[linéaire](http://girard.perso.math.cnrs.fr/linear.pdf)"\, due à + Jean-Yves Girard (1987).\n- Haskell\, ça vous dit quelque chose? Les systè + mes de typage de Haskell mais aussi Scala (et d'une certaine manière Java) + sont basés sur le "[système F](https://en.wikipedia.org/wiki/System_F)" (ou + lambda-calcul de second ordre)\, dû à... Jean-Yves Girard (1972).\n- Idris + \, vous avez entendu parler? Le système de typage d'Idris est basé sur la t + héorie des types de Per Martin-Löf\, dont la première version a été prouvée + incorrecte par... Jean-Yves Girard\, qui depuis possède un [paradoxe](http + s://en.wikipedia.org/wiki/System_U#Girard's_paradox) à son nom. (Girard et + Martin-Löf sont par ailleurs de très bons potes et ont ferraillé sec contre + les logiciens classiques dans leur prime jeunesse.)\n\nTrès méconnu mais p + robalement l'un des penseurs les plus influents pour l'informatique de ce d + ébut de XXIe siècle\, Girard est tout aussi sérieux que fantasque. Son styl + e toujours acéré et polémique s'appuie sur une vision très claire de ce que + devrait être la logique: vivante\, joyeuse\, fertile.\n\nDans cette courte + présentation\, on s'attachera à comprendre pourquoi Girard est aussi virul + ent dans son discours\, quels sont les objectifs de sa pensée\, et pourquoi + elle a déjà porté tant de fruits dans le monde de l'informatique. \n\n---- + \n\nDans le cas d'un créneau à 40min\, on pourrait donner quelques pointeur + s sur ses travaux plus récents\, et expliciter en quoi ils sont porteurs de + nouvelles avancées pour les prochaines décennies (réseaux de démonstration + s\, géométrique de l'intéraction\, etc.). +DTSTART:20191003T125000 +DURATION:PT15M +LOCATION:Petite salle +SUMMARY:Le troll dans ta machine --- Une courte introduction à la pensée de + Jean-Yves Girard +UID:hoiS7Cs5sWwXb632pLh2 +URL:https://devfesttoulouse.fr/sessions/le_troll_dans_ta_machine_____une_co + urte_introduction_a_la_pensee_de_jean_yves_girard +TRANSP:TRANSPARENT +CATEGORIES:wtf +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Dans ce talk je vous montrerai comment expliquer simplement le + fonctionnement de l'apprentissage par renforcement. Pour cela pas besoin d' + ordinateur : quelques allumettes\, des sacs de cotillons et un peu de pédag + ogie sont suffisant pour mettre en évidence les mécanismes intrinsèques de + cette technique et pour aborder les enjeux et les limites des algorithmes d + '"intelligence artificielle" basés sur l'apprentissage. +DTSTART:20191003T140500 +DURATION:PT15M +LOCATION:Petite salle +SUMMARY:Machine learning avec des allumettes et des cotillons +UID:cnRUAtQNZybQsQa03lAx +URL:https://devfesttoulouse.fr/sessions/machine_learning_avec_des_allumette + s_et_des_cotillons +TRANSP:TRANSPARENT +CATEGORIES:big_data___ml___ai +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Have you heard of the code-sharing feature in Kotlin\, accompan + ied with "Write once\, run everywhere" slogan? Among its users not only lib + raries and frameworks authors\; there are some projects which have already + adopted multiplatform for production. Their applications\, written in Kotli + n for *both* iOS and Android\, are published in stores. \nWith this talk\, + you'll get a brief overview of the evolution of multiplatform technology in + Kotlin\, concerning the tasks it's evolved to solve. How it was and how it + is expected to be\; what has changed and which tasks can be already solved + with it. What are the facilities right now and which real projects already + use multiplatform? +DTSTART:20191003T153000 +DURATION:PT40M +LOCATION:Petite salle +SUMMARY:A Kotlin multiplatform evolution +UID:a_kotlin_multiplatform_evolution +URL:https://devfesttoulouse.fr/sessions/a_kotlin_multiplatform_evolution +TRANSP:TRANSPARENT +CATEGORIES:languages +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:This talk will give an overview of the WebGPU API that will pro + vide modern features such as “GPU compute” on the Web as well as lower over + head access to GPU hardware and better\, more predictable performance. This + will allow for much more graphically intensive games on the Web and boost + performance of frameworks like Tensorflow.js up to 10x. +DTSTART:20191003T163000 +DURATION:PT40M +LOCATION:Petite salle +SUMMARY:WebGPU: Next-generation 3D Graphics on the Web +UID:5qTyscBWtXLRb04TXEdB +URL:https://devfesttoulouse.fr/sessions/webgpu__next_generation_3d_graphics + _on_the_web +TRANSP:TRANSPARENT +CATEGORIES:web +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Les enfants sont eux-mêmes les bâtisseurs actifs de leurs propr + es structures intellectuelles et l'informatique y joue un rôle déterminant\ + , disait Piaget\, un célèbre biologiste\, psychologue et logicien. Son coll + aborateur\, Seymour Papert\, inventera le langage Logo\, langage qui fait q + u'aujourd’hui je suis un développeur épanoui.\nQu'en est-il aujourd'hui ? C + omment donner le goût du code à nos enfants et surtout pourquoi est-ce impo + rtant ?\nAvec Saskia\, Loïs et leur père nous voyagerons à travers le temps + \, en partant de la tortue sur ce bon vieux M05 en passant par Scratch\, le + Logo hipster de nos jour\, jusqu’à Groovy et Python. \n +DTSTART:20191003T173000 +DURATION:PT40M +LOCATION:Petite salle +SUMMARY:Le jaillissement de l'esprit +UID:le_jaillissement_de_l_esprit +URL:https://devfesttoulouse.fr/sessions/le_jaillissement_de_l_esprit +TRANSP:TRANSPARENT +CATEGORIES:method___tools +END:VEVENT +END:VCALENDAR \ No newline at end of file diff --git a/static/schedule/schedule.pdf b/static/schedule/schedule.pdf new file mode 100644 index 0000000..f11f424 Binary files /dev/null and b/static/schedule/schedule.pdf differ diff --git a/themes/devfest-theme-hugo b/themes/devfest-theme-hugo index b7d06fe..1c1c7ba 160000 --- a/themes/devfest-theme-hugo +++ b/themes/devfest-theme-hugo @@ -1 +1 @@ -Subproject commit b7d06fe276aeb052001a5c69305ed9ef508e40af +Subproject commit 1c1c7bac824e50d7fa3fd3de2e5f9ce09a285c36 diff --git a/tools/minify.js b/tools/minify.js new file mode 100644 index 0000000..7201299 --- /dev/null +++ b/tools/minify.js @@ -0,0 +1,20 @@ +const {readFileSync, writeFileSync} = require('fs'); +const {sync: glob} = require('glob'); +const {minify} = require('html-minifier'); +const {Logger} = require('plop-logger'); +const {colorEmojiConfig} = require('plop-logger/lib/extra/colorEmojiConfig'); + +Logger.config = colorEmojiConfig; +const logger = Logger.getLogger('minifier'); + +glob(`public/**/*.html`) + .forEach(file => { + const html = readFileSync(file, 'utf8'); + const minified = minify(html, {}); + const gain = html.length - minified.length; + if (gain > 0) { + const percent = (gain / html.length) * 100; + logger.info(file, () => ['gain', percent.toFixed(2), '%'].join(" ")); + writeFileSync(file, minified, {flag: 'w'}); + } + }); diff --git a/tools/pdf.js b/tools/pdf.js new file mode 100644 index 0000000..73b5fc4 --- /dev/null +++ b/tools/pdf.js @@ -0,0 +1,57 @@ +const puppeteer = require('puppeteer'); +const {Logger, LogLevel} = require('plop-logger'); +const {colorEmojiConfig} = require('plop-logger/lib/extra/colorEmojiConfig'); + +Logger.config = colorEmojiConfig; +Logger.config.defaultLevel = LogLevel.Debug; +const logger = Logger.getLogger('pdf'); + +(async () => { + logger.info("launch puppeteer browser"); + const defaultViewport = {width: 1280, height: 1700}; + const devtools = false; + const browser = await puppeteer.launch({devtools, defaultViewport}); + try { + logger.info("open new page"); + const page = await browser.newPage(); + logger.debug("opened new page"); + + const file = 'schedule/index.html'; + const url = `http://localhost:1313/${file}`; + logger.info("go to", url); + const pageResponse = await page.goto(url, {waitUntil: 'networkidle2'}); + logger.debug("gone", pageResponse.statusText()); + + const toHide = [ + 'body>header', + 'body>footer', + 'main .hero', + ]; + await page.$$eval(toHide.join(','), function (elts) { + // debugger; + elts.forEach(elt => { + elt.parentNode.removeChild(elt); + // elt.style.display = 'none'; + }); + }); + + await page.addStyleTag({ + content: '@page { size: auto; }', + }); + + logger.info('export pdf'); + const path = 'static/schedule/schedule.pdf'; + const format = 'A3'; + const scale = .4; + const printBackground = true; + await page.pdf({path, format, scale, printBackground}); + logger.debug("pdf done"); + + } catch (e) { + console.error(e); + logger.error('Oops!', e); + } finally { + logger.info('close puppeteer browser'); + await browser.close(); + } +})(); diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..0b2baf3 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,720 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +agent-base@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" + integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== + dependencies: + es6-promisify "^5.0.0" + +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +camel-case@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +chalk@^2.4.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +clean-css@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" + integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g== + dependencies: + source-map "~0.6.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +commander@^2.19.0, commander@~2.20.0: + version "2.20.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" + integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.1.0: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +define-properties@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.4.3: + version "1.13.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" + integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== + dependencies: + es-to-primitive "^1.2.0" + function-bind "^1.1.1" + has "^1.0.3" + is-callable "^1.1.4" + is-regex "^1.0.4" + object-keys "^1.0.12" + +es-to-primitive@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" + integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= + dependencies: + es6-promise "^4.0.3" + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +extract-zip@^1.6.6: + version "1.6.7" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.7.tgz#a840b4b8af6403264c8db57f4f1a74333ef81fe9" + integrity sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k= + dependencies: + concat-stream "1.6.2" + debug "2.6.9" + mkdirp "0.5.1" + yauzl "2.4.1" + +fd-slicer@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" + integrity sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU= + dependencies: + pend "~1.2.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +function-bind@^1.0.2, function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +glob@^7.1.3, glob@^7.1.4: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +graceful-fs@^4.1.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" + integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= + +has@^1.0.1, has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hosted-git-info@^2.1.4: + version "2.8.4" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.4.tgz#44119abaf4bc64692a16ace34700fed9c03e2546" + integrity sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ== + +html-minifier@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-4.0.0.tgz#cca9aad8bce1175e02e17a8c33e46d8988889f56" + integrity sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig== + dependencies: + camel-case "^3.0.0" + clean-css "^4.2.1" + commander "^2.19.0" + he "^1.2.0" + param-case "^2.1.1" + relateurl "^0.2.7" + uglify-js "^3.5.1" + +https-proxy-agent@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz#271ea8e90f836ac9f119daccd39c19ff7dfb0793" + integrity sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg== + dependencies: + agent-base "^4.3.0" + debug "^3.1.0" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-callable@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" + integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= + +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= + dependencies: + has "^1.0.1" + +is-symbol@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" + integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== + dependencies: + has-symbols "^1.0.0" + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= + +memorystream@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" + integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= + +mime@^2.0.3: + version "2.4.4" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" + integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +mkdirp@0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +no-case@^2.2.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== + dependencies: + lower-case "^1.1.1" + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +npm-run-all@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" + integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== + dependencies: + ansi-styles "^3.2.1" + chalk "^2.4.1" + cross-spawn "^6.0.5" + memorystream "^0.3.1" + minimatch "^3.0.4" + pidtree "^0.3.0" + read-pkg "^3.0.0" + shell-quote "^1.6.1" + string.prototype.padend "^3.0.0" + +object-keys@^1.0.12: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +param-case@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= + dependencies: + no-case "^2.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= + +pidtree@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.0.tgz#f6fada10fccc9f99bf50e90d0b23d72c9ebc2e6b" + integrity sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg== + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +plop-logger@^2.3.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/plop-logger/-/plop-logger-2.5.0.tgz#3a80cf4edb98cc6c91a83cc39ba6eff9343308cd" + integrity sha512-sudMgIddrxQYw/UpLWjK//CcA4kCCTr87OWTPlf8gLCoBni2vodp5BbhCH6lMXXINUD//5yPmA9jAMwT3tUSCA== + dependencies: + ansi-colors "^4.1.1" + tslib "^1.10.0" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +progress@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +proxy-from-env@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" + integrity sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4= + +puppeteer@^1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-1.19.0.tgz#e3b7b448c2c97933517078d7a2c53687361bebea" + integrity sha512-2S6E6ygpoqcECaagDbBopoSOPDv0pAZvTbnBgUY+6hq0/XDFDOLEMNlHF/SKJlzcaZ9ckiKjKDuueWI3FN/WXw== + dependencies: + debug "^4.1.0" + extract-zip "^1.6.6" + https-proxy-agent "^2.2.1" + mime "^2.0.3" + progress "^2.0.1" + proxy-from-env "^1.0.0" + rimraf "^2.6.1" + ws "^6.1.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +readable-stream@^2.2.2: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + +resolve@^1.10.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" + integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== + dependencies: + path-parse "^1.0.6" + +rimraf@^2.6.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +"semver@2 || 3 || 4 || 5", semver@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shell-quote@^1.6.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.1.tgz#3161d969886fb14f9140c65245a5dd19b6f0b06b" + integrity sha512-2kUqeAGnMAu6YrTPX4E3LfxacH9gKljzVjlkUeSqY0soGwK4KLl7TURXCem712tkhBCeeaFP9QK4dKn88s3Icg== + +source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + +string.prototype.padend@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz#f3aaef7c1719f170c5eab1c32bf780d96e21f2f0" + integrity sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.4.3" + function-bind "^1.0.2" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +tslib@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" + integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +uglify-js@^3.5.1: + version "3.6.0" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5" + integrity sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg== + dependencies: + commander "~2.20.0" + source-map "~0.6.1" + +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +ws@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + +yauzl@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" + integrity sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU= + dependencies: + fd-slicer "~1.0.1"