From 7616926f3f5092bef003fef669e322253186d3bd Mon Sep 17 00:00:00 2001 From: Huyen Nguyen <25715018+huyenltnguyen@users.noreply.github.com> Date: Mon, 10 Nov 2025 05:29:42 -0800 Subject: [PATCH 01/21] refactor(e2e): consolidate tests in preview.spec.ts (#63652) --- e2e/preview.spec.ts | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/e2e/preview.spec.ts b/e2e/preview.spec.ts index 5cdb6eb06d4..9ae36127d6f 100644 --- a/e2e/preview.spec.ts +++ b/e2e/preview.spec.ts @@ -9,7 +9,7 @@ test.beforeEach(async ({ page }) => { }); test.describe('Challenge Preview Component', () => { - test('should render correct output of default code', async ({ + test('should render correct output for default and changed code', async ({ page, isMobile }) => { @@ -18,30 +18,27 @@ test.describe('Challenge Preview Component', () => { .getByRole('tab', { name: translations.learn['editor-tabs'].preview }) .click(); } + + // Check default code output await expect( page .frameLocator('.challenge-preview-frame') - .first() .getByRole('heading', { name: 'CatPhotoApp' }) ).toBeVisible(); - }); - test('should render correct output of changed code', async ({ - page, - isMobile - }) => { + // Change code await focusEditor({ page, isMobile }); - await page.keyboard.insertText('

FreeCodeCamp

'); if (isMobile) { await page .getByRole('tab', { name: translations.learn['editor-tabs'].preview }) .click(); } + + // Check changed code output await expect( page .frameLocator('.challenge-preview-frame') - .first() .getByRole('heading', { name: 'FreeCodeCamp' }) ).toBeVisible(); }); From 3549056b34b4598834f119e9c66117d18d0b28f4 Mon Sep 17 00:00:00 2001 From: freeCodeCamp's Camper Bot Date: Mon, 10 Nov 2025 20:25:15 +0530 Subject: [PATCH 02/21] chore(i18n,client): processed translations (#63693) --- .../locales/chinese-traditional/intro.json | 71 +++++++++++----- .../chinese-traditional/translations.json | 49 +++++++---- client/i18n/locales/chinese/intro.json | 71 +++++++++++----- client/i18n/locales/chinese/translations.json | 49 +++++++---- client/i18n/locales/espanol/intro.json | 71 +++++++++++----- client/i18n/locales/espanol/translations.json | 49 +++++++---- client/i18n/locales/german/intro.json | 71 +++++++++++----- client/i18n/locales/german/translations.json | 49 +++++++---- client/i18n/locales/italian/intro.json | 71 +++++++++++----- client/i18n/locales/italian/translations.json | 49 +++++++---- client/i18n/locales/japanese/intro.json | 71 +++++++++++----- .../i18n/locales/japanese/translations.json | 49 +++++++---- client/i18n/locales/korean/intro.json | 71 +++++++++++----- client/i18n/locales/korean/translations.json | 49 +++++++---- client/i18n/locales/portuguese/intro.json | 81 +++++++++++++------ .../i18n/locales/portuguese/translations.json | 49 +++++++---- client/i18n/locales/swahili/intro.json | 71 +++++++++++----- client/i18n/locales/swahili/translations.json | 49 +++++++---- client/i18n/locales/ukrainian/intro.json | 71 +++++++++++----- .../i18n/locales/ukrainian/translations.json | 49 +++++++---- 20 files changed, 875 insertions(+), 335 deletions(-) diff --git a/client/i18n/locales/chinese-traditional/intro.json b/client/i18n/locales/chinese-traditional/intro.json index 31727661f8b..2427c52490f 100644 --- a/client/i18n/locales/chinese-traditional/intro.json +++ b/client/i18n/locales/chinese-traditional/intro.json @@ -60,7 +60,7 @@ } }, "2022/responsive-web-design": { - "title": "響應式網頁設計", + "title": "Legacy Responsive Web Design V8", "intro": [ "在響應式網頁設計的認證課程中,你將學習用於構建網頁的語言: HTML(超文本標記語言)用於創建內容,CSS(級聯樣式表)用於樣式設計。", "首先,你將通過創建一個展示貓咪圖片的應用學習 HTML 和 CSS 的基本知識。 然後,通過創建一隻企鵝來學習像 CSS 變量這樣的現代技術,並通過創建網頁表單學習無障礙的最佳實踐。", @@ -217,7 +217,7 @@ } }, "javascript-algorithms-and-data-structures": { - "title": "(舊版)JavaScript 算法和數據結構", + "title": "Legacy JavaScript Algorithms and Data Structures V7", "intro": [ "HTML 和 CSS 控制頁面的內容和樣式,JavaScript 則用於頁面交互。在 JavaScript 算法和數據結構認證中,你將學習 JavaScript 的基礎知識,包括變量、 數組、 對象、 循環和函數。", "打好基礎之後,你將會通過創建算法來操作字符串、進行階乘運算甚至計算國際空間站的軌道來應用這些知識。", @@ -300,7 +300,7 @@ } }, "javascript-algorithms-and-data-structures-v8": { - "title": "JavaScript Algorithms and Data Structures", + "title": "Legacy JavaScript Algorithms and Data Structures V8", "intro": [ "開發者使用 HTML 和 CSS 來控制頁面的內容與樣式。他們還使用 JavaScript 來讓頁面可以交互。", "在這個 JavaScript 算法與數據結構認證中,你將學習如變量、數組、對象、循環、函數、DOM 等 JavaScript 的基礎知識。", @@ -490,7 +490,7 @@ } }, "front-end-development-libraries": { - "title": "前端開發庫", + "title": "Front End Development Libraries V8", "intro": [ "你已經熟悉了 HTML、CSS 和 JavaScript。現在學習行業中一些流行的前端庫來提升你的技能吧。", "在前端開發庫認證中,你將學習如何使用 Bootstrap 快速設置網站樣式,以及如何在 CSS 樣式中添加邏輯,並使用 Sass 對其進行擴展。", @@ -553,7 +553,7 @@ } }, "data-visualization": { - "title": "數據可視化", + "title": "Data Visualization V8", "intro": [ "數據無處不在。但是,如果沒有上下文,數據就沒有多大意義。", "在數據可視化認證中,你會用 D3.js 庫來創建表格、圖表和地圖,以展示不同的數據。", @@ -588,7 +588,7 @@ } }, "relational-database": { - "title": "關係數據庫", + "title": "Relational Database V8", "intro": [ "對於這些課程,你將使用真正的開發人員工具和軟件,包括 VS Code、PostgreSQL 和 Linux/Unix 命令行來完成交互式教程和構建項目。", "這些課程從基本的 Bash 命令開始。使用終端,你將學習從導航和操作文件系統、在 Bash 中編寫腳本到高級用法的所有內容。", @@ -696,7 +696,7 @@ } }, "back-end-development-and-apis": { - "title": "後端開發和 APIs", + "title": "Back End Development and APIs V8", "intro": [ "在這之前,你只是在前端使用 JavaScript 來給頁面添加交互、解決算法挑戰,或構建一個 SPA(單頁應用程序)。但 JavaScript 也可以用於後端或者服務器來構建整個 web 應用程序。", "今天,構建應用軟件的廣受歡迎的方法之一是微服務,這些微服務是一種小型模塊化的應用,能夠共同形成一個更大的整體。", @@ -2073,6 +2073,12 @@ "In these lessons, you will learn about HTML fundamentals like the div element, the id and class attributes, the HTML boilerplate, HTML entities, and more." ] }, + "workshop-bookstore-page": { + "title": "Build a Bookstore Page", + "intro": [ + "In this workshop, you will practice working with classes, ids and the div element by building a bookstore page." + ] + }, "lecture-understanding-how-html-affects-seo": { "title": "Understanding How HTML Affects SEO", "intro": [ @@ -4677,7 +4683,6 @@ "workshop-discount-calculator": { "title": "Build a Discount Calculator", "intro": [ - "Build a Discount Calculator", "In this workshop you will build a flexible discount pricing calculator through abstract base classes, allowing multiple discount algorithms to be applied interchangeably without modifying the core logic." ] }, @@ -4801,8 +4806,10 @@ ] }, "workshop-shortest-path-algorithm": { - "title": "Build a Shortest Path Algorithm", - "intro": [""] + "title": "Implement the Shortest Path Algorithm", + "intro": [ + "In this workshop you will implement the shortest path algorithm to find the shortest path between two nodes in a graph." + ] }, "lab-adjacency-list-to-matrix-converter": { "title": "Build an Adjacency List to Matrix Converter", @@ -6275,6 +6282,7 @@ }, "front-end-development-libraries-v9": { "title": "Front End Development Libraries Certification", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "This course teaches you the libraries that developers use to build webpages: React, TypeScript, and more.", "To earn your Front End Development Libraries Certification:", @@ -6616,6 +6624,7 @@ }, "python-v9": { "title": "Python Certification", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "This course teaches you the fundamentals of Python programming.", "To earn your Python Certification:", @@ -7074,6 +7083,7 @@ }, "relational-databases-v9": { "title": "Relational Databases Certification", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "This course teaches you the fundamentals of relational databases.", "To earn your Relational Databases Certification:", @@ -7308,6 +7318,7 @@ }, "back-end-development-and-apis-v9": { "title": "Back End Development and APIs Certification", + "note": "This certification is currently in development and will be available soon.", "intro": [ "This course teaches you the fundamentals of back end development and APIs.", "To earn your Back End Development and APIs Certification:", @@ -7424,11 +7435,17 @@ }, "full-stack-developer-v9": { "title": "Certified Full Stack Developer Curriculum", + "note": "If you were previously working through our full stack curriculum, don't worry - you're progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.", "intro": [ - "This course provides a comprehensive pathway to becoming a Certified Full Stack Developer, covering all the essential technologies required to build modern, scalable web applications from start to finish.", - "Through a blend of interactive lessons, coding exercises, and real-world projects, you will master both frontend and backend development. You'll work with HTML, CSS, and JavaScript to build responsive user interfaces, explore React and TypeScript for advanced web applications, and learn to manage data with relational databases - and on the backend, you'll use Git, Npm, Node.js, and Python to create powerful server-side solutions.", - "By the end of this course, you'll have the practical skills and experience to confidently develop complete web applications, preparing you for a successful career as a Full Stack Developer.", - "This certification will take you a substantial amount of time and effort to complete. If you start now, you may be ready to start the remaining material and final exam when we launch it in the coming months." + "This certification represents the culmination of your full stack developer journey. It demonstrates your ability to build complete, modern web applications from start to finish.", + "To qualify for the exam, you must earn the following certifications:", + "- Responsive Web Design Certification", + "- JavaScript Certification", + "- Front End Development Libraries Certification", + "- Python Certification", + "- Relational Databases Certification", + "- Back End Development and APIs Certification", + "Pass the exam to earn your Full Stack Developer Certification." ], "chapters": { "certified-full-stack-developer-exam": "Certified Full Stack Developer Exam" @@ -7457,12 +7474,12 @@ "intro": ["Placeholder intro"], "chapters": { "es-a1-chapter-welcome-to-a1-professional-spanish": "Welcome to A1 Professional Spanish", - "es-a1-chapter-letters-and-sounds": "Letters and Sounds", + "es-a1-chapter-the-spanish-alphabet": "The Spanish Alphabet", "es-a1-chapter-greetings-and-introductions": "Greetings and Introductions" }, "modules": { "es-a1-module-introduction-and-certification-overview": "Introduction and Certification Overview", - "es-a1-module-alphabet-accents-and-punctuation": "Alphabet, Accents, and Punctuation", + "es-a1-module-alphabet-and-special-characters": "The Alphabet and Special Characters", "es-a1-module-greetings-and-farewells": "Greetings and Farewells", "es-a1-module-introducing-yourself": "Introducing Yourself", "es-a1-module-first-questions": "First Questions" @@ -7472,7 +7489,7 @@ "note": "Coming Winter 2025", "intro": ["PLACEHOLDER: Write the module intro here."] }, - "es-a1-module-alphabet-accents-and-punctuation": { + "es-a1-module-alphabet-and-special-characters": { "note": "Coming Winter 2025", "intro": ["PLACEHOLDER: Write the module intro here."] }, @@ -7522,8 +7539,8 @@ "title": "Punctuation", "intro": ["", ""] }, - "es-a1-quiz-alphabet-accent-and-punctuation-quiz": { - "title": "Alphabet, Accent and Punctuation Quiz", + "es-a1-quiz-the-alphabet": { + "title": "The Spanish Alphabet Quiz", "intro": ["", ""] }, "es-a1-warm-up-introducing-yourself-basics": { @@ -7573,6 +7590,22 @@ "es-a1-quiz-first-questions": { "title": "First Questions Quiz", "intro": ["", ""] + }, + "es-a1-learn-vowels": { + "title": "Vowels", + "intro": ["", ""] + }, + "es-a1-learn-consonants-and-special-characters": { + "title": "Consonants and Special Characters", + "intro": ["", ""] + }, + "es-a1-review-the-alphabet": { + "title": "The Spanish Alphabet Review", + "intro": ["", ""] + }, + "es-a1-practice-the-alphabet": { + "title": "The Spanish Alphabet Practice", + "intro": ["", ""] } } }, diff --git a/client/i18n/locales/chinese-traditional/translations.json b/client/i18n/locales/chinese-traditional/translations.json index 2e7da7f7718..b83bd8178a6 100644 --- a/client/i18n/locales/chinese-traditional/translations.json +++ b/client/i18n/locales/chinese-traditional/translations.json @@ -685,6 +685,7 @@ "lab": "實驗室", "review": "複習", "quiz": "測驗", + "cert-project": "Certification Project", "exam": "考試", "warm-up": "Warm-up", "learn": "Learn", @@ -1194,20 +1195,20 @@ } }, "title": { - "responsive-web-design": "響應式 Web 設計", - "responsive-web-design-cert": "響應式 Web 設計認證", - "javascript-algorithms-and-data-structures": "舊版 JavaScript 算法和數據結構", - "javascript-algorithms-and-data-structures-cert": "舊版 JavaScript 算法和數據結構認證", - "javascript-algorithms-and-data-structures-v8": "JavaScript 算法和數據結構", - "javascript-algorithms-and-data-structures-v8-cert": "JavaScript 算法和數據結構認證", - "front-end-development-libraries": "前端開發庫", - "front-end-development-libraries-cert": "前端開發庫認證", - "data-visualization": "數據可視化", - "data-visualization-cert": "數據可視化認證", - "relational-database-v8": "關係數據庫", - "relational-database-v8-cert": "關係數據庫認證", - "back-end-development-and-apis": "後端開發和 APIs", - "back-end-development-and-apis-cert": "後端開發和 APIs 認證", + "responsive-web-design": "Legacy Responsive Web Design V8", + "responsive-web-design-cert": "Legacy Responsive Web Design V8 Certification", + "javascript-algorithms-and-data-structures": "Legacy JavaScript Algorithms and Data Structures V7", + "javascript-algorithms-and-data-structures-cert": "Legacy JavaScript Algorithms and Data Structures V7 Certification", + "javascript-algorithms-and-data-structures-v8": "Legacy JavaScript Algorithms and Data Structures V8", + "javascript-algorithms-and-data-structures-v8-cert": "Legacy JavaScript Algorithms and Data Structures V8 Certification", + "front-end-development-libraries": "Front End Development Libraries V8", + "front-end-development-libraries-cert": "Front End Development Libraries V8 Certification", + "data-visualization": "Data Visualization V8", + "data-visualization-cert": "Data Visualization V8 Certification", + "relational-database-v8": "Relational Database V8", + "relational-database-v8-cert": "Relational Database V8 Certification", + "back-end-development-and-apis": "Back End Development and APIs V8", + "back-end-development-and-apis-cert": "Back End Development and APIs V8 Certification", "quality-assurance-v7": "質量保證", "quality-assurance-v7-cert": "質量保證認證", "scientific-computing-with-python-v7": "Python 科學計算", @@ -1353,6 +1354,26 @@ "two-questions": "恭喜你已經走到了這一步。在你開始考試之前,請回答這兩個簡短的調研問題。" } }, + "speaking-modal": { + "heading": "Speaking Practice", + "repeat-sentence": "Repeat aloud this sentence:", + "play": "Play", + "playing": "Playing...", + "record": "Record", + "stop": "Stop", + "incorrect-words": "Incorrect words: {{words}}.", + "misplaced-words": "Misplaced words: {{words}}.", + "correct-congratulations": "That's correct! Congratulations!", + "very-good": "Very good!", + "try-again": "Try again.", + "no-audio-available": "No audio file available.", + "no-speech-detected": "Recording stopped. No speech detected.", + "speech-recognition-not-supported": "Speech recognition not supported in this browser.", + "recording-speak-now": "Recording. Speak now.", + "recording-stopped-processing": "Recording stopped. Processing...", + "microphone-access-error": "Error: Could not access microphone.", + "speaking-button": "Practice speaking" + }, "curriculum": { "catalog": { "title": "探索我們的目錄", diff --git a/client/i18n/locales/chinese/intro.json b/client/i18n/locales/chinese/intro.json index 31475de202f..8d7e435c48a 100644 --- a/client/i18n/locales/chinese/intro.json +++ b/client/i18n/locales/chinese/intro.json @@ -60,7 +60,7 @@ } }, "2022/responsive-web-design": { - "title": "响应式网页设计", + "title": "Legacy Responsive Web Design V8", "intro": [ "在响应式网页设计的认证课程中,你将学习用于构建网页的语言: HTML(超文本标记语言)用于创建内容,CSS(级联样式表)用于样式设计。", "首先,你将通过创建一个展示猫咪图片的应用学习 HTML 和 CSS 的基本知识。 然后,通过创建一只企鹅来学习像 CSS 变量这样的现代技术,并通过创建网页表单学习无障碍的最佳实践。", @@ -217,7 +217,7 @@ } }, "javascript-algorithms-and-data-structures": { - "title": "(旧版)JavaScript 算法和数据结构", + "title": "Legacy JavaScript Algorithms and Data Structures V7", "intro": [ "HTML 和 CSS 控制页面的内容和样式,JavaScript 则用于页面交互。在 JavaScript 算法和数据结构认证中,你将学习 JavaScript 的基础知识,包括变量、 数组、 对象、 循环和函数。", "打好基础之后,你将会通过创建算法来操作字符串、进行阶乘运算甚至计算国际空间站的轨道来应用这些知识。", @@ -300,7 +300,7 @@ } }, "javascript-algorithms-and-data-structures-v8": { - "title": "JavaScript Algorithms and Data Structures", + "title": "Legacy JavaScript Algorithms and Data Structures V8", "intro": [ "开发者使用 HTML 和 CSS 来控制页面的内容与样式。他们还使用 JavaScript 来让页面可以交互。", "在这个 JavaScript 算法与数据结构认证中,你将学习如变量、数组、对象、循环、函数、DOM 等 JavaScript 的基础知识。", @@ -490,7 +490,7 @@ } }, "front-end-development-libraries": { - "title": "前端开发库", + "title": "Front End Development Libraries V8", "intro": [ "你已经熟悉了 HTML、CSS 和 JavaScript。现在学习行业中一些流行的前端库来提升你的技能吧。", "在前端开发库认证中,你将学习如何使用 Bootstrap 快速设置网站样式,以及如何在 CSS 样式中添加逻辑,并使用 Sass 对其进行扩展。", @@ -553,7 +553,7 @@ } }, "data-visualization": { - "title": "数据可视化", + "title": "Data Visualization V8", "intro": [ "数据无处不在。但是,如果没有上下文,数据就没有多大意义。", "在数据可视化认证中,你会用 D3.js 库来创建表格、图表和地图,以展示不同的数据。", @@ -588,7 +588,7 @@ } }, "relational-database": { - "title": "关系数据库", + "title": "Relational Database V8", "intro": [ "对于这些课程,你将使用真正的开发人员工具和软件,包括 VS Code、PostgreSQL 和 Linux/Unix 命令行来完成交互式教程和构建项目。", "这些课程从基本的 Bash 命令开始。使用终端,你将学习从导航和操作文件系统、在 Bash 中编写脚本到高级用法的所有内容。", @@ -696,7 +696,7 @@ } }, "back-end-development-and-apis": { - "title": "后端开发和 APIs", + "title": "Back End Development and APIs V8", "intro": [ "在这之前,你只是在前端使用 JavaScript 来给页面添加交互、解决算法挑战,或构建一个 SPA(单页应用程序)。但 JavaScript 也可以用于后端或者服务器来构建整个 web 应用程序。", "今天,构建应用软件的广受欢迎的方法之一是微服务,这些微服务是一种小型模块化的应用,能够共同形成一个更大的整体。", @@ -2073,6 +2073,12 @@ "In these lessons, you will learn about HTML fundamentals like the div element, the id and class attributes, the HTML boilerplate, HTML entities, and more." ] }, + "workshop-bookstore-page": { + "title": "Build a Bookstore Page", + "intro": [ + "In this workshop, you will practice working with classes, ids and the div element by building a bookstore page." + ] + }, "lecture-understanding-how-html-affects-seo": { "title": "Understanding How HTML Affects SEO", "intro": [ @@ -4677,7 +4683,6 @@ "workshop-discount-calculator": { "title": "Build a Discount Calculator", "intro": [ - "Build a Discount Calculator", "In this workshop you will build a flexible discount pricing calculator through abstract base classes, allowing multiple discount algorithms to be applied interchangeably without modifying the core logic." ] }, @@ -4801,8 +4806,10 @@ ] }, "workshop-shortest-path-algorithm": { - "title": "Build a Shortest Path Algorithm", - "intro": [""] + "title": "Implement the Shortest Path Algorithm", + "intro": [ + "In this workshop you will implement the shortest path algorithm to find the shortest path between two nodes in a graph." + ] }, "lab-adjacency-list-to-matrix-converter": { "title": "Build an Adjacency List to Matrix Converter", @@ -6275,6 +6282,7 @@ }, "front-end-development-libraries-v9": { "title": "Front End Development Libraries Certification", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "This course teaches you the libraries that developers use to build webpages: React, TypeScript, and more.", "To earn your Front End Development Libraries Certification:", @@ -6616,6 +6624,7 @@ }, "python-v9": { "title": "Python Certification", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "This course teaches you the fundamentals of Python programming.", "To earn your Python Certification:", @@ -7074,6 +7083,7 @@ }, "relational-databases-v9": { "title": "Relational Databases Certification", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "This course teaches you the fundamentals of relational databases.", "To earn your Relational Databases Certification:", @@ -7308,6 +7318,7 @@ }, "back-end-development-and-apis-v9": { "title": "Back End Development and APIs Certification", + "note": "This certification is currently in development and will be available soon.", "intro": [ "This course teaches you the fundamentals of back end development and APIs.", "To earn your Back End Development and APIs Certification:", @@ -7424,11 +7435,17 @@ }, "full-stack-developer-v9": { "title": "Certified Full Stack Developer Curriculum", + "note": "If you were previously working through our full stack curriculum, don't worry - you're progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.", "intro": [ - "This course provides a comprehensive pathway to becoming a Certified Full Stack Developer, covering all the essential technologies required to build modern, scalable web applications from start to finish.", - "Through a blend of interactive lessons, coding exercises, and real-world projects, you will master both frontend and backend development. You'll work with HTML, CSS, and JavaScript to build responsive user interfaces, explore React and TypeScript for advanced web applications, and learn to manage data with relational databases - and on the backend, you'll use Git, Npm, Node.js, and Python to create powerful server-side solutions.", - "By the end of this course, you'll have the practical skills and experience to confidently develop complete web applications, preparing you for a successful career as a Full Stack Developer.", - "This certification will take you a substantial amount of time and effort to complete. If you start now, you may be ready to start the remaining material and final exam when we launch it in the coming months." + "This certification represents the culmination of your full stack developer journey. It demonstrates your ability to build complete, modern web applications from start to finish.", + "To qualify for the exam, you must earn the following certifications:", + "- Responsive Web Design Certification", + "- JavaScript Certification", + "- Front End Development Libraries Certification", + "- Python Certification", + "- Relational Databases Certification", + "- Back End Development and APIs Certification", + "Pass the exam to earn your Full Stack Developer Certification." ], "chapters": { "certified-full-stack-developer-exam": "Certified Full Stack Developer Exam" @@ -7457,12 +7474,12 @@ "intro": ["Placeholder intro"], "chapters": { "es-a1-chapter-welcome-to-a1-professional-spanish": "Welcome to A1 Professional Spanish", - "es-a1-chapter-letters-and-sounds": "Letters and Sounds", + "es-a1-chapter-the-spanish-alphabet": "The Spanish Alphabet", "es-a1-chapter-greetings-and-introductions": "Greetings and Introductions" }, "modules": { "es-a1-module-introduction-and-certification-overview": "Introduction and Certification Overview", - "es-a1-module-alphabet-accents-and-punctuation": "Alphabet, Accents, and Punctuation", + "es-a1-module-alphabet-and-special-characters": "The Alphabet and Special Characters", "es-a1-module-greetings-and-farewells": "Greetings and Farewells", "es-a1-module-introducing-yourself": "Introducing Yourself", "es-a1-module-first-questions": "First Questions" @@ -7472,7 +7489,7 @@ "note": "Coming Winter 2025", "intro": ["PLACEHOLDER: Write the module intro here."] }, - "es-a1-module-alphabet-accents-and-punctuation": { + "es-a1-module-alphabet-and-special-characters": { "note": "Coming Winter 2025", "intro": ["PLACEHOLDER: Write the module intro here."] }, @@ -7522,8 +7539,8 @@ "title": "Punctuation", "intro": ["", ""] }, - "es-a1-quiz-alphabet-accent-and-punctuation-quiz": { - "title": "Alphabet, Accent and Punctuation Quiz", + "es-a1-quiz-the-alphabet": { + "title": "The Spanish Alphabet Quiz", "intro": ["", ""] }, "es-a1-warm-up-introducing-yourself-basics": { @@ -7573,6 +7590,22 @@ "es-a1-quiz-first-questions": { "title": "First Questions Quiz", "intro": ["", ""] + }, + "es-a1-learn-vowels": { + "title": "Vowels", + "intro": ["", ""] + }, + "es-a1-learn-consonants-and-special-characters": { + "title": "Consonants and Special Characters", + "intro": ["", ""] + }, + "es-a1-review-the-alphabet": { + "title": "The Spanish Alphabet Review", + "intro": ["", ""] + }, + "es-a1-practice-the-alphabet": { + "title": "The Spanish Alphabet Practice", + "intro": ["", ""] } } }, diff --git a/client/i18n/locales/chinese/translations.json b/client/i18n/locales/chinese/translations.json index 4dc68db4c2c..86b0474ce95 100644 --- a/client/i18n/locales/chinese/translations.json +++ b/client/i18n/locales/chinese/translations.json @@ -685,6 +685,7 @@ "lab": "实验室", "review": "复习", "quiz": "测验", + "cert-project": "Certification Project", "exam": "考试", "warm-up": "Warm-up", "learn": "Learn", @@ -1194,20 +1195,20 @@ } }, "title": { - "responsive-web-design": "响应式 Web 设计", - "responsive-web-design-cert": "响应式 Web 设计认证", - "javascript-algorithms-and-data-structures": "旧版 JavaScript 算法和数据结构", - "javascript-algorithms-and-data-structures-cert": "旧版 JavaScript 算法和数据结构认证", - "javascript-algorithms-and-data-structures-v8": "JavaScript 算法和数据结构", - "javascript-algorithms-and-data-structures-v8-cert": "JavaScript 算法和数据结构认证", - "front-end-development-libraries": "前端开发库", - "front-end-development-libraries-cert": "前端开发库认证", - "data-visualization": "数据可视化", - "data-visualization-cert": "数据可视化认证", - "relational-database-v8": "关系数据库", - "relational-database-v8-cert": "关系数据库认证", - "back-end-development-and-apis": "后端开发和 APIs", - "back-end-development-and-apis-cert": "后端开发和 APIs 认证", + "responsive-web-design": "Legacy Responsive Web Design V8", + "responsive-web-design-cert": "Legacy Responsive Web Design V8 Certification", + "javascript-algorithms-and-data-structures": "Legacy JavaScript Algorithms and Data Structures V7", + "javascript-algorithms-and-data-structures-cert": "Legacy JavaScript Algorithms and Data Structures V7 Certification", + "javascript-algorithms-and-data-structures-v8": "Legacy JavaScript Algorithms and Data Structures V8", + "javascript-algorithms-and-data-structures-v8-cert": "Legacy JavaScript Algorithms and Data Structures V8 Certification", + "front-end-development-libraries": "Front End Development Libraries V8", + "front-end-development-libraries-cert": "Front End Development Libraries V8 Certification", + "data-visualization": "Data Visualization V8", + "data-visualization-cert": "Data Visualization V8 Certification", + "relational-database-v8": "Relational Database V8", + "relational-database-v8-cert": "Relational Database V8 Certification", + "back-end-development-and-apis": "Back End Development and APIs V8", + "back-end-development-and-apis-cert": "Back End Development and APIs V8 Certification", "quality-assurance-v7": "质量保证", "quality-assurance-v7-cert": "质量保证认证", "scientific-computing-with-python-v7": "Python 科学计算", @@ -1353,6 +1354,26 @@ "two-questions": "恭喜你已经走到了这一步。在你开始考试之前,请回答这两个简短的调研问题。" } }, + "speaking-modal": { + "heading": "Speaking Practice", + "repeat-sentence": "Repeat aloud this sentence:", + "play": "Play", + "playing": "Playing...", + "record": "Record", + "stop": "Stop", + "incorrect-words": "Incorrect words: {{words}}.", + "misplaced-words": "Misplaced words: {{words}}.", + "correct-congratulations": "That's correct! Congratulations!", + "very-good": "Very good!", + "try-again": "Try again.", + "no-audio-available": "No audio file available.", + "no-speech-detected": "Recording stopped. No speech detected.", + "speech-recognition-not-supported": "Speech recognition not supported in this browser.", + "recording-speak-now": "Recording. Speak now.", + "recording-stopped-processing": "Recording stopped. Processing...", + "microphone-access-error": "Error: Could not access microphone.", + "speaking-button": "Practice speaking" + }, "curriculum": { "catalog": { "title": "探索我们的目录", diff --git a/client/i18n/locales/espanol/intro.json b/client/i18n/locales/espanol/intro.json index f7900b1453d..ac51e11d597 100644 --- a/client/i18n/locales/espanol/intro.json +++ b/client/i18n/locales/espanol/intro.json @@ -60,7 +60,7 @@ } }, "2022/responsive-web-design": { - "title": "Diseño Web Responsivo", + "title": "Legacy Responsive Web Design V8", "intro": [ "En esta certificación de Diseño Web Adaptativo, aprenderás los lenguajes que los desarrolladores usan para construir páginas web: HTML (Lenguaje de Marcado de Hipertexto) para el contenido, y CSS (hojas de estilo en cascada) para el diseño.", "Primero, crearás una aplicación de fotos de gatos para aprender los conceptos básicos de HTML y CSS. Más adelante, aprenderás técnicas modernas como variables CSS, mediante la construcción de un pingüino, y las mejores prácticas para la accesibilidad mediante la construcción de un sitio de cuestionarios.", @@ -217,7 +217,7 @@ } }, "javascript-algorithms-and-data-structures": { - "title": "Algortimos JavaScript y Estructuras de Datos", + "title": "Legacy JavaScript Algorithms and Data Structures V7", "intro": [ "Mientras HTML y CSS controlan el contenido y el estilo de una página, JavaScript se utiliza para hacerlo interactivo. En la certificación Algoritmos de JavaScript y Estructuras de Datos, aprenderás los fundamentos de JavaScript incluyendo variables, arreglos, objetos, bucles y funciones.", "Una vez que tengas los fundamentos, aplicarás ese conocimiento creando algoritmos para manipular cadenas, factorizar números e incluso calcular la órbita de la Estación Espacial Internacional.", @@ -300,7 +300,7 @@ } }, "javascript-algorithms-and-data-structures-v8": { - "title": "Algoritmos y estructuras de datos de JavaScript", + "title": "Legacy JavaScript Algorithms and Data Structures V8", "intro": [ "Los desarrolladores usan HTML y CSS para controlar el contenido y estilo de una página. También usan JavaScript para hacer interactiva la página.", "En esta certificación de Algoritmos de JavaScript y Estructura de Datos, aprenderas los fundamentos de JavaScript, como variables, arreglos, objetos, bucles, funciones, DOM y mucho más.", @@ -490,7 +490,7 @@ } }, "front-end-development-libraries": { - "title": "Librerías de desarrollo de la interfaz", + "title": "Front End Development Libraries V8", "intro": [ "Ahora que estás familiarizado con HTML, CSS y JavaScript, mejora tus habilidades aprendiendo algunas de las librerías de interfaz más populares en la industria.", "En la certificación de bibliotecas de desarrollo front-end, aprenderá cómo diseñar su sitio rápidamente con Bootstrap. También aprenderá cómo agregar lógica a sus estilos CSS y extenderlos con Sass.", @@ -553,7 +553,7 @@ } }, "data-visualization": { - "title": "Visualización de Datos", + "title": "Data Visualization V8", "intro": [ "Los datos están a nuestro alrededor, pero no significan mucho si no tienen forma o contexto.", "En la certificación Visualización de Datos, construirás diagramas, gráficos, y mapas para presentar diferentes tipos de datos utilizando la biblioteca D3.js.", @@ -588,7 +588,7 @@ } }, "relational-database": { - "title": "Base de datos Relacionales", + "title": "Relational Database V8", "intro": [ "Para estos cursos, usarás herramientas reales de desarrollador y software incluyendo código VS, PostgreSQL, y la línea de comandos Linux / Unix para completar tutoriales interactivos y construir proyectos.", "Estos cursos empiezan con comandos básicos de Base. Utilizando la terminal, aprenderá todo, desde navegar y manipular un sistema de archivos, programar en Bash, hasta el uso avanzado.", @@ -696,7 +696,7 @@ } }, "back-end-development-and-apis": { - "title": "Desarrollo Back End y APIs", + "title": "Back End Development and APIs V8", "intro": [ "Hasta este punto, solo has usado JavaScript en la parte de front-end para agregar interactividad a una página, resolver los desafíos de algoritmos o construir un SPA. Pero JavaScript también se puede utilizar en el back-end, o servidor, para construir aplicaciones web completas.", "Hoy en día, una de las formas populares para construir aplicaciones es a través de microservicios, que son pequeñas aplicaciones modulares que trabajan juntas para formar una aplicación más grande.", @@ -2087,6 +2087,12 @@ "In these lessons, you will learn about HTML fundamentals like the div element, the id and class attributes, the HTML boilerplate, HTML entities, and more." ] }, + "workshop-bookstore-page": { + "title": "Build a Bookstore Page", + "intro": [ + "In this workshop, you will practice working with classes, ids and the div element by building a bookstore page." + ] + }, "lecture-understanding-how-html-affects-seo": { "title": "Understanding How HTML Affects SEO", "intro": [ @@ -4691,7 +4697,6 @@ "workshop-discount-calculator": { "title": "Build a Discount Calculator", "intro": [ - "Build a Discount Calculator", "In this workshop you will build a flexible discount pricing calculator through abstract base classes, allowing multiple discount algorithms to be applied interchangeably without modifying the core logic." ] }, @@ -4815,8 +4820,10 @@ ] }, "workshop-shortest-path-algorithm": { - "title": "Build a Shortest Path Algorithm", - "intro": [""] + "title": "Implement the Shortest Path Algorithm", + "intro": [ + "In this workshop you will implement the shortest path algorithm to find the shortest path between two nodes in a graph." + ] }, "lab-adjacency-list-to-matrix-converter": { "title": "Build an Adjacency List to Matrix Converter", @@ -6289,6 +6296,7 @@ }, "front-end-development-libraries-v9": { "title": "Front End Development Libraries Certification", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "This course teaches you the libraries that developers use to build webpages: React, TypeScript, and more.", "To earn your Front End Development Libraries Certification:", @@ -6630,6 +6638,7 @@ }, "python-v9": { "title": "Python Certification", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "This course teaches you the fundamentals of Python programming.", "To earn your Python Certification:", @@ -7088,6 +7097,7 @@ }, "relational-databases-v9": { "title": "Relational Databases Certification", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "This course teaches you the fundamentals of relational databases.", "To earn your Relational Databases Certification:", @@ -7322,6 +7332,7 @@ }, "back-end-development-and-apis-v9": { "title": "Back End Development and APIs Certification", + "note": "This certification is currently in development and will be available soon.", "intro": [ "This course teaches you the fundamentals of back end development and APIs.", "To earn your Back End Development and APIs Certification:", @@ -7438,11 +7449,17 @@ }, "full-stack-developer-v9": { "title": "Certified Full Stack Developer Curriculum", + "note": "If you were previously working through our full stack curriculum, don't worry - you're progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.", "intro": [ - "This course provides a comprehensive pathway to becoming a Certified Full Stack Developer, covering all the essential technologies required to build modern, scalable web applications from start to finish.", - "Through a blend of interactive lessons, coding exercises, and real-world projects, you will master both frontend and backend development. You'll work with HTML, CSS, and JavaScript to build responsive user interfaces, explore React and TypeScript for advanced web applications, and learn to manage data with relational databases - and on the backend, you'll use Git, Npm, Node.js, and Python to create powerful server-side solutions.", - "By the end of this course, you'll have the practical skills and experience to confidently develop complete web applications, preparing you for a successful career as a Full Stack Developer.", - "This certification will take you a substantial amount of time and effort to complete. If you start now, you may be ready to start the remaining material and final exam when we launch it in the coming months." + "This certification represents the culmination of your full stack developer journey. It demonstrates your ability to build complete, modern web applications from start to finish.", + "To qualify for the exam, you must earn the following certifications:", + "- Responsive Web Design Certification", + "- JavaScript Certification", + "- Front End Development Libraries Certification", + "- Python Certification", + "- Relational Databases Certification", + "- Back End Development and APIs Certification", + "Pass the exam to earn your Full Stack Developer Certification." ], "chapters": { "certified-full-stack-developer-exam": "Certified Full Stack Developer Exam" @@ -7471,12 +7488,12 @@ "intro": ["Placeholder intro"], "chapters": { "es-a1-chapter-welcome-to-a1-professional-spanish": "Welcome to A1 Professional Spanish", - "es-a1-chapter-letters-and-sounds": "Letters and Sounds", + "es-a1-chapter-the-spanish-alphabet": "The Spanish Alphabet", "es-a1-chapter-greetings-and-introductions": "Greetings and Introductions" }, "modules": { "es-a1-module-introduction-and-certification-overview": "Introduction and Certification Overview", - "es-a1-module-alphabet-accents-and-punctuation": "Alphabet, Accents, and Punctuation", + "es-a1-module-alphabet-and-special-characters": "The Alphabet and Special Characters", "es-a1-module-greetings-and-farewells": "Greetings and Farewells", "es-a1-module-introducing-yourself": "Introducing Yourself", "es-a1-module-first-questions": "First Questions" @@ -7486,7 +7503,7 @@ "note": "Coming Winter 2025", "intro": ["PLACEHOLDER: Write the module intro here."] }, - "es-a1-module-alphabet-accents-and-punctuation": { + "es-a1-module-alphabet-and-special-characters": { "note": "Coming Winter 2025", "intro": ["PLACEHOLDER: Write the module intro here."] }, @@ -7536,8 +7553,8 @@ "title": "Punctuation", "intro": ["", ""] }, - "es-a1-quiz-alphabet-accent-and-punctuation-quiz": { - "title": "Alphabet, Accent and Punctuation Quiz", + "es-a1-quiz-the-alphabet": { + "title": "The Spanish Alphabet Quiz", "intro": ["", ""] }, "es-a1-warm-up-introducing-yourself-basics": { @@ -7587,6 +7604,22 @@ "es-a1-quiz-first-questions": { "title": "First Questions Quiz", "intro": ["", ""] + }, + "es-a1-learn-vowels": { + "title": "Vowels", + "intro": ["", ""] + }, + "es-a1-learn-consonants-and-special-characters": { + "title": "Consonants and Special Characters", + "intro": ["", ""] + }, + "es-a1-review-the-alphabet": { + "title": "The Spanish Alphabet Review", + "intro": ["", ""] + }, + "es-a1-practice-the-alphabet": { + "title": "The Spanish Alphabet Practice", + "intro": ["", ""] } } }, diff --git a/client/i18n/locales/espanol/translations.json b/client/i18n/locales/espanol/translations.json index d5690ea3ed0..41115ee99eb 100644 --- a/client/i18n/locales/espanol/translations.json +++ b/client/i18n/locales/espanol/translations.json @@ -685,6 +685,7 @@ "lab": "Lab", "review": "Review", "quiz": "Quiz", + "cert-project": "Certification Project", "exam": "Exam", "warm-up": "Warm-up", "learn": "Learn", @@ -1194,20 +1195,20 @@ } }, "title": { - "responsive-web-design": "Responsive Web Design", - "responsive-web-design-cert": "Responsive Web Design Certification", - "javascript-algorithms-and-data-structures": "Legacy JavaScript Algorithms and Data Structures", - "javascript-algorithms-and-data-structures-cert": "Legacy JavaScript Algorithms and Data Structures Certification", - "javascript-algorithms-and-data-structures-v8": "JavaScript Algorithms and Data Structures", - "javascript-algorithms-and-data-structures-v8-cert": "JavaScript Algorithms and Data Structures Certification", - "front-end-development-libraries": "Front End Development Libraries", - "front-end-development-libraries-cert": "Front End Development Libraries Certification", - "data-visualization": "Data Visualization", - "data-visualization-cert": "Data Visualization Certification", - "relational-database-v8": "Relational Database", - "relational-database-v8-cert": "Relational Database Certification", - "back-end-development-and-apis": "Back End Development and APIs", - "back-end-development-and-apis-cert": "Back End Development and APIs Certification", + "responsive-web-design": "Legacy Responsive Web Design V8", + "responsive-web-design-cert": "Legacy Responsive Web Design V8 Certification", + "javascript-algorithms-and-data-structures": "Legacy JavaScript Algorithms and Data Structures V7", + "javascript-algorithms-and-data-structures-cert": "Legacy JavaScript Algorithms and Data Structures V7 Certification", + "javascript-algorithms-and-data-structures-v8": "Legacy JavaScript Algorithms and Data Structures V8", + "javascript-algorithms-and-data-structures-v8-cert": "Legacy JavaScript Algorithms and Data Structures V8 Certification", + "front-end-development-libraries": "Front End Development Libraries V8", + "front-end-development-libraries-cert": "Front End Development Libraries V8 Certification", + "data-visualization": "Data Visualization V8", + "data-visualization-cert": "Data Visualization V8 Certification", + "relational-database-v8": "Relational Database V8", + "relational-database-v8-cert": "Relational Database V8 Certification", + "back-end-development-and-apis": "Back End Development and APIs V8", + "back-end-development-and-apis-cert": "Back End Development and APIs V8 Certification", "quality-assurance-v7": "Quality Assurance", "quality-assurance-v7-cert": "Quality Assurance Certification", "scientific-computing-with-python-v7": "Scientific Computing with Python", @@ -1353,6 +1354,26 @@ "two-questions": "Felicidades por llegar así de lejos. Antes que comiences el examen, por favor responda estas dos preguntas cómo una encuesta." } }, + "speaking-modal": { + "heading": "Speaking Practice", + "repeat-sentence": "Repeat aloud this sentence:", + "play": "Play", + "playing": "Playing...", + "record": "Record", + "stop": "Stop", + "incorrect-words": "Incorrect words: {{words}}.", + "misplaced-words": "Misplaced words: {{words}}.", + "correct-congratulations": "That's correct! Congratulations!", + "very-good": "Very good!", + "try-again": "Try again.", + "no-audio-available": "No audio file available.", + "no-speech-detected": "Recording stopped. No speech detected.", + "speech-recognition-not-supported": "Speech recognition not supported in this browser.", + "recording-speak-now": "Recording. Speak now.", + "recording-stopped-processing": "Recording stopped. Processing...", + "microphone-access-error": "Error: Could not access microphone.", + "speaking-button": "Practice speaking" + }, "curriculum": { "catalog": { "title": "Explore our Catalog", diff --git a/client/i18n/locales/german/intro.json b/client/i18n/locales/german/intro.json index 819985da533..736963b8c8e 100644 --- a/client/i18n/locales/german/intro.json +++ b/client/i18n/locales/german/intro.json @@ -60,7 +60,7 @@ } }, "2022/responsive-web-design": { - "title": "Responsive Webdesign", + "title": "Legacy Responsive Web Design V8", "intro": [ "In dieser Zertifizierung für responsives Webdesign lernst du die Sprachen, die Entwickler/innen zum Erstellen von Webseiten verwenden: HTML (Hypertext Markup Language) für den Inhalt und CSS (Cascading Style Sheets) für das Design.", "Zunächst baust du eine Katzenfoto-App, um die Grundlagen von HTML und CSS zu erlernen. Später lernst du moderne Techniken wie CSS-Variablen, indem du einen Pinguin baust, und bewährte Praktiken für Barrierefreiheit, indem du eine Quiz-Site erstellst.", @@ -217,7 +217,7 @@ } }, "javascript-algorithms-and-data-structures": { - "title": "Legacy JavaScript Algorithms and Data Structures", + "title": "Legacy JavaScript Algorithms and Data Structures V7", "intro": [ "Während HTML und CSS den Inhalt und das Styling einer Seite festlegen, wird JavaScript verwendet, um sie interaktiv zu gestalten. In der Zertifizierung \"JavaScript Algorithmen und Datenstrukturen\" lernst du die Grundlagen von JavaScript inklusive Variablen, Arrays, Objekten, Schleifen und Funktionen kennen.", "Sobald du die Grundlagen beherrschst, wendest du dieses Wissen an, indem du Algorithmen erstellst, um Strings zu manipulieren, Zahlen zu faktorisieren und sogar die Umlaufbahn der Internationalen Raumstation zu berechnen.", @@ -300,7 +300,7 @@ } }, "javascript-algorithms-and-data-structures-v8": { - "title": "JavaScript-Algorithmen und Datenstrukturen", + "title": "Legacy JavaScript Algorithms and Data Structures V8", "intro": [ "Entwickler verwenden HTML und CSS um den Inhalt und das Styling einer Seite zu kontrollieren. Und sie verwenden JavaScript, um diese Seite interaktiv zu gestalten.", "In this JavaScript Algorithm and Data Structures Certification, you'll learn the JavaScript fundamentals like variables, arrays, objects, loops, functions, the DOM and more.", @@ -490,7 +490,7 @@ } }, "front-end-development-libraries": { - "title": "Front-End-Entwicklungsbibliotheken", + "title": "Front End Development Libraries V8", "intro": [ "Jetzt, wo du mit HTML, CSS und JavaScript vertraut bist, kannst du deine Fähigkeiten verbessern, indem du einige der beliebtesten Front-End-Bibliotheken der Branche lernst.", "In der Zertifizierung für Front-End-Entwicklungsbibliotheken lernst du, wie du deine Seite mit Bootstrap schnell gestalten kannst. Du lernst auch, wie du Logik zu deinen CSS-Styles hinzufügen und sie mit Sass erweitern kannst.", @@ -553,7 +553,7 @@ } }, "data-visualization": { - "title": "Datenvisualisierung", + "title": "Data Visualization V8", "intro": [ "Daten sind überall um uns herum, aber ohne Form und Kontext bedeuten sie nicht viel.", "In der Datenvisualisierung-Zertifizierung erstellst du Diagramme, Grafiken und Karten, um verschiedene Arten von Daten mit der D3.js Bibliothek zu präsentieren.", @@ -588,7 +588,7 @@ } }, "relational-database": { - "title": "Relational Database", + "title": "Relational Database V8", "intro": [ "In diesen Kursen verwendest du echte Entwickler-Tools und Software wie VS Code, PostgreSQL und die Linux/Unix-Kommandozeile, um interaktive Tutorials zu absolvieren und Projekte zu erstellen.", "Diese Kurse beginnen mit den grundlegenden Bash-Befehlen. Über das Terminal lernst du alles von der Navigation und dem Umgang mit dem Dateisystem über das Skripting in der Bash bis hin zur fortgeschrittenen Nutzung.", @@ -696,7 +696,7 @@ } }, "back-end-development-and-apis": { - "title": "Back-End Entwicklung und APIs", + "title": "Back End Development and APIs V8", "intro": [ "Bis zu diesem Punkt hast du JavaScript nur im Front-End verwendet, um einer Seite Interaktivität hinzuzufügen, Aufgaben mit Algorithmen zu lösen oder eine SPA zu bauen. Aber JavaScript kann auch im Back-End, also auf dem Server, verwendet werden, um ganze Webanwendungen zu erstellen.", "Heutzutage ist eine der beliebtesten Arten, Anwendungen zu erstellen, Microservices. Das sind kleine, modulare Anwendungen, die zusammenarbeiten und ein größeres Ganzes bilden.", @@ -2087,6 +2087,12 @@ "In these lessons, you will learn about HTML fundamentals like the div element, the id and class attributes, the HTML boilerplate, HTML entities, and more." ] }, + "workshop-bookstore-page": { + "title": "Build a Bookstore Page", + "intro": [ + "In this workshop, you will practice working with classes, ids and the div element by building a bookstore page." + ] + }, "lecture-understanding-how-html-affects-seo": { "title": "Understanding How HTML Affects SEO", "intro": [ @@ -4691,7 +4697,6 @@ "workshop-discount-calculator": { "title": "Build a Discount Calculator", "intro": [ - "Build a Discount Calculator", "In this workshop you will build a flexible discount pricing calculator through abstract base classes, allowing multiple discount algorithms to be applied interchangeably without modifying the core logic." ] }, @@ -4815,8 +4820,10 @@ ] }, "workshop-shortest-path-algorithm": { - "title": "Build a Shortest Path Algorithm", - "intro": [""] + "title": "Implement the Shortest Path Algorithm", + "intro": [ + "In this workshop you will implement the shortest path algorithm to find the shortest path between two nodes in a graph." + ] }, "lab-adjacency-list-to-matrix-converter": { "title": "Build an Adjacency List to Matrix Converter", @@ -6289,6 +6296,7 @@ }, "front-end-development-libraries-v9": { "title": "Front End Development Libraries Certification", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "This course teaches you the libraries that developers use to build webpages: React, TypeScript, and more.", "To earn your Front End Development Libraries Certification:", @@ -6630,6 +6638,7 @@ }, "python-v9": { "title": "Python Certification", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "This course teaches you the fundamentals of Python programming.", "To earn your Python Certification:", @@ -7088,6 +7097,7 @@ }, "relational-databases-v9": { "title": "Relational Databases Certification", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "This course teaches you the fundamentals of relational databases.", "To earn your Relational Databases Certification:", @@ -7322,6 +7332,7 @@ }, "back-end-development-and-apis-v9": { "title": "Back End Development and APIs Certification", + "note": "This certification is currently in development and will be available soon.", "intro": [ "This course teaches you the fundamentals of back end development and APIs.", "To earn your Back End Development and APIs Certification:", @@ -7438,11 +7449,17 @@ }, "full-stack-developer-v9": { "title": "Certified Full Stack Developer Curriculum", + "note": "If you were previously working through our full stack curriculum, don't worry - you're progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.", "intro": [ - "This course provides a comprehensive pathway to becoming a Certified Full Stack Developer, covering all the essential technologies required to build modern, scalable web applications from start to finish.", - "Through a blend of interactive lessons, coding exercises, and real-world projects, you will master both frontend and backend development. You'll work with HTML, CSS, and JavaScript to build responsive user interfaces, explore React and TypeScript for advanced web applications, and learn to manage data with relational databases - and on the backend, you'll use Git, Npm, Node.js, and Python to create powerful server-side solutions.", - "By the end of this course, you'll have the practical skills and experience to confidently develop complete web applications, preparing you for a successful career as a Full Stack Developer.", - "This certification will take you a substantial amount of time and effort to complete. If you start now, you may be ready to start the remaining material and final exam when we launch it in the coming months." + "This certification represents the culmination of your full stack developer journey. It demonstrates your ability to build complete, modern web applications from start to finish.", + "To qualify for the exam, you must earn the following certifications:", + "- Responsive Web Design Certification", + "- JavaScript Certification", + "- Front End Development Libraries Certification", + "- Python Certification", + "- Relational Databases Certification", + "- Back End Development and APIs Certification", + "Pass the exam to earn your Full Stack Developer Certification." ], "chapters": { "certified-full-stack-developer-exam": "Certified Full Stack Developer Exam" @@ -7471,12 +7488,12 @@ "intro": ["Placeholder intro"], "chapters": { "es-a1-chapter-welcome-to-a1-professional-spanish": "Welcome to A1 Professional Spanish", - "es-a1-chapter-letters-and-sounds": "Letters and Sounds", + "es-a1-chapter-the-spanish-alphabet": "The Spanish Alphabet", "es-a1-chapter-greetings-and-introductions": "Greetings and Introductions" }, "modules": { "es-a1-module-introduction-and-certification-overview": "Introduction and Certification Overview", - "es-a1-module-alphabet-accents-and-punctuation": "Alphabet, Accents, and Punctuation", + "es-a1-module-alphabet-and-special-characters": "The Alphabet and Special Characters", "es-a1-module-greetings-and-farewells": "Greetings and Farewells", "es-a1-module-introducing-yourself": "Introducing Yourself", "es-a1-module-first-questions": "First Questions" @@ -7486,7 +7503,7 @@ "note": "Coming Winter 2025", "intro": ["PLACEHOLDER: Write the module intro here."] }, - "es-a1-module-alphabet-accents-and-punctuation": { + "es-a1-module-alphabet-and-special-characters": { "note": "Coming Winter 2025", "intro": ["PLACEHOLDER: Write the module intro here."] }, @@ -7536,8 +7553,8 @@ "title": "Punctuation", "intro": ["", ""] }, - "es-a1-quiz-alphabet-accent-and-punctuation-quiz": { - "title": "Alphabet, Accent and Punctuation Quiz", + "es-a1-quiz-the-alphabet": { + "title": "The Spanish Alphabet Quiz", "intro": ["", ""] }, "es-a1-warm-up-introducing-yourself-basics": { @@ -7587,6 +7604,22 @@ "es-a1-quiz-first-questions": { "title": "First Questions Quiz", "intro": ["", ""] + }, + "es-a1-learn-vowels": { + "title": "Vowels", + "intro": ["", ""] + }, + "es-a1-learn-consonants-and-special-characters": { + "title": "Consonants and Special Characters", + "intro": ["", ""] + }, + "es-a1-review-the-alphabet": { + "title": "The Spanish Alphabet Review", + "intro": ["", ""] + }, + "es-a1-practice-the-alphabet": { + "title": "The Spanish Alphabet Practice", + "intro": ["", ""] } } }, diff --git a/client/i18n/locales/german/translations.json b/client/i18n/locales/german/translations.json index 9165ae3dc46..b2f63a7fa9c 100644 --- a/client/i18n/locales/german/translations.json +++ b/client/i18n/locales/german/translations.json @@ -685,6 +685,7 @@ "lab": "Lab", "review": "Review", "quiz": "Quiz", + "cert-project": "Certification Project", "exam": "Exam", "warm-up": "Warm-up", "learn": "Learn", @@ -1194,20 +1195,20 @@ } }, "title": { - "responsive-web-design": "Responsive Web Design", - "responsive-web-design-cert": "Responsive Web Design Certification", - "javascript-algorithms-and-data-structures": "Legacy JavaScript Algorithms and Data Structures", - "javascript-algorithms-and-data-structures-cert": "Legacy JavaScript Algorithms and Data Structures Certification", - "javascript-algorithms-and-data-structures-v8": "JavaScript Algorithms and Data Structures", - "javascript-algorithms-and-data-structures-v8-cert": "JavaScript Algorithms and Data Structures Certification", - "front-end-development-libraries": "Front End Development Libraries", - "front-end-development-libraries-cert": "Front End Development Libraries Certification", - "data-visualization": "Data Visualization", - "data-visualization-cert": "Data Visualization Certification", - "relational-database-v8": "Relational Database", - "relational-database-v8-cert": "Relational Database Certification", - "back-end-development-and-apis": "Back End Development and APIs", - "back-end-development-and-apis-cert": "Back End Development and APIs Certification", + "responsive-web-design": "Legacy Responsive Web Design V8", + "responsive-web-design-cert": "Legacy Responsive Web Design V8 Certification", + "javascript-algorithms-and-data-structures": "Legacy JavaScript Algorithms and Data Structures V7", + "javascript-algorithms-and-data-structures-cert": "Legacy JavaScript Algorithms and Data Structures V7 Certification", + "javascript-algorithms-and-data-structures-v8": "Legacy JavaScript Algorithms and Data Structures V8", + "javascript-algorithms-and-data-structures-v8-cert": "Legacy JavaScript Algorithms and Data Structures V8 Certification", + "front-end-development-libraries": "Front End Development Libraries V8", + "front-end-development-libraries-cert": "Front End Development Libraries V8 Certification", + "data-visualization": "Data Visualization V8", + "data-visualization-cert": "Data Visualization V8 Certification", + "relational-database-v8": "Relational Database V8", + "relational-database-v8-cert": "Relational Database V8 Certification", + "back-end-development-and-apis": "Back End Development and APIs V8", + "back-end-development-and-apis-cert": "Back End Development and APIs V8 Certification", "quality-assurance-v7": "Quality Assurance", "quality-assurance-v7-cert": "Quality Assurance Certification", "scientific-computing-with-python-v7": "Scientific Computing with Python", @@ -1353,6 +1354,26 @@ "two-questions": "Congratulations on getting this far. Before you can start the exam, please answer these two short survey questions." } }, + "speaking-modal": { + "heading": "Speaking Practice", + "repeat-sentence": "Repeat aloud this sentence:", + "play": "Play", + "playing": "Playing...", + "record": "Record", + "stop": "Stop", + "incorrect-words": "Incorrect words: {{words}}.", + "misplaced-words": "Misplaced words: {{words}}.", + "correct-congratulations": "That's correct! Congratulations!", + "very-good": "Very good!", + "try-again": "Try again.", + "no-audio-available": "No audio file available.", + "no-speech-detected": "Recording stopped. No speech detected.", + "speech-recognition-not-supported": "Speech recognition not supported in this browser.", + "recording-speak-now": "Recording. Speak now.", + "recording-stopped-processing": "Recording stopped. Processing...", + "microphone-access-error": "Error: Could not access microphone.", + "speaking-button": "Practice speaking" + }, "curriculum": { "catalog": { "title": "Explore our Catalog", diff --git a/client/i18n/locales/italian/intro.json b/client/i18n/locales/italian/intro.json index b18e9dd0706..c4ac763bb76 100644 --- a/client/i18n/locales/italian/intro.json +++ b/client/i18n/locales/italian/intro.json @@ -60,7 +60,7 @@ } }, "2022/responsive-web-design": { - "title": "Web Design Responsivo", + "title": "Legacy Responsive Web Design V8", "intro": [ "In questo corso certificato di Web Design Responsivo imparerai i linguaggi che gli sviluppatori utilizzano per creare le pagine web. HTML (Hypertext Markup Language) per i contenuti e CSS (Cascading Style Sheets) per il design.", "Per prima cosa, costruirai un'app con foto di gatti per imparare le basi di HTML e CSS. Poi apprenderai tecniche più moderne come le variabili in CSS costruendo un pinguino, e le migliori pratiche per l'accessibilità costruendo un quiz.", @@ -217,7 +217,7 @@ } }, "javascript-algorithms-and-data-structures": { - "title": "Legacy JavaScript Algorithms and Data Structures", + "title": "Legacy JavaScript Algorithms and Data Structures V7", "intro": [ "Mentre HTML e CSS controllano il contenuto e lo stile della pagina, JavaScript viene utilizzato per renderla interattiva. Nella Certificazione Algoritmi e Strutture Dati in JavaScript, imparerai le basi di JavaScript, tra cui variabili, array, oggetti, loop e funzioni.", "Una volta che avrai appreso le basi, applicherai queste conoscenze creando algoritmi per manipolare stringhe, fattorizzare numeri, e persino calcolare l'orbita della Stazione Spaziale Internazionale.", @@ -300,7 +300,7 @@ } }, "javascript-algorithms-and-data-structures-v8": { - "title": "JavaScript Algorithms and Data Structures", + "title": "Legacy JavaScript Algorithms and Data Structures V8", "intro": [ "Developers use HTML and CSS to control the content and styling of a page. And they use JavaScript to make that page interactive.", "Nella certificazione JavaScript Algoritmi e Strutture di Dati, imparerai i fondamenti di JavaScript come variabili, array, oggetti, loop, funzioni, il DOM e altro ancora.", @@ -490,7 +490,7 @@ } }, "front-end-development-libraries": { - "title": "Librerie di sviluppo Front End", + "title": "Front End Development Libraries V8", "intro": [ "Ora che hai familiarità con HTML, CSS, e JavaScript, aumenta le tue competenze conoscendo alcune delle più popolari librerie di front-end del settore.", "Nella Certificazione Librerie di Sviluppo Front End, imparerai come definire rapidamente lo stile del tuo sito con Bootstrap. Imparerai anche come aggiungere la logica ai tuoi stili CSS e ad estenderli con Sass.", @@ -553,7 +553,7 @@ } }, "data-visualization": { - "title": "Data Visualization", + "title": "Data Visualization V8", "intro": [ "I dati ci circondano, ma non ci dicono molto senza forma o contesto.", "Nella Certificazione Visualizzazione dei Dati, costruirai diagrammi, grafici e mappe per presentare diversi tipi di dati con la libreria D3.js.", @@ -588,7 +588,7 @@ } }, "relational-database": { - "title": "Database Relazionali", + "title": "Relational Database V8", "intro": [ "Per questi corsi, userai veri strumenti e software da sviluppatori inclusi VSCode, PostgreSQL, e la riga di comando Linux / Unix per completare i tutorial interattivi e creare progetti.", "Questi corsi iniziano con comandi Bash di base. Usando il terminale imparerai tutto da navigare e manipolare il sistema dei file, creare script in bash, tutto quanto fino all'uso avanzato.", @@ -696,7 +696,7 @@ } }, "back-end-development-and-apis": { - "title": "Sviluppo Back End e API", + "title": "Back End Development and APIs V8", "intro": [ "Fino a questo punto, hai usato solo JavaScript sul front-end per aggiungere interattività a una pagina, risolvere sfide algoritmiche o costruire una Single Page Application. Ma JavaScript può essere utilizzato anche nel backend (cioè lato server), per costruire intere applicazioni web.", "Oggi, uno dei modi più popolari per costruire applicazioni è attraverso i microservizi, che sono piccole applicazioni modulari che lavorano insieme per formare qualcosa di più grande.", @@ -2087,6 +2087,12 @@ "In these lessons, you will learn about HTML fundamentals like the div element, the id and class attributes, the HTML boilerplate, HTML entities, and more." ] }, + "workshop-bookstore-page": { + "title": "Build a Bookstore Page", + "intro": [ + "In this workshop, you will practice working with classes, ids and the div element by building a bookstore page." + ] + }, "lecture-understanding-how-html-affects-seo": { "title": "Understanding How HTML Affects SEO", "intro": [ @@ -4691,7 +4697,6 @@ "workshop-discount-calculator": { "title": "Build a Discount Calculator", "intro": [ - "Build a Discount Calculator", "In this workshop you will build a flexible discount pricing calculator through abstract base classes, allowing multiple discount algorithms to be applied interchangeably without modifying the core logic." ] }, @@ -4815,8 +4820,10 @@ ] }, "workshop-shortest-path-algorithm": { - "title": "Build a Shortest Path Algorithm", - "intro": [""] + "title": "Implement the Shortest Path Algorithm", + "intro": [ + "In this workshop you will implement the shortest path algorithm to find the shortest path between two nodes in a graph." + ] }, "lab-adjacency-list-to-matrix-converter": { "title": "Build an Adjacency List to Matrix Converter", @@ -6289,6 +6296,7 @@ }, "front-end-development-libraries-v9": { "title": "Front End Development Libraries Certification", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "This course teaches you the libraries that developers use to build webpages: React, TypeScript, and more.", "To earn your Front End Development Libraries Certification:", @@ -6630,6 +6638,7 @@ }, "python-v9": { "title": "Python Certification", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "This course teaches you the fundamentals of Python programming.", "To earn your Python Certification:", @@ -7088,6 +7097,7 @@ }, "relational-databases-v9": { "title": "Relational Databases Certification", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "This course teaches you the fundamentals of relational databases.", "To earn your Relational Databases Certification:", @@ -7322,6 +7332,7 @@ }, "back-end-development-and-apis-v9": { "title": "Back End Development and APIs Certification", + "note": "This certification is currently in development and will be available soon.", "intro": [ "This course teaches you the fundamentals of back end development and APIs.", "To earn your Back End Development and APIs Certification:", @@ -7438,11 +7449,17 @@ }, "full-stack-developer-v9": { "title": "Certified Full Stack Developer Curriculum", + "note": "If you were previously working through our full stack curriculum, don't worry - you're progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.", "intro": [ - "This course provides a comprehensive pathway to becoming a Certified Full Stack Developer, covering all the essential technologies required to build modern, scalable web applications from start to finish.", - "Through a blend of interactive lessons, coding exercises, and real-world projects, you will master both frontend and backend development. You'll work with HTML, CSS, and JavaScript to build responsive user interfaces, explore React and TypeScript for advanced web applications, and learn to manage data with relational databases - and on the backend, you'll use Git, Npm, Node.js, and Python to create powerful server-side solutions.", - "By the end of this course, you'll have the practical skills and experience to confidently develop complete web applications, preparing you for a successful career as a Full Stack Developer.", - "This certification will take you a substantial amount of time and effort to complete. If you start now, you may be ready to start the remaining material and final exam when we launch it in the coming months." + "This certification represents the culmination of your full stack developer journey. It demonstrates your ability to build complete, modern web applications from start to finish.", + "To qualify for the exam, you must earn the following certifications:", + "- Responsive Web Design Certification", + "- JavaScript Certification", + "- Front End Development Libraries Certification", + "- Python Certification", + "- Relational Databases Certification", + "- Back End Development and APIs Certification", + "Pass the exam to earn your Full Stack Developer Certification." ], "chapters": { "certified-full-stack-developer-exam": "Certified Full Stack Developer Exam" @@ -7471,12 +7488,12 @@ "intro": ["Placeholder intro"], "chapters": { "es-a1-chapter-welcome-to-a1-professional-spanish": "Welcome to A1 Professional Spanish", - "es-a1-chapter-letters-and-sounds": "Letters and Sounds", + "es-a1-chapter-the-spanish-alphabet": "The Spanish Alphabet", "es-a1-chapter-greetings-and-introductions": "Greetings and Introductions" }, "modules": { "es-a1-module-introduction-and-certification-overview": "Introduction and Certification Overview", - "es-a1-module-alphabet-accents-and-punctuation": "Alphabet, Accents, and Punctuation", + "es-a1-module-alphabet-and-special-characters": "The Alphabet and Special Characters", "es-a1-module-greetings-and-farewells": "Greetings and Farewells", "es-a1-module-introducing-yourself": "Introducing Yourself", "es-a1-module-first-questions": "First Questions" @@ -7486,7 +7503,7 @@ "note": "Coming Winter 2025", "intro": ["PLACEHOLDER: Write the module intro here."] }, - "es-a1-module-alphabet-accents-and-punctuation": { + "es-a1-module-alphabet-and-special-characters": { "note": "Coming Winter 2025", "intro": ["PLACEHOLDER: Write the module intro here."] }, @@ -7536,8 +7553,8 @@ "title": "Punctuation", "intro": ["", ""] }, - "es-a1-quiz-alphabet-accent-and-punctuation-quiz": { - "title": "Alphabet, Accent and Punctuation Quiz", + "es-a1-quiz-the-alphabet": { + "title": "The Spanish Alphabet Quiz", "intro": ["", ""] }, "es-a1-warm-up-introducing-yourself-basics": { @@ -7587,6 +7604,22 @@ "es-a1-quiz-first-questions": { "title": "First Questions Quiz", "intro": ["", ""] + }, + "es-a1-learn-vowels": { + "title": "Vowels", + "intro": ["", ""] + }, + "es-a1-learn-consonants-and-special-characters": { + "title": "Consonants and Special Characters", + "intro": ["", ""] + }, + "es-a1-review-the-alphabet": { + "title": "The Spanish Alphabet Review", + "intro": ["", ""] + }, + "es-a1-practice-the-alphabet": { + "title": "The Spanish Alphabet Practice", + "intro": ["", ""] } } }, diff --git a/client/i18n/locales/italian/translations.json b/client/i18n/locales/italian/translations.json index 53b11671bd0..d35820f863e 100644 --- a/client/i18n/locales/italian/translations.json +++ b/client/i18n/locales/italian/translations.json @@ -685,6 +685,7 @@ "lab": "Lab", "review": "Review", "quiz": "Quiz", + "cert-project": "Certification Project", "exam": "Exam", "warm-up": "Warm-up", "learn": "Learn", @@ -1194,20 +1195,20 @@ } }, "title": { - "responsive-web-design": "Responsive Web Design", - "responsive-web-design-cert": "Responsive Web Design Certification", - "javascript-algorithms-and-data-structures": "Legacy JavaScript Algorithms and Data Structures", - "javascript-algorithms-and-data-structures-cert": "Legacy JavaScript Algorithms and Data Structures Certification", - "javascript-algorithms-and-data-structures-v8": "JavaScript Algorithms and Data Structures", - "javascript-algorithms-and-data-structures-v8-cert": "JavaScript Algorithms and Data Structures Certification", - "front-end-development-libraries": "Front End Development Libraries", - "front-end-development-libraries-cert": "Front End Development Libraries Certification", - "data-visualization": "Data Visualization", - "data-visualization-cert": "Data Visualization Certification", - "relational-database-v8": "Relational Database", - "relational-database-v8-cert": "Relational Database Certification", - "back-end-development-and-apis": "Back End Development and APIs", - "back-end-development-and-apis-cert": "Back End Development and APIs Certification", + "responsive-web-design": "Legacy Responsive Web Design V8", + "responsive-web-design-cert": "Legacy Responsive Web Design V8 Certification", + "javascript-algorithms-and-data-structures": "Legacy JavaScript Algorithms and Data Structures V7", + "javascript-algorithms-and-data-structures-cert": "Legacy JavaScript Algorithms and Data Structures V7 Certification", + "javascript-algorithms-and-data-structures-v8": "Legacy JavaScript Algorithms and Data Structures V8", + "javascript-algorithms-and-data-structures-v8-cert": "Legacy JavaScript Algorithms and Data Structures V8 Certification", + "front-end-development-libraries": "Front End Development Libraries V8", + "front-end-development-libraries-cert": "Front End Development Libraries V8 Certification", + "data-visualization": "Data Visualization V8", + "data-visualization-cert": "Data Visualization V8 Certification", + "relational-database-v8": "Relational Database V8", + "relational-database-v8-cert": "Relational Database V8 Certification", + "back-end-development-and-apis": "Back End Development and APIs V8", + "back-end-development-and-apis-cert": "Back End Development and APIs V8 Certification", "quality-assurance-v7": "Quality Assurance", "quality-assurance-v7-cert": "Quality Assurance Certification", "scientific-computing-with-python-v7": "Scientific Computing with Python", @@ -1353,6 +1354,26 @@ "two-questions": "Congratulazioni per essere arrivato fin qui. Prima di iniziare l'esame, per favore rispondi a queste due brevi domande." } }, + "speaking-modal": { + "heading": "Speaking Practice", + "repeat-sentence": "Repeat aloud this sentence:", + "play": "Play", + "playing": "Playing...", + "record": "Record", + "stop": "Stop", + "incorrect-words": "Incorrect words: {{words}}.", + "misplaced-words": "Misplaced words: {{words}}.", + "correct-congratulations": "That's correct! Congratulations!", + "very-good": "Very good!", + "try-again": "Try again.", + "no-audio-available": "No audio file available.", + "no-speech-detected": "Recording stopped. No speech detected.", + "speech-recognition-not-supported": "Speech recognition not supported in this browser.", + "recording-speak-now": "Recording. Speak now.", + "recording-stopped-processing": "Recording stopped. Processing...", + "microphone-access-error": "Error: Could not access microphone.", + "speaking-button": "Practice speaking" + }, "curriculum": { "catalog": { "title": "Explore our Catalog", diff --git a/client/i18n/locales/japanese/intro.json b/client/i18n/locales/japanese/intro.json index 5179d30fb77..a2c67938395 100644 --- a/client/i18n/locales/japanese/intro.json +++ b/client/i18n/locales/japanese/intro.json @@ -60,7 +60,7 @@ } }, "2022/responsive-web-design": { - "title": "レスポンシブウェブデザイン", + "title": "Legacy Responsive Web Design V8", "intro": [ "このレスポンシブウェブデザイン認定講座では、開発者がウェブページを実装するために使う言語について学びます。ページの内容には HTML (Hypertext Markup Language)、デザインには CSS (Cascading Style Sheets) を使用します。", "初めに、HTML と CSS の基礎を学ぶために、猫の写真アプリを作ります。その後、ペンギンの絵を作りながら CSS 変数等のモダンなテクニックを学びます。そしてクイズサイトを作りながらアクセシビリティのベストプラクティスを学びます。", @@ -217,7 +217,7 @@ } }, "javascript-algorithms-and-data-structures": { - "title": "(レガシー) JavaScript アルゴリズムとデータ構造", + "title": "Legacy JavaScript Algorithms and Data Structures V7", "intro": [ "HTML と CSS はページの内容とスタイルを制御しますが、JavaScript はそれを対話式にすることを手掛けます。JavaScript アルゴリズムとデータ構造認定講座では、変数、配列、オブジェクト、ループ、そして関数を含む JavaScript の基礎を学習します。", "いったん基礎を習得すれば、その知識を応用して文字列を扱うためのアルゴリズムを作成したり、数の階乗を計算したり、さらに国際宇宙ステーションの軌道を計算することもできます。", @@ -300,7 +300,7 @@ } }, "javascript-algorithms-and-data-structures-v8": { - "title": "JavaScript Algorithms and Data Structures", + "title": "Legacy JavaScript Algorithms and Data Structures V8", "intro": [ "Developers use HTML and CSS to control the content and styling of a page. And they use JavaScript to make that page interactive.", "In this JavaScript Algorithm and Data Structures Certification, you'll learn the JavaScript fundamentals like variables, arrays, objects, loops, functions, the DOM and more.", @@ -490,7 +490,7 @@ } }, "front-end-development-libraries": { - "title": "フロントエンド開発ライブラリ", + "title": "Front End Development Libraries V8", "intro": [ "今やあなたは HTML、CSS、そして JavaScript に精通しているので、業界内で最も一般的なフロントエンドライブラリのいくつかを学習することで技能を向上させましょう。", "フロントエンド開発ライブラリ認定講座では、Bootstrap でサイトを手軽に整える方法を学習します。Sass を利用して、CSS スタイルに論理的な処理を加えて拡張する方法についても学習します。", @@ -553,7 +553,7 @@ } }, "data-visualization": { - "title": "データ可視化", + "title": "Data Visualization V8", "intro": [ "データは至る所にありますが、形状と文脈なしではあまり意味を表しません。", "データ可視化認定講座では、D3.js ライブラリを使用して、様々な種類のデータを表すチャート、グラフ、およびマップを構築します。", @@ -588,7 +588,7 @@ } }, "relational-database": { - "title": "リレーショナルデータベース", + "title": "Relational Database V8", "intro": [ "このコースでは、VS Code、PostgreSQL、そして Linux / Unix コマンドラインを含む本格的な開発者ツールとソフトウェアを使用して、インタラクティブなチュートリアルを完了し、プロジェクトを構築します。", "これらのコースは基本的な Bash コマンドから始まります。ターミナルを使用して、ファイルシステムの移動や操作から、Bash 内でのスクリプト、幅広い高度な使用法まで、すべてを学習します。", @@ -696,7 +696,7 @@ } }, "back-end-development-and-apis": { - "title": "バックエンド開発と API", + "title": "Back End Development and APIs V8", "intro": [ "ここまでは、JavaScript をフロントエンドで使用して、ページに対話性を加えたり、アルゴリズムチャレンジを解決したり、SPA を構築したりしてきました。しかし JavaScript は、バックエンド (サーバー) でも使用でき、ウェブアプリケーション全体を構築することができます。", "現在、アプリケーションを構築する一般的な方法の一つはマイクロサービスを使用する方法です。これは、小さなモジュール式のアプリケーションを組み合わせて、より大きな全体を形成する方法です。", @@ -2087,6 +2087,12 @@ "In these lessons, you will learn about HTML fundamentals like the div element, the id and class attributes, the HTML boilerplate, HTML entities, and more." ] }, + "workshop-bookstore-page": { + "title": "Build a Bookstore Page", + "intro": [ + "In this workshop, you will practice working with classes, ids and the div element by building a bookstore page." + ] + }, "lecture-understanding-how-html-affects-seo": { "title": "Understanding How HTML Affects SEO", "intro": [ @@ -4691,7 +4697,6 @@ "workshop-discount-calculator": { "title": "Build a Discount Calculator", "intro": [ - "Build a Discount Calculator", "In this workshop you will build a flexible discount pricing calculator through abstract base classes, allowing multiple discount algorithms to be applied interchangeably without modifying the core logic." ] }, @@ -4815,8 +4820,10 @@ ] }, "workshop-shortest-path-algorithm": { - "title": "Build a Shortest Path Algorithm", - "intro": [""] + "title": "Implement the Shortest Path Algorithm", + "intro": [ + "In this workshop you will implement the shortest path algorithm to find the shortest path between two nodes in a graph." + ] }, "lab-adjacency-list-to-matrix-converter": { "title": "Build an Adjacency List to Matrix Converter", @@ -6289,6 +6296,7 @@ }, "front-end-development-libraries-v9": { "title": "Front End Development Libraries Certification", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "This course teaches you the libraries that developers use to build webpages: React, TypeScript, and more.", "To earn your Front End Development Libraries Certification:", @@ -6630,6 +6638,7 @@ }, "python-v9": { "title": "Python Certification", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "This course teaches you the fundamentals of Python programming.", "To earn your Python Certification:", @@ -7088,6 +7097,7 @@ }, "relational-databases-v9": { "title": "Relational Databases Certification", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "This course teaches you the fundamentals of relational databases.", "To earn your Relational Databases Certification:", @@ -7322,6 +7332,7 @@ }, "back-end-development-and-apis-v9": { "title": "Back End Development and APIs Certification", + "note": "This certification is currently in development and will be available soon.", "intro": [ "This course teaches you the fundamentals of back end development and APIs.", "To earn your Back End Development and APIs Certification:", @@ -7438,11 +7449,17 @@ }, "full-stack-developer-v9": { "title": "Certified Full Stack Developer Curriculum", + "note": "If you were previously working through our full stack curriculum, don't worry - you're progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.", "intro": [ - "This course provides a comprehensive pathway to becoming a Certified Full Stack Developer, covering all the essential technologies required to build modern, scalable web applications from start to finish.", - "Through a blend of interactive lessons, coding exercises, and real-world projects, you will master both frontend and backend development. You'll work with HTML, CSS, and JavaScript to build responsive user interfaces, explore React and TypeScript for advanced web applications, and learn to manage data with relational databases - and on the backend, you'll use Git, Npm, Node.js, and Python to create powerful server-side solutions.", - "By the end of this course, you'll have the practical skills and experience to confidently develop complete web applications, preparing you for a successful career as a Full Stack Developer.", - "This certification will take you a substantial amount of time and effort to complete. If you start now, you may be ready to start the remaining material and final exam when we launch it in the coming months." + "This certification represents the culmination of your full stack developer journey. It demonstrates your ability to build complete, modern web applications from start to finish.", + "To qualify for the exam, you must earn the following certifications:", + "- Responsive Web Design Certification", + "- JavaScript Certification", + "- Front End Development Libraries Certification", + "- Python Certification", + "- Relational Databases Certification", + "- Back End Development and APIs Certification", + "Pass the exam to earn your Full Stack Developer Certification." ], "chapters": { "certified-full-stack-developer-exam": "Certified Full Stack Developer Exam" @@ -7471,12 +7488,12 @@ "intro": ["Placeholder intro"], "chapters": { "es-a1-chapter-welcome-to-a1-professional-spanish": "Welcome to A1 Professional Spanish", - "es-a1-chapter-letters-and-sounds": "Letters and Sounds", + "es-a1-chapter-the-spanish-alphabet": "The Spanish Alphabet", "es-a1-chapter-greetings-and-introductions": "Greetings and Introductions" }, "modules": { "es-a1-module-introduction-and-certification-overview": "Introduction and Certification Overview", - "es-a1-module-alphabet-accents-and-punctuation": "Alphabet, Accents, and Punctuation", + "es-a1-module-alphabet-and-special-characters": "The Alphabet and Special Characters", "es-a1-module-greetings-and-farewells": "Greetings and Farewells", "es-a1-module-introducing-yourself": "Introducing Yourself", "es-a1-module-first-questions": "First Questions" @@ -7486,7 +7503,7 @@ "note": "Coming Winter 2025", "intro": ["PLACEHOLDER: Write the module intro here."] }, - "es-a1-module-alphabet-accents-and-punctuation": { + "es-a1-module-alphabet-and-special-characters": { "note": "Coming Winter 2025", "intro": ["PLACEHOLDER: Write the module intro here."] }, @@ -7536,8 +7553,8 @@ "title": "Punctuation", "intro": ["", ""] }, - "es-a1-quiz-alphabet-accent-and-punctuation-quiz": { - "title": "Alphabet, Accent and Punctuation Quiz", + "es-a1-quiz-the-alphabet": { + "title": "The Spanish Alphabet Quiz", "intro": ["", ""] }, "es-a1-warm-up-introducing-yourself-basics": { @@ -7587,6 +7604,22 @@ "es-a1-quiz-first-questions": { "title": "First Questions Quiz", "intro": ["", ""] + }, + "es-a1-learn-vowels": { + "title": "Vowels", + "intro": ["", ""] + }, + "es-a1-learn-consonants-and-special-characters": { + "title": "Consonants and Special Characters", + "intro": ["", ""] + }, + "es-a1-review-the-alphabet": { + "title": "The Spanish Alphabet Review", + "intro": ["", ""] + }, + "es-a1-practice-the-alphabet": { + "title": "The Spanish Alphabet Practice", + "intro": ["", ""] } } }, diff --git a/client/i18n/locales/japanese/translations.json b/client/i18n/locales/japanese/translations.json index 76779f9e813..0e727ef78e7 100644 --- a/client/i18n/locales/japanese/translations.json +++ b/client/i18n/locales/japanese/translations.json @@ -685,6 +685,7 @@ "lab": "ラボ", "review": "復習", "quiz": "クイズ", + "cert-project": "Certification Project", "exam": "試験", "warm-up": "Warm-up", "learn": "Learn", @@ -1194,20 +1195,20 @@ } }, "title": { - "responsive-web-design": "レスポンシブウェブデザイン", - "responsive-web-design-cert": "レスポンシブウェブデザイン認定証", - "javascript-algorithms-and-data-structures": "旧 JavaScript アルゴリズムとデータ構造", - "javascript-algorithms-and-data-structures-cert": "旧 JavaScript アルゴリズムとデータ構造認定証", - "javascript-algorithms-and-data-structures-v8": "JavaScript アルゴリズムとデータ構造", - "javascript-algorithms-and-data-structures-v8-cert": "JavaScript アルゴリズムとデータ構造認定証", - "front-end-development-libraries": "フロントエンド開発ライブラリ", - "front-end-development-libraries-cert": "フロントエンド開発ライブラリ認定証", - "data-visualization": "データ可視化", - "data-visualization-cert": "データ可視化認定証", - "relational-database-v8": "リレーショナルデータベース", - "relational-database-v8-cert": "リレーショナルデータベース認定証", - "back-end-development-and-apis": "バックエンド開発と API", - "back-end-development-and-apis-cert": "バックエンド開発と API 認定証", + "responsive-web-design": "Legacy Responsive Web Design V8", + "responsive-web-design-cert": "Legacy Responsive Web Design V8 Certification", + "javascript-algorithms-and-data-structures": "Legacy JavaScript Algorithms and Data Structures V7", + "javascript-algorithms-and-data-structures-cert": "Legacy JavaScript Algorithms and Data Structures V7 Certification", + "javascript-algorithms-and-data-structures-v8": "Legacy JavaScript Algorithms and Data Structures V8", + "javascript-algorithms-and-data-structures-v8-cert": "Legacy JavaScript Algorithms and Data Structures V8 Certification", + "front-end-development-libraries": "Front End Development Libraries V8", + "front-end-development-libraries-cert": "Front End Development Libraries V8 Certification", + "data-visualization": "Data Visualization V8", + "data-visualization-cert": "Data Visualization V8 Certification", + "relational-database-v8": "Relational Database V8", + "relational-database-v8-cert": "Relational Database V8 Certification", + "back-end-development-and-apis": "Back End Development and APIs V8", + "back-end-development-and-apis-cert": "Back End Development and APIs V8 Certification", "quality-assurance-v7": "品質保証", "quality-assurance-v7-cert": "品質保証認定証", "scientific-computing-with-python-v7": "Python を用いた科学計算", @@ -1353,6 +1354,26 @@ "two-questions": "ここまでのコースの完了、おめでとうございます。試験を始める前に、こちらのアンケートにご協力ください。(2 問)" } }, + "speaking-modal": { + "heading": "Speaking Practice", + "repeat-sentence": "Repeat aloud this sentence:", + "play": "Play", + "playing": "Playing...", + "record": "Record", + "stop": "Stop", + "incorrect-words": "Incorrect words: {{words}}.", + "misplaced-words": "Misplaced words: {{words}}.", + "correct-congratulations": "That's correct! Congratulations!", + "very-good": "Very good!", + "try-again": "Try again.", + "no-audio-available": "No audio file available.", + "no-speech-detected": "Recording stopped. No speech detected.", + "speech-recognition-not-supported": "Speech recognition not supported in this browser.", + "recording-speak-now": "Recording. Speak now.", + "recording-stopped-processing": "Recording stopped. Processing...", + "microphone-access-error": "Error: Could not access microphone.", + "speaking-button": "Practice speaking" + }, "curriculum": { "catalog": { "title": "Explore our Catalog", diff --git a/client/i18n/locales/korean/intro.json b/client/i18n/locales/korean/intro.json index bab21a7890d..1f083a14220 100644 --- a/client/i18n/locales/korean/intro.json +++ b/client/i18n/locales/korean/intro.json @@ -60,7 +60,7 @@ } }, "2022/responsive-web-design": { - "title": "Responsive Web Design", + "title": "Legacy Responsive Web Design V8", "intro": [ "In this Responsive Web Design Certification, you'll learn the languages that developers use to build webpages: HTML (Hypertext Markup Language) for content, and CSS (Cascading Style Sheets) for design.", "First, you'll build a cat photo app to learn the basics of HTML and CSS. Later, you'll learn modern techniques like CSS variables by building a penguin, and best practices for accessibility by building a quiz site.", @@ -217,7 +217,7 @@ } }, "javascript-algorithms-and-data-structures": { - "title": "Legacy JavaScript Algorithms and Data Structures", + "title": "Legacy JavaScript Algorithms and Data Structures V7", "intro": [ "While HTML and CSS control the content and styling of a page, JavaScript is used to make it interactive. In the JavaScript Algorithm and Data Structures Certification, you'll learn the fundamentals of JavaScript including variables, arrays, objects, loops, and functions.", "Once you have the fundamentals down, you'll apply that knowledge by creating algorithms to manipulate strings, factorialize numbers, and even calculate the orbit of the International Space Station.", @@ -300,7 +300,7 @@ } }, "javascript-algorithms-and-data-structures-v8": { - "title": "JavaScript Algorithms and Data Structures", + "title": "Legacy JavaScript Algorithms and Data Structures V8", "intro": [ "Developers use HTML and CSS to control the content and styling of a page. And they use JavaScript to make that page interactive.", "In this JavaScript Algorithm and Data Structures Certification, you'll learn the JavaScript fundamentals like variables, arrays, objects, loops, functions, the DOM and more.", @@ -490,7 +490,7 @@ } }, "front-end-development-libraries": { - "title": "Front End Development Libraries", + "title": "Front End Development Libraries V8", "intro": [ "Now that you're familiar with HTML, CSS, and JavaScript, level up your skills by learning some of the most popular front end libraries in the industry.", "In the Front End Development Libraries Certification, you'll learn how to style your site quickly with Bootstrap. You'll also learn how to add logic to your CSS styles and extend them with Sass.", @@ -553,7 +553,7 @@ } }, "data-visualization": { - "title": "Data Visualization", + "title": "Data Visualization V8", "intro": [ "Data is all around us, but it doesn't mean much without shape or context.", "In the Data Visualization Certification, you'll build charts, graphs, and maps to present different types of data with the D3.js library.", @@ -588,7 +588,7 @@ } }, "relational-database": { - "title": "Relational Database", + "title": "Relational Database V8", "intro": [ "For these courses, you will use real developer tools and software including VS Code, PostgreSQL, and the Linux / Unix command line to complete interactive tutorials and build projects.", "These courses start off with basic Bash commands. Using the terminal, you will learn everything from navigating and manipulating a file system, scripting in Bash, all the way to advanced usage.", @@ -696,7 +696,7 @@ } }, "back-end-development-and-apis": { - "title": "Back End Development and APIs", + "title": "Back End Development and APIs V8", "intro": [ "Until this point, you've only used JavaScript on the front end to add interactivity to a page, solve algorithm challenges, or build an SPA. But JavaScript can also be used on the back end, or server, to build entire web applications.", "Today, one of the popular ways to build applications is through microservices, which are small, modular applications that work together to form a larger whole.", @@ -2087,6 +2087,12 @@ "In these lessons, you will learn about HTML fundamentals like the div element, the id and class attributes, the HTML boilerplate, HTML entities, and more." ] }, + "workshop-bookstore-page": { + "title": "Build a Bookstore Page", + "intro": [ + "In this workshop, you will practice working with classes, ids and the div element by building a bookstore page." + ] + }, "lecture-understanding-how-html-affects-seo": { "title": "Understanding How HTML Affects SEO", "intro": [ @@ -4691,7 +4697,6 @@ "workshop-discount-calculator": { "title": "Build a Discount Calculator", "intro": [ - "Build a Discount Calculator", "In this workshop you will build a flexible discount pricing calculator through abstract base classes, allowing multiple discount algorithms to be applied interchangeably without modifying the core logic." ] }, @@ -4815,8 +4820,10 @@ ] }, "workshop-shortest-path-algorithm": { - "title": "Build a Shortest Path Algorithm", - "intro": [""] + "title": "Implement the Shortest Path Algorithm", + "intro": [ + "In this workshop you will implement the shortest path algorithm to find the shortest path between two nodes in a graph." + ] }, "lab-adjacency-list-to-matrix-converter": { "title": "Build an Adjacency List to Matrix Converter", @@ -6289,6 +6296,7 @@ }, "front-end-development-libraries-v9": { "title": "Front End Development Libraries Certification", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "This course teaches you the libraries that developers use to build webpages: React, TypeScript, and more.", "To earn your Front End Development Libraries Certification:", @@ -6630,6 +6638,7 @@ }, "python-v9": { "title": "Python Certification", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "This course teaches you the fundamentals of Python programming.", "To earn your Python Certification:", @@ -7088,6 +7097,7 @@ }, "relational-databases-v9": { "title": "Relational Databases Certification", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "This course teaches you the fundamentals of relational databases.", "To earn your Relational Databases Certification:", @@ -7322,6 +7332,7 @@ }, "back-end-development-and-apis-v9": { "title": "Back End Development and APIs Certification", + "note": "This certification is currently in development and will be available soon.", "intro": [ "This course teaches you the fundamentals of back end development and APIs.", "To earn your Back End Development and APIs Certification:", @@ -7438,11 +7449,17 @@ }, "full-stack-developer-v9": { "title": "Certified Full Stack Developer Curriculum", + "note": "If you were previously working through our full stack curriculum, don't worry - you're progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.", "intro": [ - "This course provides a comprehensive pathway to becoming a Certified Full Stack Developer, covering all the essential technologies required to build modern, scalable web applications from start to finish.", - "Through a blend of interactive lessons, coding exercises, and real-world projects, you will master both frontend and backend development. You'll work with HTML, CSS, and JavaScript to build responsive user interfaces, explore React and TypeScript for advanced web applications, and learn to manage data with relational databases - and on the backend, you'll use Git, Npm, Node.js, and Python to create powerful server-side solutions.", - "By the end of this course, you'll have the practical skills and experience to confidently develop complete web applications, preparing you for a successful career as a Full Stack Developer.", - "This certification will take you a substantial amount of time and effort to complete. If you start now, you may be ready to start the remaining material and final exam when we launch it in the coming months." + "This certification represents the culmination of your full stack developer journey. It demonstrates your ability to build complete, modern web applications from start to finish.", + "To qualify for the exam, you must earn the following certifications:", + "- Responsive Web Design Certification", + "- JavaScript Certification", + "- Front End Development Libraries Certification", + "- Python Certification", + "- Relational Databases Certification", + "- Back End Development and APIs Certification", + "Pass the exam to earn your Full Stack Developer Certification." ], "chapters": { "certified-full-stack-developer-exam": "Certified Full Stack Developer Exam" @@ -7471,12 +7488,12 @@ "intro": ["Placeholder intro"], "chapters": { "es-a1-chapter-welcome-to-a1-professional-spanish": "Welcome to A1 Professional Spanish", - "es-a1-chapter-letters-and-sounds": "Letters and Sounds", + "es-a1-chapter-the-spanish-alphabet": "The Spanish Alphabet", "es-a1-chapter-greetings-and-introductions": "Greetings and Introductions" }, "modules": { "es-a1-module-introduction-and-certification-overview": "Introduction and Certification Overview", - "es-a1-module-alphabet-accents-and-punctuation": "Alphabet, Accents, and Punctuation", + "es-a1-module-alphabet-and-special-characters": "The Alphabet and Special Characters", "es-a1-module-greetings-and-farewells": "Greetings and Farewells", "es-a1-module-introducing-yourself": "Introducing Yourself", "es-a1-module-first-questions": "First Questions" @@ -7486,7 +7503,7 @@ "note": "Coming Winter 2025", "intro": ["PLACEHOLDER: Write the module intro here."] }, - "es-a1-module-alphabet-accents-and-punctuation": { + "es-a1-module-alphabet-and-special-characters": { "note": "Coming Winter 2025", "intro": ["PLACEHOLDER: Write the module intro here."] }, @@ -7536,8 +7553,8 @@ "title": "Punctuation", "intro": ["", ""] }, - "es-a1-quiz-alphabet-accent-and-punctuation-quiz": { - "title": "Alphabet, Accent and Punctuation Quiz", + "es-a1-quiz-the-alphabet": { + "title": "The Spanish Alphabet Quiz", "intro": ["", ""] }, "es-a1-warm-up-introducing-yourself-basics": { @@ -7587,6 +7604,22 @@ "es-a1-quiz-first-questions": { "title": "First Questions Quiz", "intro": ["", ""] + }, + "es-a1-learn-vowels": { + "title": "Vowels", + "intro": ["", ""] + }, + "es-a1-learn-consonants-and-special-characters": { + "title": "Consonants and Special Characters", + "intro": ["", ""] + }, + "es-a1-review-the-alphabet": { + "title": "The Spanish Alphabet Review", + "intro": ["", ""] + }, + "es-a1-practice-the-alphabet": { + "title": "The Spanish Alphabet Practice", + "intro": ["", ""] } } }, diff --git a/client/i18n/locales/korean/translations.json b/client/i18n/locales/korean/translations.json index d0473bb08bc..d02b1e796a1 100644 --- a/client/i18n/locales/korean/translations.json +++ b/client/i18n/locales/korean/translations.json @@ -685,6 +685,7 @@ "lab": "Lab", "review": "Review", "quiz": "Quiz", + "cert-project": "Certification Project", "exam": "Exam", "warm-up": "Warm-up", "learn": "Learn", @@ -1194,20 +1195,20 @@ } }, "title": { - "responsive-web-design": "Responsive Web Design", - "responsive-web-design-cert": "Responsive Web Design Certification", - "javascript-algorithms-and-data-structures": "Legacy JavaScript Algorithms and Data Structures", - "javascript-algorithms-and-data-structures-cert": "Legacy JavaScript Algorithms and Data Structures Certification", - "javascript-algorithms-and-data-structures-v8": "JavaScript Algorithms and Data Structures", - "javascript-algorithms-and-data-structures-v8-cert": "JavaScript Algorithms and Data Structures Certification", - "front-end-development-libraries": "Front End Development Libraries", - "front-end-development-libraries-cert": "Front End Development Libraries Certification", - "data-visualization": "Data Visualization", - "data-visualization-cert": "Data Visualization Certification", - "relational-database-v8": "Relational Database", - "relational-database-v8-cert": "Relational Database Certification", - "back-end-development-and-apis": "Back End Development and APIs", - "back-end-development-and-apis-cert": "Back End Development and APIs Certification", + "responsive-web-design": "Legacy Responsive Web Design V8", + "responsive-web-design-cert": "Legacy Responsive Web Design V8 Certification", + "javascript-algorithms-and-data-structures": "Legacy JavaScript Algorithms and Data Structures V7", + "javascript-algorithms-and-data-structures-cert": "Legacy JavaScript Algorithms and Data Structures V7 Certification", + "javascript-algorithms-and-data-structures-v8": "Legacy JavaScript Algorithms and Data Structures V8", + "javascript-algorithms-and-data-structures-v8-cert": "Legacy JavaScript Algorithms and Data Structures V8 Certification", + "front-end-development-libraries": "Front End Development Libraries V8", + "front-end-development-libraries-cert": "Front End Development Libraries V8 Certification", + "data-visualization": "Data Visualization V8", + "data-visualization-cert": "Data Visualization V8 Certification", + "relational-database-v8": "Relational Database V8", + "relational-database-v8-cert": "Relational Database V8 Certification", + "back-end-development-and-apis": "Back End Development and APIs V8", + "back-end-development-and-apis-cert": "Back End Development and APIs V8 Certification", "quality-assurance-v7": "Quality Assurance", "quality-assurance-v7-cert": "Quality Assurance Certification", "scientific-computing-with-python-v7": "Scientific Computing with Python", @@ -1353,6 +1354,26 @@ "two-questions": "Congratulations on getting this far. Before you can start the exam, please answer these two short survey questions." } }, + "speaking-modal": { + "heading": "Speaking Practice", + "repeat-sentence": "Repeat aloud this sentence:", + "play": "Play", + "playing": "Playing...", + "record": "Record", + "stop": "Stop", + "incorrect-words": "Incorrect words: {{words}}.", + "misplaced-words": "Misplaced words: {{words}}.", + "correct-congratulations": "That's correct! Congratulations!", + "very-good": "Very good!", + "try-again": "Try again.", + "no-audio-available": "No audio file available.", + "no-speech-detected": "Recording stopped. No speech detected.", + "speech-recognition-not-supported": "Speech recognition not supported in this browser.", + "recording-speak-now": "Recording. Speak now.", + "recording-stopped-processing": "Recording stopped. Processing...", + "microphone-access-error": "Error: Could not access microphone.", + "speaking-button": "Practice speaking" + }, "curriculum": { "catalog": { "title": "Explore our Catalog", diff --git a/client/i18n/locales/portuguese/intro.json b/client/i18n/locales/portuguese/intro.json index 9e31001e26e..3fca6cebf48 100644 --- a/client/i18n/locales/portuguese/intro.json +++ b/client/i18n/locales/portuguese/intro.json @@ -60,7 +60,7 @@ } }, "2022/responsive-web-design": { - "title": "Design responsivo para a web", + "title": "Legacy Responsive Web Design V8", "intro": [ "Nessa certificação de Design responsivo para a web, você aprenderá as linguagens que os desenvolvedores usam para construir sites: HTML (Linguagem de Marcação de Hipertexto) para o conteúdo e CSS (Folha de Estilo em Cascata) para o design.", "Primeiro, você vai construir um aplicativo de fotos de gato para aprender o básico de HTML e CSS. Mais tarde, você aprenderá técnicas modernas como variáveis CSS construindo um pinguim, e melhores práticas de acessibilidade criando um site de questionário.", @@ -217,7 +217,7 @@ } }, "javascript-algorithms-and-data-structures": { - "title": "Algoritmos e estrutura de dados em JavaScript legado", + "title": "Legacy JavaScript Algorithms and Data Structures V7", "intro": [ "Enquanto o HTML e o CSS controlam o conteúdo e o estilo de uma página, o JavaScript é usado para torná-lo interativo. Na certificação de Algoritmos e Estruturas de Dados em JavaScript, você aprenderá os fundamentos do JavaScript, incluindo variáveis, arrays, objetos, laços e funções.", "Assim que souber os fundamentos abaixo, você aplicará esse conhecimento, criando algoritmos para manipular strings, fatorar números e até mesmo calcular a órbita da Estação Espacial Internacional.", @@ -300,7 +300,7 @@ } }, "javascript-algorithms-and-data-structures-v8": { - "title": "Algoritmos em JavaScript e Estruturas de Dados", + "title": "Legacy JavaScript Algorithms and Data Structures V8", "intro": [ "Desenvolvedores usam HTML e CSS para controlar os componentes e estilizar a página. Eles também usam o JavaScript para tornar essa página interativa.", "Neste certificado de Algoritmos e estruturas de dados em JavaScript, você aprenderá os fundamentos de JavaScript como variáveis, arrays, objetos, laços, funções, o DOM e mais.", @@ -490,7 +490,7 @@ } }, "front-end-development-libraries": { - "title": "Bibliotecas de desenvolvimento em front-end", + "title": "Front End Development Libraries V8", "intro": [ "Agora que você está familiarizado com HTML, CSS e JavaScript, melhore suas habilidades aprendendo algumas das bibliotecas front-end mais populares do setor.", "Na certificação de bibliotecas de desenvolvimento em front-end, você aprenderá a estilizar seu site rapidamente com Bootstrap. Você também aprenderá a adicionar a lógica aos seus estilos CSS e a ampliá-los com Sass.", @@ -553,7 +553,7 @@ } }, "data-visualization": { - "title": "Visualização de dados", + "title": "Data Visualization V8", "intro": [ "Os dados estão ao nosso redor, mas isso não quer dizer muita coisa se eles não tiverem forma ou contexto.", "Na certificação de visualização de dados, você criará tabelas, gráficos e mapas para apresentar diferentes tipos de dados com a biblioteca D3.js.", @@ -588,7 +588,7 @@ } }, "relational-database": { - "title": "Bancos de dados relacionais", + "title": "Relational Database V8", "intro": [ "Para estes cursos, você usará ferramentas e software reais de desenvolvedor, incluindo o VS Code, PostgreSQL e a linha de comando do Linux/Unix para completar tutoriais interativos e criar projetos.", "Estes cursos começam com comandos básicos do Bash. Usando o terminal, você aprenderá tudo, de navegar e manipular um sistema de arquivos e fazer scripts no Bash, até usos mais avançados.", @@ -696,7 +696,7 @@ } }, "back-end-development-and-apis": { - "title": "APIs e desenvolvimento de back-end", + "title": "Back End Development and APIs V8", "intro": [ "Até esse ponto, você usou JavaScript apenas no front-end para adicionar interatividade a uma página, resolver desafios de algoritmos ou construir uma SPA. Mas o JavaScript também pode ser usado no back-end, ou servidor, para construir aplicações web inteiras.", "Hoje em dia, uma das formas populares de se criar aplicações é através do uso de microsserviços, que são pequenas aplicações modulares que trabalham em conjunto para formar uma aplicação maior inteira.", @@ -2085,6 +2085,12 @@ "Nestes cursos, você aprenderá sobre fundamentos do HTML, como o elemento div, os atributos id e class, o boilerplate HTML, entidades HTML, e outros conceitos." ] }, + "workshop-bookstore-page": { + "title": "Build a Bookstore Page", + "intro": [ + "In this workshop, you will practice working with classes, ids and the div element by building a bookstore page." + ] + }, "lecture-understanding-how-html-affects-seo": { "title": "Entendendo Como o HTML Afeta o SEO", "intro": [ @@ -3099,9 +3105,9 @@ ] }, "workshop-string-formatter": { - "title": "Build a String Formatter", + "title": "Criar um formatador de strings", "intro": [ - "In this workshop, you will practice working with various string methods including the trim(), toUpperCase() and toLowerCase() methods." + "Neste workshop, você praticará trabalhar com vários métodos de strings, incluindo os métodos trim(), toUpperCase() e toLowerCase()." ] }, "lecture-working-with-string-modification-methods": { @@ -4731,9 +4737,8 @@ "intro": ["Aprenda sobre Compreender Abstração nestas lições."] }, "workshop-discount-calculator": { - "title": "Build a Discount Calculator", + "title": "Criar uma calculadora de descontos", "intro": [ - "Build a Discount Calculator", "In this workshop you will build a flexible discount pricing calculator through abstract base classes, allowing multiple discount algorithms to be applied interchangeably without modifying the core logic." ] }, @@ -4857,8 +4862,10 @@ ] }, "workshop-shortest-path-algorithm": { - "title": "Crie um Algoritmo de Caminho mais Curto", - "intro": [""] + "title": "Implement the Shortest Path Algorithm", + "intro": [ + "In this workshop you will implement the shortest path algorithm to find the shortest path between two nodes in a graph." + ] }, "lab-adjacency-list-to-matrix-converter": { "title": "Crie um Conversor de Lista de Adjacência para Matriz", @@ -6365,6 +6372,7 @@ }, "front-end-development-libraries-v9": { "title": "Certificação de Bibliotecas de Desenvolvimento Front-End", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "Este curso ensina as bibliotecas que os desenvolvedores utilizam para criar páginas da web: React, TypeScript, e mais.", "Para conquistar sua Certificação de Bibliotecas de Desenvolvimento Front-End:", @@ -6714,6 +6722,7 @@ }, "python-v9": { "title": "Certificação em Python", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "Este curso ensina os fundamentos da programação em Python.", "Para conquistar sua Certificação em Python:", @@ -7176,6 +7185,7 @@ }, "relational-databases-v9": { "title": "Certificação de Bancos de Dados Relacionais", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "Este curso ensina os fundamentos dos bancos de dados relacionais.", "Para conquistar sua Certificação de Bancos de Dados Relacionais:", @@ -7420,6 +7430,7 @@ }, "back-end-development-and-apis-v9": { "title": "Certificação de Desenvolvimento Back-End e APIs", + "note": "This certification is currently in development and will be available soon.", "intro": [ "Este curso ensina os fundamentos do Desenvolvimento Back-End e APIs.", "Para conquistar sua Certificação de Desenvolvimento Back-End e APIs:", @@ -7536,11 +7547,17 @@ }, "full-stack-developer-v9": { "title": "Currículo de Desenvolvedor Full Stack Certificado", + "note": "If you were previously working through our full stack curriculum, don't worry - you're progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.", "intro": [ - "Este curso oferece um caminho abrangente para se tornar um Desenvolvedor Full Stack Certificado, cobrindo todas as tecnologias essenciais necessárias para desenvolver aplicações web modernas e escaláveis do início ao fim.", - "Por meio de uma combinação de lições interativas, exercícios de codificação e projetos do mundo real, você dominará o desenvolvimento frontend e backend. Você trabalhará com HTML, CSS e JavaScript para criar interfaces de usuário responsivas, explorará React e TypeScript para aplicações web avançadas e aprenderá a gerenciar dados com bancos de dados relacionais - no backend, você usará Git, Npm, Node.js e Python para criar soluções poderosas do lado do servidor.", - "Ao final deste curso, você terá as habilidades práticas e a experiência para desenvolver aplicações web completas com confiança, preparando-se para uma carreira de sucesso como Desenvolvedor Full Stack.", - "Esta certificação vai exigir uma quantidade substancial de tempo e esforço para ser concluída. Se você começar agora, poderá estar pronto para iniciar o material restante e o exame final quando o lançarmos nos próximos meses." + "This certification represents the culmination of your full stack developer journey. It demonstrates your ability to build complete, modern web applications from start to finish.", + "To qualify for the exam, you must earn the following certifications:", + "- Responsive Web Design Certification", + "- JavaScript Certification", + "- Front End Development Libraries Certification", + "- Python Certification", + "- Relational Databases Certification", + "- Back End Development and APIs Certification", + "Pass the exam to earn your Full Stack Developer Certification." ], "chapters": { "certified-full-stack-developer-exam": "Exame de Desenvolvedor Full Stack Certificado" @@ -7571,12 +7588,12 @@ "intro": ["Introdução de Espaço Reservado"], "chapters": { "es-a1-chapter-welcome-to-a1-professional-spanish": "Bem-vindo ao A1 Espanhol Profissional", - "es-a1-chapter-letters-and-sounds": "Letras e Sons", + "es-a1-chapter-the-spanish-alphabet": "The Spanish Alphabet", "es-a1-chapter-greetings-and-introductions": "Saudações e Apresentações" }, "modules": { "es-a1-module-introduction-and-certification-overview": "Introdução e Visão Geral da Certificação", - "es-a1-module-alphabet-accents-and-punctuation": "Alfabeto, Acentos e Pontuação", + "es-a1-module-alphabet-and-special-characters": "The Alphabet and Special Characters", "es-a1-module-greetings-and-farewells": "Saudações e Despedidas", "es-a1-module-introducing-yourself": "Apresentando-se", "es-a1-module-first-questions": "Primeiras Perguntas" @@ -7586,9 +7603,9 @@ "note": "Inverno de 2025", "intro": ["PLACEHOLDER: Escreva a introdução do módulo aqui."] }, - "es-a1-module-alphabet-accents-and-punctuation": { - "note": "Inverno de 2025", - "intro": ["PLACEHOLDER: Escreva a introdução do módulo aqui."] + "es-a1-module-alphabet-and-special-characters": { + "note": "Coming Winter 2025", + "intro": ["PLACEHOLDER: Write the module intro here."] }, "es-a1-module-greetings-and-farewells": { "note": "Inverno de 2025", @@ -7636,8 +7653,8 @@ "title": "Pontuação", "intro": ["", ""] }, - "es-a1-quiz-alphabet-accent-and-punctuation-quiz": { - "title": "Questionário de Alfabeto, Acentos e Pontuação", + "es-a1-quiz-the-alphabet": { + "title": "The Spanish Alphabet Quiz", "intro": ["", ""] }, "es-a1-warm-up-introducing-yourself-basics": { @@ -7687,6 +7704,22 @@ "es-a1-quiz-first-questions": { "title": "Quiz de Primeiras Perguntas", "intro": ["", ""] + }, + "es-a1-learn-vowels": { + "title": "Vowels", + "intro": ["", ""] + }, + "es-a1-learn-consonants-and-special-characters": { + "title": "Consonants and Special Characters", + "intro": ["", ""] + }, + "es-a1-review-the-alphabet": { + "title": "The Spanish Alphabet Review", + "intro": ["", ""] + }, + "es-a1-practice-the-alphabet": { + "title": "The Spanish Alphabet Practice", + "intro": ["", ""] } } }, diff --git a/client/i18n/locales/portuguese/translations.json b/client/i18n/locales/portuguese/translations.json index d4c77d4a70c..10646303c4a 100644 --- a/client/i18n/locales/portuguese/translations.json +++ b/client/i18n/locales/portuguese/translations.json @@ -685,6 +685,7 @@ "lab": "Laboratório", "review": "Revisão", "quiz": "Questionário", + "cert-project": "Certification Project", "exam": "Teste", "warm-up": "Aquecimento", "learn": "Aprender", @@ -1194,20 +1195,20 @@ } }, "title": { - "responsive-web-design": "Design responsivo para a web", - "responsive-web-design-cert": "Certificação de design responsivo para a web", - "javascript-algorithms-and-data-structures": "Algoritmos em JavaScript e Estrutura de Dados edição antiga", - "javascript-algorithms-and-data-structures-cert": "Cerificação Algoritmos em JavaScript e Estrutura de Dados edição antiga", - "javascript-algorithms-and-data-structures-v8": "Algoritmos em JavaScript e Estruturas de Dados", - "javascript-algorithms-and-data-structures-v8-cert": "Certificação de algoritmos em JavaScript e estruturas de dados", - "front-end-development-libraries": "Bibliotecas de desenvolvimento front-end", - "front-end-development-libraries-cert": "Certificação de bibliotecas de desenvolvimento front-end", - "data-visualization": "Visualização de dados", - "data-visualization-cert": "Certificação de visualização de dados", - "relational-database-v8": "Bancos de dados relacionais", - "relational-database-v8-cert": "Certificação de bancos de dados relacionais", - "back-end-development-and-apis": "Desenvolvimento back-end e APIs", - "back-end-development-and-apis-cert": "Certificação de desenvolvimento back-end e APIs", + "responsive-web-design": "Legacy Responsive Web Design V8", + "responsive-web-design-cert": "Legacy Responsive Web Design V8 Certification", + "javascript-algorithms-and-data-structures": "Legacy JavaScript Algorithms and Data Structures V7", + "javascript-algorithms-and-data-structures-cert": "Legacy JavaScript Algorithms and Data Structures V7 Certification", + "javascript-algorithms-and-data-structures-v8": "Legacy JavaScript Algorithms and Data Structures V8", + "javascript-algorithms-and-data-structures-v8-cert": "Legacy JavaScript Algorithms and Data Structures V8 Certification", + "front-end-development-libraries": "Front End Development Libraries V8", + "front-end-development-libraries-cert": "Front End Development Libraries V8 Certification", + "data-visualization": "Data Visualization V8", + "data-visualization-cert": "Data Visualization V8 Certification", + "relational-database-v8": "Relational Database V8", + "relational-database-v8-cert": "Relational Database V8 Certification", + "back-end-development-and-apis": "Back End Development and APIs V8", + "back-end-development-and-apis-cert": "Back End Development and APIs V8 Certification", "quality-assurance-v7": "Garantia de qualidade", "quality-assurance-v7-cert": "Certificação de garantia de qualidade", "scientific-computing-with-python-v7": "Computação científica com Python", @@ -1353,6 +1354,26 @@ "two-questions": "Parabéns por chegar até aqui. Antes de começar o teste, responda a estas duas breves perguntas de pesquisa." } }, + "speaking-modal": { + "heading": "Speaking Practice", + "repeat-sentence": "Repeat aloud this sentence:", + "play": "Play", + "playing": "Playing...", + "record": "Record", + "stop": "Stop", + "incorrect-words": "Incorrect words: {{words}}.", + "misplaced-words": "Misplaced words: {{words}}.", + "correct-congratulations": "That's correct! Congratulations!", + "very-good": "Very good!", + "try-again": "Try again.", + "no-audio-available": "No audio file available.", + "no-speech-detected": "Recording stopped. No speech detected.", + "speech-recognition-not-supported": "Speech recognition not supported in this browser.", + "recording-speak-now": "Recording. Speak now.", + "recording-stopped-processing": "Recording stopped. Processing...", + "microphone-access-error": "Error: Could not access microphone.", + "speaking-button": "Practice speaking" + }, "curriculum": { "catalog": { "title": "Explore nosso catálogo", diff --git a/client/i18n/locales/swahili/intro.json b/client/i18n/locales/swahili/intro.json index d51488b3d3c..32317403acc 100644 --- a/client/i18n/locales/swahili/intro.json +++ b/client/i18n/locales/swahili/intro.json @@ -60,7 +60,7 @@ } }, "2022/responsive-web-design": { - "title": "Muundo Wa Wavuti Sikivu", + "title": "Legacy Responsive Web Design V8", "intro": [ "Katika Uthibitishaji huu wa Muundo Wa Wavuti Sikivu, utajifunza lugha ambazo watengenezaji wa tovuti hutumia kutengeneza kurasa za wavuti: HTML(Hypertext Markup Language) kwa ajili ya maudhui, na CSS (Cascading Style Sheets) kwa ajili ya muundo.", "Kwanza, utaunda programu ya picha ya paka ili kujifunza misingi ya HTML na CSS. Baadaye, utajifunza mbinu za kisasa kama vile vihifadhi vya CSS kwa kujenga pengwini, na mbinu bora za ufikivu kwa kuunda tovuti ya maswali.", @@ -217,7 +217,7 @@ } }, "javascript-algorithms-and-data-structures": { - "title": "Legacy JavaScript Algorithms and Data Structures", + "title": "Legacy JavaScript Algorithms and Data Structures V7", "intro": [ "Ingawa HTML na CSS hudhibiti maudhui na mtindo wa ukurasa, JavaScript inatumika kuifanya ishirikiane. Katika Uthibitishaji wa Algorithm ya JavaScript na Miundo ya Data, utajifunza misingi ya JavaScript ikijumuisha variables, arrays, objects, loops, na functions.", "Baada ya kuelewa misingi yake, utatumia maarifa hayo kwa kuunda algoriti ili kudhibiti strings, kurekebisha nambari, na hata kukokotoa mzingo wa Kituo cha Kimataifa cha Anga cha Juu.", @@ -300,7 +300,7 @@ } }, "javascript-algorithms-and-data-structures-v8": { - "title": "JavaScript Algorithms and Data Structures", + "title": "Legacy JavaScript Algorithms and Data Structures V8", "intro": [ "Developers use HTML and CSS to control the content and styling of a page. And they use JavaScript to make that page interactive.", "In this JavaScript Algorithm and Data Structures Certification, you'll learn the JavaScript fundamentals like variables, arrays, objects, loops, functions, the DOM and more.", @@ -490,7 +490,7 @@ } }, "front-end-development-libraries": { - "title": "Front End Development Libraries", + "title": "Front End Development Libraries V8", "intro": [ "Kwa kuwa sasa unafahamu HTML, CSS na JavaScript, ongeza ujuzi wako kwa kujifunza baadhi ya maktaba maarufu za front end kwenye sekta hiyo.", "Katika cheti cha Front End Development Libraries, utajifunza jinsi ya kutengeneza tovuti yako haraka na Bootstrap. Pia utajifunza jinsi ya kuongeza mantiki kwenye mitindo yako ya CSS na kuiendeleza kwa Sass.", @@ -553,7 +553,7 @@ } }, "data-visualization": { - "title": "Data Visualization", + "title": "Data Visualization V8", "intro": [ "Data iko pande zote, lakini haimaanishi mengi bila umbo au muktadha.", "Katika Cheti cha Data Visualization, utaunda chati, grafu na ramani ili kuwasilisha aina tofauti za data kwenye maktaba ya D3.js.", @@ -588,7 +588,7 @@ } }, "relational-database": { - "title": "Relational Database", + "title": "Relational Database V8", "intro": [ "Kwa kozi hizi, utatumia zana na programu halisi za wasanidi programu ikijumuisha VS Code, PostgreSQL, na mstari wa amri wa Linux / Unix ili kukamilisha mafunzo shirikishi na kujenga miradi.", "Kozi hizi huanza na amri za kimsingi za Bash. Kwa kutumia terminal, utajifunza kila kitu kutoka kwa kusogeza na kudhibiti mfumo wa faili, na uandishi katika Bash, hadi utumiaji wa hali ya juu.", @@ -696,7 +696,7 @@ } }, "back-end-development-and-apis": { - "title": "Back End Development and APIs", + "title": "Back End Development and APIs V8", "intro": [ "Hadi kufikia hatua hii, umetumia JavaScript iliyo upande wa mbele pekee ili kuongeza mwingiliano kwenye ukurasa, kutatua changamoto za kanuni au kuunda SPA. Lakini JavaScript pia inaweza kutumika upande wa nyuma, au seva, kuunda programu nzima za wavuti.", "Leo, mojawapo ya njia maarufu za kuunda programu ni kupitia huduma ndogo, ambazo ni ndogo, programu ambazo kwa kawaida hufanya kazi pamoja ili kuunda nzima zaidi.", @@ -2087,6 +2087,12 @@ "In these lessons, you will learn about HTML fundamentals like the div element, the id and class attributes, the HTML boilerplate, HTML entities, and more." ] }, + "workshop-bookstore-page": { + "title": "Build a Bookstore Page", + "intro": [ + "In this workshop, you will practice working with classes, ids and the div element by building a bookstore page." + ] + }, "lecture-understanding-how-html-affects-seo": { "title": "Understanding How HTML Affects SEO", "intro": [ @@ -4691,7 +4697,6 @@ "workshop-discount-calculator": { "title": "Build a Discount Calculator", "intro": [ - "Build a Discount Calculator", "In this workshop you will build a flexible discount pricing calculator through abstract base classes, allowing multiple discount algorithms to be applied interchangeably without modifying the core logic." ] }, @@ -4815,8 +4820,10 @@ ] }, "workshop-shortest-path-algorithm": { - "title": "Build a Shortest Path Algorithm", - "intro": [""] + "title": "Implement the Shortest Path Algorithm", + "intro": [ + "In this workshop you will implement the shortest path algorithm to find the shortest path between two nodes in a graph." + ] }, "lab-adjacency-list-to-matrix-converter": { "title": "Build an Adjacency List to Matrix Converter", @@ -6289,6 +6296,7 @@ }, "front-end-development-libraries-v9": { "title": "Front End Development Libraries Certification", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "This course teaches you the libraries that developers use to build webpages: React, TypeScript, and more.", "To earn your Front End Development Libraries Certification:", @@ -6630,6 +6638,7 @@ }, "python-v9": { "title": "Python Certification", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "This course teaches you the fundamentals of Python programming.", "To earn your Python Certification:", @@ -7088,6 +7097,7 @@ }, "relational-databases-v9": { "title": "Relational Databases Certification", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "This course teaches you the fundamentals of relational databases.", "To earn your Relational Databases Certification:", @@ -7322,6 +7332,7 @@ }, "back-end-development-and-apis-v9": { "title": "Back End Development and APIs Certification", + "note": "This certification is currently in development and will be available soon.", "intro": [ "This course teaches you the fundamentals of back end development and APIs.", "To earn your Back End Development and APIs Certification:", @@ -7438,11 +7449,17 @@ }, "full-stack-developer-v9": { "title": "Certified Full Stack Developer Curriculum", + "note": "If you were previously working through our full stack curriculum, don't worry - you're progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.", "intro": [ - "This course provides a comprehensive pathway to becoming a Certified Full Stack Developer, covering all the essential technologies required to build modern, scalable web applications from start to finish.", - "Through a blend of interactive lessons, coding exercises, and real-world projects, you will master both frontend and backend development. You'll work with HTML, CSS, and JavaScript to build responsive user interfaces, explore React and TypeScript for advanced web applications, and learn to manage data with relational databases - and on the backend, you'll use Git, Npm, Node.js, and Python to create powerful server-side solutions.", - "By the end of this course, you'll have the practical skills and experience to confidently develop complete web applications, preparing you for a successful career as a Full Stack Developer.", - "This certification will take you a substantial amount of time and effort to complete. If you start now, you may be ready to start the remaining material and final exam when we launch it in the coming months." + "This certification represents the culmination of your full stack developer journey. It demonstrates your ability to build complete, modern web applications from start to finish.", + "To qualify for the exam, you must earn the following certifications:", + "- Responsive Web Design Certification", + "- JavaScript Certification", + "- Front End Development Libraries Certification", + "- Python Certification", + "- Relational Databases Certification", + "- Back End Development and APIs Certification", + "Pass the exam to earn your Full Stack Developer Certification." ], "chapters": { "certified-full-stack-developer-exam": "Certified Full Stack Developer Exam" @@ -7471,12 +7488,12 @@ "intro": ["Placeholder intro"], "chapters": { "es-a1-chapter-welcome-to-a1-professional-spanish": "Welcome to A1 Professional Spanish", - "es-a1-chapter-letters-and-sounds": "Letters and Sounds", + "es-a1-chapter-the-spanish-alphabet": "The Spanish Alphabet", "es-a1-chapter-greetings-and-introductions": "Greetings and Introductions" }, "modules": { "es-a1-module-introduction-and-certification-overview": "Introduction and Certification Overview", - "es-a1-module-alphabet-accents-and-punctuation": "Alphabet, Accents, and Punctuation", + "es-a1-module-alphabet-and-special-characters": "The Alphabet and Special Characters", "es-a1-module-greetings-and-farewells": "Greetings and Farewells", "es-a1-module-introducing-yourself": "Introducing Yourself", "es-a1-module-first-questions": "First Questions" @@ -7486,7 +7503,7 @@ "note": "Coming Winter 2025", "intro": ["PLACEHOLDER: Write the module intro here."] }, - "es-a1-module-alphabet-accents-and-punctuation": { + "es-a1-module-alphabet-and-special-characters": { "note": "Coming Winter 2025", "intro": ["PLACEHOLDER: Write the module intro here."] }, @@ -7536,8 +7553,8 @@ "title": "Punctuation", "intro": ["", ""] }, - "es-a1-quiz-alphabet-accent-and-punctuation-quiz": { - "title": "Alphabet, Accent and Punctuation Quiz", + "es-a1-quiz-the-alphabet": { + "title": "The Spanish Alphabet Quiz", "intro": ["", ""] }, "es-a1-warm-up-introducing-yourself-basics": { @@ -7587,6 +7604,22 @@ "es-a1-quiz-first-questions": { "title": "First Questions Quiz", "intro": ["", ""] + }, + "es-a1-learn-vowels": { + "title": "Vowels", + "intro": ["", ""] + }, + "es-a1-learn-consonants-and-special-characters": { + "title": "Consonants and Special Characters", + "intro": ["", ""] + }, + "es-a1-review-the-alphabet": { + "title": "The Spanish Alphabet Review", + "intro": ["", ""] + }, + "es-a1-practice-the-alphabet": { + "title": "The Spanish Alphabet Practice", + "intro": ["", ""] } } }, diff --git a/client/i18n/locales/swahili/translations.json b/client/i18n/locales/swahili/translations.json index f053f6b768c..cc5a8ce60a9 100644 --- a/client/i18n/locales/swahili/translations.json +++ b/client/i18n/locales/swahili/translations.json @@ -685,6 +685,7 @@ "lab": "Lab", "review": "Review", "quiz": "Quiz", + "cert-project": "Certification Project", "exam": "Exam", "warm-up": "Warm-up", "learn": "Learn", @@ -1194,20 +1195,20 @@ } }, "title": { - "responsive-web-design": "Responsive Web Design", - "responsive-web-design-cert": "Responsive Web Design Certification", - "javascript-algorithms-and-data-structures": "Legacy JavaScript Algorithms and Data Structures", - "javascript-algorithms-and-data-structures-cert": "Legacy JavaScript Algorithms and Data Structures Certification", - "javascript-algorithms-and-data-structures-v8": "JavaScript Algorithms and Data Structures", - "javascript-algorithms-and-data-structures-v8-cert": "JavaScript Algorithms and Data Structures Certification", - "front-end-development-libraries": "Front End Development Libraries", - "front-end-development-libraries-cert": "Front End Development Libraries Certification", - "data-visualization": "Data Visualization", - "data-visualization-cert": "Data Visualization Certification", - "relational-database-v8": "Relational Database", - "relational-database-v8-cert": "Relational Database Certification", - "back-end-development-and-apis": "Back End Development and APIs", - "back-end-development-and-apis-cert": "Back End Development and APIs Certification", + "responsive-web-design": "Legacy Responsive Web Design V8", + "responsive-web-design-cert": "Legacy Responsive Web Design V8 Certification", + "javascript-algorithms-and-data-structures": "Legacy JavaScript Algorithms and Data Structures V7", + "javascript-algorithms-and-data-structures-cert": "Legacy JavaScript Algorithms and Data Structures V7 Certification", + "javascript-algorithms-and-data-structures-v8": "Legacy JavaScript Algorithms and Data Structures V8", + "javascript-algorithms-and-data-structures-v8-cert": "Legacy JavaScript Algorithms and Data Structures V8 Certification", + "front-end-development-libraries": "Front End Development Libraries V8", + "front-end-development-libraries-cert": "Front End Development Libraries V8 Certification", + "data-visualization": "Data Visualization V8", + "data-visualization-cert": "Data Visualization V8 Certification", + "relational-database-v8": "Relational Database V8", + "relational-database-v8-cert": "Relational Database V8 Certification", + "back-end-development-and-apis": "Back End Development and APIs V8", + "back-end-development-and-apis-cert": "Back End Development and APIs V8 Certification", "quality-assurance-v7": "Quality Assurance", "quality-assurance-v7-cert": "Quality Assurance Certification", "scientific-computing-with-python-v7": "Scientific Computing with Python", @@ -1353,6 +1354,26 @@ "two-questions": "Congratulations on getting this far. Before you can start the exam, please answer these two short survey questions." } }, + "speaking-modal": { + "heading": "Speaking Practice", + "repeat-sentence": "Repeat aloud this sentence:", + "play": "Play", + "playing": "Playing...", + "record": "Record", + "stop": "Stop", + "incorrect-words": "Incorrect words: {{words}}.", + "misplaced-words": "Misplaced words: {{words}}.", + "correct-congratulations": "That's correct! Congratulations!", + "very-good": "Very good!", + "try-again": "Try again.", + "no-audio-available": "No audio file available.", + "no-speech-detected": "Recording stopped. No speech detected.", + "speech-recognition-not-supported": "Speech recognition not supported in this browser.", + "recording-speak-now": "Recording. Speak now.", + "recording-stopped-processing": "Recording stopped. Processing...", + "microphone-access-error": "Error: Could not access microphone.", + "speaking-button": "Practice speaking" + }, "curriculum": { "catalog": { "title": "Explore our Catalog", diff --git a/client/i18n/locales/ukrainian/intro.json b/client/i18n/locales/ukrainian/intro.json index d2ba6bff294..cbf605c6d2f 100644 --- a/client/i18n/locales/ukrainian/intro.json +++ b/client/i18n/locales/ukrainian/intro.json @@ -60,7 +60,7 @@ } }, "2022/responsive-web-design": { - "title": "Адаптивний вебдизайн", + "title": "Legacy Responsive Web Design V8", "intro": [ "В сертифікації «Адаптивний вебдизайн» ви вивчите мови, які розробники використовують для створення вебсторінок: HTML (мова розмітки гіпертексту) для вмісту та CSS (каскадні таблиці стилів) для дизайну.", "Спочатку ви створите застосунок із фотографіями котів, аби вивчити основи HTML та CSS. Пізніше ви опануєте сучасні методи, такі як змінні CSS, завдяки створенню пінгвіна, а також створите вікторину, щоб опанувати доступність.", @@ -217,7 +217,7 @@ } }, "javascript-algorithms-and-data-structures": { - "title": "Алгоритми JavaScript та структури даних (застаріла версія)", + "title": "Legacy JavaScript Algorithms and Data Structures V7", "intro": [ "Якщо HTML та CSS відповідають за вміст і стилізацію сторінки, то JavaScript робить її інтерактивною. У сертифікації «Алгоритми JavaScript та структури даних» ви вивчите основи JavaScript, включно зі змінними, масивами, об’єктами, циклами та функціями.", "Як тільки ви вивчите основи, ви почнете застосовувати ці знання, створюючи алгоритми, щоб уміло маніпулювати рядками, факторизувати числа, і навіть зможете обчислити орбіту міжнародної космічної станції.", @@ -300,7 +300,7 @@ } }, "javascript-algorithms-and-data-structures-v8": { - "title": "Алгоритми та структури даних JavaScript", + "title": "Legacy JavaScript Algorithms and Data Structures V8", "intro": [ "Розробники використовують HTML та CSS, щоб контролювати вміст та стилізувати сторінку, а JavaScript — щоб зробити цю сторінку інтерактивною.", "У сертифікації «Алгоритми JavaScript та структури даних» ви вивчите основи JavaScript, включно зі змінними, масивами, об’єктами, циклами, функціями, об’єктною моделлю документа та багато іншого.", @@ -490,7 +490,7 @@ } }, "front-end-development-libraries": { - "title": "Бібліотеки Front End", + "title": "Front End Development Libraries V8", "intro": [ "Тепер, коли ви вже знайомі з HTML, CSS та JavaScript, піднімімо ваш рівень навичок, вивчаючи декілька найбільш популярних бібліотек верстки в галузі.", "У сертифікації «Бібліотеки Front End» ви навчитеся швидко стилізувати свій сайт за допомогою Bootstrap. Також ви навчитеся покращувати свої стилі CSS та розширювати їх за допомогою Sass.", @@ -553,7 +553,7 @@ } }, "data-visualization": { - "title": "Візуалізація даних", + "title": "Data Visualization V8", "intro": [ "Дані повсюди, але це не означає, що більшість з них без форми чи контексту.", "У сертифікації «Візуалізація даних» ви створите діаграми, графіки та карти, що показують різні типи даних, за допомогою бібліотеки D3.js.", @@ -588,7 +588,7 @@ } }, "relational-database": { - "title": "Реляційна база даних", + "title": "Relational Database V8", "intro": [ "У цих курсах ви використовуватимете реальні інструменти розробника та програмне забезпечення, включно з VS Code, PostgreSQL та командним рядком Linux / Unix для завершення інтерактивних уроків і створення проєктів.", "Ці курси починаються з основних команд Bash. За допомогою терміналу ви навчитеся усього необхідного (від навігації та маніпуляції файловою системою, написання скрипту в Bash до просунутого використання).", @@ -696,7 +696,7 @@ } }, "back-end-development-and-apis": { - "title": "Розробка Back End та API", + "title": "Back End Development and APIs V8", "intro": [ "До цього моменту ви використовували JavaScript тільки для front end, аби зробити вебсторінку інтерактивнішою, розв’язати завдання з алгоритмами, або створити SPA. Але JavaScript можна використовувати й у back end, або на сервері, для створення цілих вебзастосунків.", "Сьогодні один із найпопулярніших способів створення застосунків — за допомогою мікрослужб, які є маленькими модульними застосунками та разом формують єдине ціле.", @@ -2073,6 +2073,12 @@ "In these lessons, you will learn about HTML fundamentals like the div element, the id and class attributes, the HTML boilerplate, HTML entities, and more." ] }, + "workshop-bookstore-page": { + "title": "Build a Bookstore Page", + "intro": [ + "In this workshop, you will practice working with classes, ids and the div element by building a bookstore page." + ] + }, "lecture-understanding-how-html-affects-seo": { "title": "Understanding How HTML Affects SEO", "intro": [ @@ -4675,7 +4681,6 @@ "workshop-discount-calculator": { "title": "Build a Discount Calculator", "intro": [ - "Build a Discount Calculator", "In this workshop you will build a flexible discount pricing calculator through abstract base classes, allowing multiple discount algorithms to be applied interchangeably without modifying the core logic." ] }, @@ -4797,8 +4802,10 @@ ] }, "workshop-shortest-path-algorithm": { - "title": "Створіть алгоритм найкоротшого шляху", - "intro": [""] + "title": "Implement the Shortest Path Algorithm", + "intro": [ + "In this workshop you will implement the shortest path algorithm to find the shortest path between two nodes in a graph." + ] }, "lab-adjacency-list-to-matrix-converter": { "title": "Build an Adjacency List to Matrix Converter", @@ -6275,6 +6282,7 @@ }, "front-end-development-libraries-v9": { "title": "Front End Development Libraries Certification", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "This course teaches you the libraries that developers use to build webpages: React, TypeScript, and more.", "To earn your Front End Development Libraries Certification:", @@ -6616,6 +6624,7 @@ }, "python-v9": { "title": "Python Certification", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "This course teaches you the fundamentals of Python programming.", "To earn your Python Certification:", @@ -7074,6 +7083,7 @@ }, "relational-databases-v9": { "title": "Relational Databases Certification", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", "intro": [ "This course teaches you the fundamentals of relational databases.", "To earn your Relational Databases Certification:", @@ -7308,6 +7318,7 @@ }, "back-end-development-and-apis-v9": { "title": "Back End Development and APIs Certification", + "note": "This certification is currently in development and will be available soon.", "intro": [ "This course teaches you the fundamentals of back end development and APIs.", "To earn your Back End Development and APIs Certification:", @@ -7424,11 +7435,17 @@ }, "full-stack-developer-v9": { "title": "Certified Full Stack Developer Curriculum", + "note": "If you were previously working through our full stack curriculum, don't worry - you're progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.", "intro": [ - "This course provides a comprehensive pathway to becoming a Certified Full Stack Developer, covering all the essential technologies required to build modern, scalable web applications from start to finish.", - "Through a blend of interactive lessons, coding exercises, and real-world projects, you will master both frontend and backend development. You'll work with HTML, CSS, and JavaScript to build responsive user interfaces, explore React and TypeScript for advanced web applications, and learn to manage data with relational databases - and on the backend, you'll use Git, Npm, Node.js, and Python to create powerful server-side solutions.", - "By the end of this course, you'll have the practical skills and experience to confidently develop complete web applications, preparing you for a successful career as a Full Stack Developer.", - "This certification will take you a substantial amount of time and effort to complete. If you start now, you may be ready to start the remaining material and final exam when we launch it in the coming months." + "This certification represents the culmination of your full stack developer journey. It demonstrates your ability to build complete, modern web applications from start to finish.", + "To qualify for the exam, you must earn the following certifications:", + "- Responsive Web Design Certification", + "- JavaScript Certification", + "- Front End Development Libraries Certification", + "- Python Certification", + "- Relational Databases Certification", + "- Back End Development and APIs Certification", + "Pass the exam to earn your Full Stack Developer Certification." ], "chapters": { "certified-full-stack-developer-exam": "Certified Full Stack Developer Exam" @@ -7457,12 +7474,12 @@ "intro": ["Placeholder intro"], "chapters": { "es-a1-chapter-welcome-to-a1-professional-spanish": "Welcome to A1 Professional Spanish", - "es-a1-chapter-letters-and-sounds": "Letters and Sounds", + "es-a1-chapter-the-spanish-alphabet": "The Spanish Alphabet", "es-a1-chapter-greetings-and-introductions": "Greetings and Introductions" }, "modules": { "es-a1-module-introduction-and-certification-overview": "Introduction and Certification Overview", - "es-a1-module-alphabet-accents-and-punctuation": "Alphabet, Accents, and Punctuation", + "es-a1-module-alphabet-and-special-characters": "The Alphabet and Special Characters", "es-a1-module-greetings-and-farewells": "Greetings and Farewells", "es-a1-module-introducing-yourself": "Introducing Yourself", "es-a1-module-first-questions": "First Questions" @@ -7472,7 +7489,7 @@ "note": "Coming Winter 2025", "intro": ["PLACEHOLDER: Write the module intro here."] }, - "es-a1-module-alphabet-accents-and-punctuation": { + "es-a1-module-alphabet-and-special-characters": { "note": "Coming Winter 2025", "intro": ["PLACEHOLDER: Write the module intro here."] }, @@ -7522,8 +7539,8 @@ "title": "Punctuation", "intro": ["", ""] }, - "es-a1-quiz-alphabet-accent-and-punctuation-quiz": { - "title": "Alphabet, Accent and Punctuation Quiz", + "es-a1-quiz-the-alphabet": { + "title": "The Spanish Alphabet Quiz", "intro": ["", ""] }, "es-a1-warm-up-introducing-yourself-basics": { @@ -7573,6 +7590,22 @@ "es-a1-quiz-first-questions": { "title": "First Questions Quiz", "intro": ["", ""] + }, + "es-a1-learn-vowels": { + "title": "Vowels", + "intro": ["", ""] + }, + "es-a1-learn-consonants-and-special-characters": { + "title": "Consonants and Special Characters", + "intro": ["", ""] + }, + "es-a1-review-the-alphabet": { + "title": "The Spanish Alphabet Review", + "intro": ["", ""] + }, + "es-a1-practice-the-alphabet": { + "title": "The Spanish Alphabet Practice", + "intro": ["", ""] } } }, diff --git a/client/i18n/locales/ukrainian/translations.json b/client/i18n/locales/ukrainian/translations.json index ca89420477c..176d229a15a 100644 --- a/client/i18n/locales/ukrainian/translations.json +++ b/client/i18n/locales/ukrainian/translations.json @@ -685,6 +685,7 @@ "lab": "Лабораторна робота", "review": "Повторення", "quiz": "Тест", + "cert-project": "Certification Project", "exam": "Екзамен", "warm-up": "Warm-up", "learn": "Learn", @@ -1194,20 +1195,20 @@ } }, "title": { - "responsive-web-design": "Адаптивний вебдизайн", - "responsive-web-design-cert": "Сертифікація «Адаптивний вебдизайн»", - "javascript-algorithms-and-data-structures": "Алгоритми та структури даних JavaScript (стара версія)", - "javascript-algorithms-and-data-structures-cert": "Сертифікація «Алгоритми та структури даних JavaScript» (стара версія)", - "javascript-algorithms-and-data-structures-v8": "Алгоритми та структури даних JavaScript", - "javascript-algorithms-and-data-structures-v8-cert": "Сертифікація «Алгоритми та структури даних JavaScript»", - "front-end-development-libraries": "Бібліотеки Front End", - "front-end-development-libraries-cert": "Сертифікація «Бібліотеки Front End»", - "data-visualization": "Візуалізація даних", - "data-visualization-cert": "Сертифікація «Візуалізація даних»", - "relational-database-v8": "Реляційна база даних", - "relational-database-v8-cert": "Сертифікація «Реляційна база даних»", - "back-end-development-and-apis": "Розробка Back End та API", - "back-end-development-and-apis-cert": "Сертифікація «Розробка Back End та API»", + "responsive-web-design": "Legacy Responsive Web Design V8", + "responsive-web-design-cert": "Legacy Responsive Web Design V8 Certification", + "javascript-algorithms-and-data-structures": "Legacy JavaScript Algorithms and Data Structures V7", + "javascript-algorithms-and-data-structures-cert": "Legacy JavaScript Algorithms and Data Structures V7 Certification", + "javascript-algorithms-and-data-structures-v8": "Legacy JavaScript Algorithms and Data Structures V8", + "javascript-algorithms-and-data-structures-v8-cert": "Legacy JavaScript Algorithms and Data Structures V8 Certification", + "front-end-development-libraries": "Front End Development Libraries V8", + "front-end-development-libraries-cert": "Front End Development Libraries V8 Certification", + "data-visualization": "Data Visualization V8", + "data-visualization-cert": "Data Visualization V8 Certification", + "relational-database-v8": "Relational Database V8", + "relational-database-v8-cert": "Relational Database V8 Certification", + "back-end-development-and-apis": "Back End Development and APIs V8", + "back-end-development-and-apis-cert": "Back End Development and APIs V8 Certification", "quality-assurance-v7": "Забезпечення якості", "quality-assurance-v7-cert": "Сертифікація «Забезпечення якості»", "scientific-computing-with-python-v7": "Наукові обчислення з Python", @@ -1353,6 +1354,26 @@ "two-questions": "Вітаємо з досягненням цієї точки. Перш ніж розпочати екзамен, будь ласка, дайте відповідь на два короткі запитання." } }, + "speaking-modal": { + "heading": "Speaking Practice", + "repeat-sentence": "Repeat aloud this sentence:", + "play": "Play", + "playing": "Playing...", + "record": "Record", + "stop": "Stop", + "incorrect-words": "Incorrect words: {{words}}.", + "misplaced-words": "Misplaced words: {{words}}.", + "correct-congratulations": "That's correct! Congratulations!", + "very-good": "Very good!", + "try-again": "Try again.", + "no-audio-available": "No audio file available.", + "no-speech-detected": "Recording stopped. No speech detected.", + "speech-recognition-not-supported": "Speech recognition not supported in this browser.", + "recording-speak-now": "Recording. Speak now.", + "recording-stopped-processing": "Recording stopped. Processing...", + "microphone-access-error": "Error: Could not access microphone.", + "speaking-button": "Practice speaking" + }, "curriculum": { "catalog": { "title": "Ознайомтесь з нашим каталогом", From e8a145b3a2341ff23f3a22ca1782db23a3d30b28 Mon Sep 17 00:00:00 2001 From: miyaliu666 Date: Mon, 10 Nov 2025 22:56:40 +0800 Subject: [PATCH 03/21] feat(curriculum): Add Chinese audios from the CDN (#63682) --- curriculum/schema/scene-assets.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/curriculum/schema/scene-assets.js b/curriculum/schema/scene-assets.js index d9e990e2291..ff9e852e278 100644 --- a/curriculum/schema/scene-assets.js +++ b/curriculum/schema/scene-assets.js @@ -277,7 +277,11 @@ const availableAudios = [ 'ES_A1_vowels.mp3', 'ES_A1_vowels_aiu.mp3', 'ES_A1_vowels_oiu.mp3', - 'ES_A1_vowels_uae.mp3' + 'ES_A1_vowels_uae.mp3', + 'ZH_A1_1.1.mp3', + 'ZH_A1_1.2.mp3', + 'ZH_A1_1.3.mp3', + 'ZH_A1_1.4.mp3' ]; const availableAlignments = ['left', 'center', 'right']; From 2bbb66a8549b180fb2f1771a9f6e9badccb84464 Mon Sep 17 00:00:00 2001 From: freeCodeCamp's Camper Bot Date: Mon, 10 Nov 2025 20:39:05 +0530 Subject: [PATCH 04/21] chore(i18n,learn): update i18n-curriculum submodule (#63695) --- curriculum/i18n-curriculum | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/curriculum/i18n-curriculum b/curriculum/i18n-curriculum index e9bf4f301a3..56a1d3f3e63 160000 --- a/curriculum/i18n-curriculum +++ b/curriculum/i18n-curriculum @@ -1 +1 @@ -Subproject commit e9bf4f301a301387876b6601f64c76feaa78023a +Subproject commit 56a1d3f3e63a01c2d7af9c9d1f13c932d391c9f4 From 13ec0d5a9053e7db01218f2a2a3cb33c5c1e46bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=F0=9D=99=A0=F0=9D=99=9A=F0=9D=99=A3=F0=9D=99=96?= =?UTF-8?q?=F0=9D=99=9E=F0=9D=99=A1?= Date: Mon, 10 Nov 2025 21:49:58 +0530 Subject: [PATCH 05/21] fix(curriculum): clarify performance.now() precision and update quiz answer (#63694) --- .../67d2f7cf63fafe7d20270498.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/curriculum/challenges/english/blocks/lecture-understanding-performance-in-web-applications/67d2f7cf63fafe7d20270498.md b/curriculum/challenges/english/blocks/lecture-understanding-performance-in-web-applications/67d2f7cf63fafe7d20270498.md index e5791d3c1b8..b03d47d3f71 100644 --- a/curriculum/challenges/english/blocks/lecture-understanding-performance-in-web-applications/67d2f7cf63fafe7d20270498.md +++ b/curriculum/challenges/english/blocks/lecture-understanding-performance-in-web-applications/67d2f7cf63fafe7d20270498.md @@ -35,7 +35,7 @@ const end = performance.now(); console.log(`Execution time: ${end - start}ms`); ``` -This is more accurate than using `Date.now()` because it measures time in microseconds, avoiding clock drift issues. You can use it to track script execution time, event response delays and animation performance. +This is more accurate than using `Date.now()` because it measures time in milliseconds with microsecond precision, avoiding clock drift issues. You can use it to track script execution time, event response delays, and animation performance. Next, the Performance Timing API. @@ -97,7 +97,7 @@ What is the main advantage of using `performance.now()` over `Date.now()`? ## --answers-- -It's more accurate and measures time in microseconds. +It's more accurate and measures time in milliseconds with microsecond precision. --- From 14dd3c6b2772b29a8226ba3c6bf3abfaf9f0ef91 Mon Sep 17 00:00:00 2001 From: Tom <20648924+moT01@users.noreply.github.com> Date: Mon, 10 Nov 2025 11:24:50 -0600 Subject: [PATCH 06/21] chore(curriculum): update v9 content (#63650) Co-authored-by: Oliver Eyton-Williams --- client/i18n/locales/english/intro.json | 51 +++++++++++++++++++ .../back-end-development-and-apis-v9.json | 1 + .../front-end-development-libraries-v9.json | 1 + .../structure/superblocks/javascript-v9.json | 4 +- .../structure/superblocks/python-v9.json | 14 ++--- .../superblocks/relational-databases-v9.json | 1 + .../superblocks/responsive-web-design-v9.json | 3 +- 7 files changed, 62 insertions(+), 13 deletions(-) diff --git a/client/i18n/locales/english/intro.json b/client/i18n/locales/english/intro.json index e04ac52112a..5982679089e 100644 --- a/client/i18n/locales/english/intro.json +++ b/client/i18n/locales/english/intro.json @@ -5198,6 +5198,12 @@ "In this lecture you will learn how to format strings by changing their case using toUpperCase() and toLowerCase() methods, and how to remove whitespace using trim(), trimStart(), and trimEnd() methods." ] }, + "workshop-string-formatter": { + "title": "Build a String Formatter", + "intro": [ + "In this workshop, you will practice working with various string methods including trim(), toUpperCase() and toLowerCase()." + ] + }, "lecture-working-with-string-modification-methods": { "title": "Working with String Modification Methods", "intro": [ @@ -5227,12 +5233,26 @@ "In these lectures you will learn about the number type, arithmetic operators, and using them with numbers and strings." ] }, + "lab-debug-type-coercion-errors": { + "title": "Debug Type Coercion Errors in a Buggy App", + "intro": [ + "In this lab, you will be working with a buggy app that contains several type coercion errors.", + "Your task is to identify and fix these errors to ensure the app functions correctly." + ] + }, "lecture-working-with-operator-behavior": { "title": "Working with Operator Behavior", "intro": [ "In these lectures you will learn about operator precedence, the increment and decrement operators, and compound assignment operators." ] }, + "lab-debug-increment-and-decrement-operator-errors": { + "title": "Debug Increment and Decrement Operator Errors in a Buggy App", + "intro": [ + "In this lab, you'll debug an app that has several errors related to the increment and decrement operators.", + "Your task is to identify and fix the errors so that the app works as intended." + ] + }, "lecture-working-with-comparison-and-boolean-operators": { "title": "Working with Comparison and Boolean Operators", "intro": [ @@ -6283,6 +6303,8 @@ "modules": { "react-fundamentals": "React Fundamentals", "react-state-hooks-and-routing": "React State, Hooks, and Routing", + "lab-currency-converter": "Build a Currency Converter", + "lab-tic-tac-toe": "Build a Tic-Tac-Toe Game", "performance": "Performance", "testing": "Testing", "css-libraries-and-frameworks": "CSS Libraries and Frameworks", @@ -6626,11 +6648,16 @@ "python-basics": "Python Basics", "python-loops-and-sequences": "Loops and Sequences", "python-dictionaries-and-sets": "Dictionaries and Sets", + "lab-user-configuration-manager": "Build a User Configuration Manager", "python-error-handling": "Error Handling", "python-classes-and-objects": "Classes and Objects", + "lab-budget-app": "Build a Budget App", "python-object-oriented-programming": "Object-Oriented Programming (OOP)", + "lab-polygon-area-calculator": "Build a Polygon Area Calculator", "python-linear-data-structures": "Linear Data Structures", + "lab-hash-table": "Build a Hash Table", "python-algorithms": "Algorithms", + "lab-tower-of-hanoi": "Implement the Tower of Hanoi Algorithm", "python-graphs-and-trees": "Graphs and Trees", "python-dynamic-programming": "Dynamic Programming", "review-python": "Python Review", @@ -6879,6 +6906,12 @@ "title": "Understanding Abstraction", "intro": ["Learn about Understanding Abstraction in these lessons."] }, + "workshop-discount-calculator": { + "title": "Build a Discount Calculator", + "intro": [ + "In this workshop you will build a flexible discount pricing calculator through abstract base classes, allowing multiple discount algorithms to be applied interchangeably without modifying the core logic." + ] + }, "lab-player-interface": { "title": "Build a Player Interface", "intro": [ @@ -6998,6 +7031,12 @@ "In this lesson, you will learn about fundamental data structures like graphs, trees, and their practical applications in computer science." ] }, + "workshop-shortest-path-algorithm": { + "title": "Implement the Shortest Path Algorithm", + "intro": [ + "In this workshop you will implement an algorithm to find the shortest path between two nodes in a graph." + ] + }, "lab-adjacency-list-to-matrix-converter": { "title": "Build an Adjacency List to Matrix Converter", "intro": [ @@ -7686,6 +7725,12 @@ "In these lectures, you will learn about HTML fundamentals like the div element, the id and class attributes, the HTML boilerplate, HTML entities, and more." ] }, + "workshop-bookstore-page": { + "title": "Build a Bookstore Page", + "intro": [ + "In this workshop, you will practice working with classes, ids and the div element by building a bookstore page." + ] + }, "lecture-understanding-how-html-affects-seo": { "title": "Understanding How HTML Affects SEO", "intro": [ @@ -7772,6 +7817,12 @@ "In these lectures, you will learn when you should use certain semantic elements like the em element over the i element, description lists, and more." ] }, + "workshop-major-browsers-list": { + "title": "Build a List of Major Web Browsers", + "intro": [ + "In this workshop, you will build a description list and work with the dl, dt, and dd elements." + ] + }, "lecture-working-with-text-and-time-semantic-elements": { "title": "Working with Text and Time Semantic Elements ", "intro": [ diff --git a/curriculum/structure/superblocks/back-end-development-and-apis-v9.json b/curriculum/structure/superblocks/back-end-development-and-apis-v9.json index 7649cfbe018..6efb12ea72c 100644 --- a/curriculum/structure/superblocks/back-end-development-and-apis-v9.json +++ b/curriculum/structure/superblocks/back-end-development-and-apis-v9.json @@ -60,6 +60,7 @@ "comingSoon": true, "modules": [ { + "comingSoon": true, "dashedName": "back-end-development-and-apis-certification-exam", "blocks": ["exam-back-end-development-and-apis-certification"] } diff --git a/curriculum/structure/superblocks/front-end-development-libraries-v9.json b/curriculum/structure/superblocks/front-end-development-libraries-v9.json index c28c9854987..264574f5b97 100644 --- a/curriculum/structure/superblocks/front-end-development-libraries-v9.json +++ b/curriculum/structure/superblocks/front-end-development-libraries-v9.json @@ -107,6 +107,7 @@ "comingSoon": true, "modules": [ { + "comingSoon": true, "dashedName": "front-end-development-libraries-certification-exam", "blocks": ["exam-front-end-development-libraries-certification"] } diff --git a/curriculum/structure/superblocks/javascript-v9.json b/curriculum/structure/superblocks/javascript-v9.json index bef0b136d25..e5a2fb63b8b 100644 --- a/curriculum/structure/superblocks/javascript-v9.json +++ b/curriculum/structure/superblocks/javascript-v9.json @@ -21,6 +21,7 @@ "lecture-working-with-string-search-and-slice-methods", "workshop-string-inspector", "lecture-working-with-string-formatting-methods", + "workshop-string-formatter", "lecture-working-with-string-modification-methods", "workshop-string-transformer", "review-javascript-strings", @@ -31,7 +32,9 @@ "dashedName": "javascript-booleans-and-numbers", "blocks": [ "lecture-working-with-numbers-and-arithmetic-operators", + "lab-debug-type-coercion-errors", "lecture-working-with-operator-behavior", + "lab-debug-increment-and-decrement-operator-errors", "lecture-working-with-comparison-and-boolean-operators", "lecture-working-with-unary-and-bitwise-operators", "lecture-working-with-conditional-logic-and-math-methods", @@ -325,7 +328,6 @@ { "chapterType": "exam", "dashedName": "javascript-certification-exam", - "comingSoon": true, "modules": [ { "dashedName": "javascript-certification-exam", diff --git a/curriculum/structure/superblocks/python-v9.json b/curriculum/structure/superblocks/python-v9.json index e088e27a901..3a201f4bc6e 100644 --- a/curriculum/structure/superblocks/python-v9.json +++ b/curriculum/structure/superblocks/python-v9.json @@ -5,7 +5,6 @@ "modules": [ { "dashedName": "python-basics", - "comingSoon": false, "blocks": [ "lecture-introduction-to-python", "workshop-caesar-cipher", @@ -16,7 +15,6 @@ }, { "dashedName": "python-loops-and-sequences", - "comingSoon": false, "blocks": [ "lecture-working-with-loops-and-sequences", "workshop-pin-extractor", @@ -27,7 +25,6 @@ }, { "dashedName": "python-dictionaries-and-sets", - "comingSoon": false, "blocks": [ "lecture-working-with-dictionaries-and-sets", "lecture-working-with-modules", @@ -43,7 +40,6 @@ }, { "dashedName": "python-error-handling", - "comingSoon": false, "blocks": [ "lecture-understanding-error-handling", "lab-isbn-validator", @@ -53,7 +49,6 @@ }, { "dashedName": "python-classes-and-objects", - "comingSoon": true, "blocks": [ "lecture-classes-and-objects", "workshop-musical-instrument-inventory", @@ -70,7 +65,6 @@ }, { "dashedName": "python-object-oriented-programming", - "comingSoon": true, "blocks": [ "lecture-understanding-object-oriented-programming-and-encapsulation", "workshop-salary-tracker", @@ -78,6 +72,7 @@ "lecture-understanding-inheritance-and-polymorphism", "workshop-media-catalogue", "lecture-understanding-abstraction", + "workshop-discount-calculator", "lab-player-interface", "review-object-oriented-programming", "quiz-object-oriented-programming" @@ -90,7 +85,6 @@ }, { "dashedName": "python-linear-data-structures", - "comingSoon": true, "blocks": [ "lecture-working-with-common-data-structures", "workshop-linked-list-class", @@ -105,7 +99,6 @@ }, { "dashedName": "python-algorithms", - "comingSoon": true, "blocks": [ "lecture-searching-and-sorting-algorithms", "workshop-binary-search", @@ -125,9 +118,9 @@ }, { "dashedName": "python-graphs-and-trees", - "comingSoon": true, "blocks": [ "lecture-understanding-graphs-and-trees", + "workshop-shortest-path-algorithm", "lab-adjacency-list-to-matrix-converter", "workshop-breadth-first-search", "lab-depth-first-search", @@ -138,7 +131,6 @@ }, { "dashedName": "python-dynamic-programming", - "comingSoon": true, "blocks": [ "lecture-understanding-dynamic-programming", "lab-nth-fibonacci-number", @@ -147,7 +139,6 @@ ] }, { - "comingSoon": true, "moduleType": "review", "dashedName": "review-python", "blocks": ["review-python"] @@ -160,6 +151,7 @@ "comingSoon": true, "modules": [ { + "comingSoon": true, "dashedName": "python-certification-exam", "blocks": ["exam-python-certification"] } diff --git a/curriculum/structure/superblocks/relational-databases-v9.json b/curriculum/structure/superblocks/relational-databases-v9.json index ea889bef47b..fb62920ebad 100644 --- a/curriculum/structure/superblocks/relational-databases-v9.json +++ b/curriculum/structure/superblocks/relational-databases-v9.json @@ -96,6 +96,7 @@ "comingSoon": true, "modules": [ { + "comingSoon": true, "dashedName": "relational-databases-certification-exam", "blocks": ["exam-relational-databases-certification"] } diff --git a/curriculum/structure/superblocks/responsive-web-design-v9.json b/curriculum/structure/superblocks/responsive-web-design-v9.json index b16a1d66223..b200392653e 100644 --- a/curriculum/structure/superblocks/responsive-web-design-v9.json +++ b/curriculum/structure/superblocks/responsive-web-design-v9.json @@ -14,6 +14,7 @@ "workshop-cat-photo-app", "lab-recipe-page", "lecture-html-fundamentals", + "workshop-bookstore-page", "lecture-understanding-how-html-affects-seo", "lab-travel-agency-page", "lecture-working-with-audio-and-video-elements", @@ -33,6 +34,7 @@ "blocks": [ "lecture-importance-of-semantic-html", "lecture-understanding-nuanced-semantic-elements", + "workshop-major-browsers-list", "lecture-working-with-text-and-time-semantic-elements", "workshop-quincys-job-tips", "lecture-working-with-specialized-semantic-elements", @@ -295,7 +297,6 @@ { "chapterType": "exam", "dashedName": "responsive-web-design-certification-exam", - "comingSoon": true, "modules": [ { "dashedName": "responsive-web-design-certification-exam", From 0c844ab007ea91843b449b0219ea9703d1ba7b10 Mon Sep 17 00:00:00 2001 From: Huyen Nguyen <25715018+huyenltnguyen@users.noreply.github.com> Date: Mon, 10 Nov 2025 11:25:57 -0800 Subject: [PATCH 07/21] feat(client,challenge-parser): render Chinese as ruby markup (#63424) Co-authored-by: Oliver Eyton-Williams --- client/src/components/layouts/global.css | 4 + .../parser/__fixtures__/with-chinese-mcq.md | 52 ++++++ .../__fixtures__/with-chinese-quizzes.md | 69 +++++++ .../parser/plugins/add-assignment.js | 18 +- .../parser/plugins/add-quizzes.js | 51 ++--- .../parser/plugins/add-quizzes.test.js | 74 ++++++++ .../parser/plugins/add-text.js | 6 +- .../parser/plugins/add-text.test.js | 21 ++- .../parser/plugins/add-video-question.js | 175 +++++++++--------- .../parser/plugins/add-video-question.test.js | 41 +++- .../parser/plugins/utils/i18n-stringify.js | 78 ++++++++ .../plugins/utils/i18n-stringify.test.js | 129 +++++++++++++ .../parser/plugins/utils/mdast-to-html.js | 11 +- 13 files changed, 601 insertions(+), 128 deletions(-) create mode 100644 tools/challenge-parser/parser/__fixtures__/with-chinese-mcq.md create mode 100644 tools/challenge-parser/parser/__fixtures__/with-chinese-quizzes.md create mode 100644 tools/challenge-parser/parser/plugins/utils/i18n-stringify.js create mode 100644 tools/challenge-parser/parser/plugins/utils/i18n-stringify.test.js diff --git a/client/src/components/layouts/global.css b/client/src/components/layouts/global.css index c8f6121adaa..0fcd84f8166 100644 --- a/client/src/components/layouts/global.css +++ b/client/src/components/layouts/global.css @@ -89,6 +89,10 @@ hr { border-top: 1px solid var(--quaternary-background); } +rt { + font-size: 0.8rem; +} + #___gatsby { height: 100%; } diff --git a/tools/challenge-parser/parser/__fixtures__/with-chinese-mcq.md b/tools/challenge-parser/parser/__fixtures__/with-chinese-mcq.md new file mode 100644 index 00000000000..beb0c4df2f1 --- /dev/null +++ b/tools/challenge-parser/parser/__fixtures__/with-chinese-mcq.md @@ -0,0 +1,52 @@ +--- +id: test-with-chinese-mcq +title: Ruby Test +challengeType: 19 +lang: zh-CN +--- + +# --instructions-- + +Instructions containing `汉字 (hàn zì)`. + +# --questions-- + +## --text-- + +Question text containing `汉字 (hàn zì)`. + +## --answers-- + +`你好 (nǐ hǎo)` + +### --feedback-- + +Feedback text. + +--- + +`请 (qǐng)` + +### --feedback-- + +`请 (qǐng)` is not correct. + +--- + +`请问 (qǐng wèn)` + +--- + +`问 (wèn)` + +### --feedback-- + +Feedback text. + +## --video-solution-- + +3 + +# --explanation-- + +Wang Hua uses `请问 (qǐng wèn)` to politely start her question. \ No newline at end of file diff --git a/tools/challenge-parser/parser/__fixtures__/with-chinese-quizzes.md b/tools/challenge-parser/parser/__fixtures__/with-chinese-quizzes.md new file mode 100644 index 00000000000..3254c05ec3d --- /dev/null +++ b/tools/challenge-parser/parser/__fixtures__/with-chinese-quizzes.md @@ -0,0 +1,69 @@ +# --quizzes-- + +## --quiz-- + +### --question-- + +#### --text-- + +Quiz 1, question 1 with `中文 (zhōng wén)` + +#### --distractors-- + +Quiz 1, question 1, distractor 1 with `中文 (zhōng wén)` + +--- + +Quiz 1, question 1, distractor 2 with `中文 (zhōng wén)` + +--- + +Quiz 1, question 1, distractor 3 with `中文 (zhōng wén)` + +#### --answer-- + +Quiz 1, question 1, answer with `中文 (zhōng wén)` + +### --question-- + +#### --text-- + +Quiz 1, question 2 with `中文` + +#### --distractors-- + +Quiz 1, question 2, distractor 1 with `中文` + +--- + +Quiz 1, question 2, distractor 2 with `中文` + +--- + +Quiz 1, question 2, distractor 3 with `中文` + +#### --answer-- + +Quiz 1, question 2, answer with `中文` + +### --question-- + +#### --text-- + +Quiz 1, question 3 with `zhōng wén` + +#### --distractors-- + +Quiz 1, question 3, distractor 1 with `zhōng wén` + +--- + +Quiz 1, question 3, distractor 2 with `zhōng wén` + +--- + +Quiz 1, question 3, distractor 3 with `zhōng wén` + +#### --answer-- + +Quiz 1, question 3, answer with `zhōng wén` diff --git a/tools/challenge-parser/parser/plugins/add-assignment.js b/tools/challenge-parser/parser/plugins/add-assignment.js index 1c826fc7c09..90cce317426 100644 --- a/tools/challenge-parser/parser/plugins/add-assignment.js +++ b/tools/challenge-parser/parser/plugins/add-assignment.js @@ -1,23 +1,23 @@ const { getSection } = require('./utils/get-section'); -const mdastToHtml = require('./utils/mdast-to-html'); +const { createMdastToHtml } = require('./utils/i18n-stringify'); const { splitOnThematicBreak } = require('./utils/split-on-thematic-break'); function plugin() { return transformer; function transformer(tree, file) { + const toHtml = createMdastToHtml(file.data.lang); const assignmentNodes = getSection(tree, '--assignment--'); - const assignment = getAssignments(assignmentNodes).filter(a => a != ''); + function getAssignments(assignmentNodes) { + const assignmentGroups = splitOnThematicBreak(assignmentNodes); + return assignmentGroups.map(assignment => toHtml(assignment)); + } - file.data.assignments = assignment; - } - - function getAssignments(assignmentNodes) { - const assignmentGroups = splitOnThematicBreak(assignmentNodes); - - return assignmentGroups.map(assignment => mdastToHtml(assignment)); + file.data.assignments = getAssignments(assignmentNodes).filter( + a => a != '' + ); } } diff --git a/tools/challenge-parser/parser/plugins/add-quizzes.js b/tools/challenge-parser/parser/plugins/add-quizzes.js index 54369866b94..defca36581e 100644 --- a/tools/challenge-parser/parser/plugins/add-quizzes.js +++ b/tools/challenge-parser/parser/plugins/add-quizzes.js @@ -1,14 +1,39 @@ const { root } = require('mdast-builder'); const { getSection, getAllSections } = require('./utils/get-section'); -const mdastToHtml = require('./utils/mdast-to-html'); +const { createMdastToHtml } = require('./utils/i18n-stringify'); const { splitOnThematicBreak } = require('./utils/split-on-thematic-break'); function plugin() { return transformer; function transformer(tree, file) { + const toHtml = createMdastToHtml(file.data.lang); const quizzesNodes = getSection(tree, `--quizzes--`); + function getDistractors(distractorsNodes) { + const distractorsGroups = splitOnThematicBreak(distractorsNodes); + + if (distractorsGroups.length !== 3) + throw Error('Three distractors are required per quiz-question'); + + return distractorsGroups.map(distractorsGroup => { + return toHtml(distractorsGroup); + }); + } + + function getQuestion(textNodes, distractorNodes, answerNodes) { + const text = toHtml(textNodes); + const distractors = getDistractors(distractorNodes); + const answer = toHtml(answerNodes); + + if (!text) throw Error('--text-- is missing from the quiz question'); + if (!distractors) + throw Error('--distractors-- are missing from quiz question'); + if (!answer) throw Error('--answer-- is missing from quiz question'); + + return { text, distractors, answer }; + } + if (quizzesNodes.length > 0) { const compiledQuizzes = []; const quizSections = getAllSections(root(quizzesNodes), `--quiz--`); @@ -51,28 +76,4 @@ function plugin() { } } -function getQuestion(textNodes, distractorNodes, answerNodes) { - const text = mdastToHtml(textNodes); - const distractors = getDistractors(distractorNodes); - const answer = mdastToHtml(answerNodes); - - if (!text) throw Error('--text-- is missing from the quiz question'); - if (!distractors) - throw Error('--distractors-- are missing from quiz question'); - if (!answer) throw Error('--answer-- is missing from quiz question'); - - return { text, distractors, answer }; -} - -function getDistractors(distractorsNodes) { - const distractorsGroups = splitOnThematicBreak(distractorsNodes); - - if (distractorsGroups.length !== 3) - throw Error('Three distractors are required per quiz-question'); - - return distractorsGroups.map(distractorsGroup => { - return mdastToHtml(distractorsGroup); - }); -} - module.exports = plugin; diff --git a/tools/challenge-parser/parser/plugins/add-quizzes.test.js b/tools/challenge-parser/parser/plugins/add-quizzes.test.js index bb065e737d3..a3564099a46 100644 --- a/tools/challenge-parser/parser/plugins/add-quizzes.test.js +++ b/tools/challenge-parser/parser/plugins/add-quizzes.test.js @@ -4,11 +4,13 @@ import addQuizzes from './add-quizzes'; describe('add-quizzes plugin', () => { let mockQuizzesAST; + let chineseQuizzesAST; const plugin = addQuizzes(); let file = { data: {} }; beforeAll(async () => { mockQuizzesAST = await parseFixture('with-quizzes.md'); + chineseQuizzesAST = await parseFixture('with-chinese-quizzes.md'); }); beforeEach(() => { @@ -61,4 +63,76 @@ describe('add-quizzes plugin', () => { plugin(mockQuizzesAST, file); expect(file.data).toMatchSnapshot(); }); + + it('should render Chinese hanzi (pinyin) in quizzes when lang is zh-CN and the text contains hanzi (pinyin) format', () => { + const zhFile = { data: { lang: 'zh-CN' } }; + plugin(chineseQuizzesAST, zhFile); + const quizzes = zhFile.data.quizzes; + expect(Array.isArray(quizzes)).toBe(true); + expect(quizzes.length).toBe(1); + + const firstQuiz = quizzes[0]; + const firstQuestion = firstQuiz.questions[0]; + + // Quiz 1, Question 1 + expect(firstQuestion.text).toBe( + '

Quiz 1, question 1 with 中文(zhōng wén)

' + ); + expect(firstQuestion.distractors[0]).toBe( + '

Quiz 1, question 1, distractor 1 with 中文(zhōng wén)

' + ); + expect(firstQuestion.distractors[1]).toBe( + '

Quiz 1, question 1, distractor 2 with 中文(zhōng wén)

' + ); + expect(firstQuestion.distractors[2]).toBe( + '

Quiz 1, question 1, distractor 3 with 中文(zhōng wén)

' + ); + expect(firstQuestion.answer).toBe( + '

Quiz 1, question 1, answer with 中文(zhōng wén)

' + ); + }); + + it('should render Chinese in quizzes when lang is zh-CN and the text does not contain hanzi (pinyin) format', () => { + const zhFile = { data: { lang: 'zh-CN' } }; + plugin(chineseQuizzesAST, zhFile); + const quizzes = zhFile.data.quizzes; + + const firstQuiz = quizzes[0]; + const secondQuestion = firstQuiz.questions[1]; + const thirdQuestion = firstQuiz.questions[2]; + + // Quiz 1, Question 2 + expect(secondQuestion.text).toBe( + '

Quiz 1, question 2 with 中文

' + ); + expect(secondQuestion.distractors[0]).toBe( + '

Quiz 1, question 2, distractor 1 with 中文

' + ); + expect(secondQuestion.distractors[1]).toBe( + '

Quiz 1, question 2, distractor 2 with 中文

' + ); + expect(secondQuestion.distractors[2]).toBe( + '

Quiz 1, question 2, distractor 3 with 中文

' + ); + expect(secondQuestion.answer).toBe( + '

Quiz 1, question 2, answer with 中文

' + ); + + // Quiz 1, Question 3 + expect(thirdQuestion.text).toBe( + '

Quiz 1, question 3 with zhōng wén

' + ); + expect(thirdQuestion.distractors[0]).toBe( + '

Quiz 1, question 3, distractor 1 with zhōng wén

' + ); + expect(thirdQuestion.distractors[1]).toBe( + '

Quiz 1, question 3, distractor 2 with zhōng wén

' + ); + expect(thirdQuestion.distractors[2]).toBe( + '

Quiz 1, question 3, distractor 3 with zhōng wén

' + ); + expect(thirdQuestion.answer).toBe( + '

Quiz 1, question 3, answer with zhōng wén

' + ); + }); }); diff --git a/tools/challenge-parser/parser/plugins/add-text.js b/tools/challenge-parser/parser/plugins/add-text.js index f593b928ba4..be4415169e8 100644 --- a/tools/challenge-parser/parser/plugins/add-text.js +++ b/tools/challenge-parser/parser/plugins/add-text.js @@ -2,7 +2,7 @@ const { isEmpty } = require('lodash'); const find = require('unist-util-find'); const { root } = require('mdast-builder'); const { getSection, isMarker } = require('./utils/get-section'); -const mdastToHTML = require('./utils/mdast-to-html'); +const { createMdastToHtml } = require('./utils/i18n-stringify'); function addText(sectionIds) { if (!sectionIds || !Array.isArray(sectionIds) || sectionIds.length <= 0) { @@ -17,7 +17,9 @@ function addText(sectionIds) { `The --${sectionId}-- section should not have any subsections. Found subsection ${subSection.children[0].value}` ); } - const sectionText = mdastToHTML(textNodes); + + const toHtml = createMdastToHtml(file.data.lang); + const sectionText = toHtml(textNodes); if (!isEmpty(sectionText)) { file.data = { ...file.data, diff --git a/tools/challenge-parser/parser/plugins/add-text.test.js b/tools/challenge-parser/parser/plugins/add-text.test.js index 66c5ae84017..2a76a53c9cd 100644 --- a/tools/challenge-parser/parser/plugins/add-text.test.js +++ b/tools/challenge-parser/parser/plugins/add-text.test.js @@ -3,7 +3,11 @@ import parseFixture from '../__fixtures__/parse-fixture'; import addText from './add-text'; describe('add-text', () => { - let realisticAST, mockAST, withSubSectionAST, withNestedInstructionsAST; + let realisticAST, + mockAST, + withSubSectionAST, + withNestedInstructionsAST, + withChineseAST; const descriptionId = 'description'; const instructionsId = 'instructions'; const missingId = 'missing'; @@ -16,6 +20,7 @@ describe('add-text', () => { withNestedInstructionsAST = await parseFixture( 'with-nested-instructions.md' ); + withChineseAST = await parseFixture('with-chinese-mcq.md'); }); beforeEach(() => { @@ -156,4 +161,18 @@ describe('add-text', () => { plugin(mockAST, file); expect(file.data).toMatchSnapshot(); }); + + it('should render Chinese inline code as ruby when lang is zh-CN', () => { + const plugin = addText(['instructions', 'explanation']); + + const zhFile = { data: { lang: 'zh-CN' } }; + plugin(withChineseAST, zhFile); + + expect(zhFile.data.instructions).toBe( + '
\n

Instructions containing 汉字(hàn zì).

\n
' + ); + expect(zhFile.data.explanation).toBe( + '
\n

Wang Hua uses 请问(qǐng wèn) to politely start her question.

\n
' + ); + }); }); diff --git a/tools/challenge-parser/parser/plugins/add-video-question.js b/tools/challenge-parser/parser/plugins/add-video-question.js index a8360019a62..6e7706543be 100644 --- a/tools/challenge-parser/parser/plugins/add-video-question.js +++ b/tools/challenge-parser/parser/plugins/add-video-question.js @@ -2,14 +2,103 @@ const { root } = require('mdast-builder'); const find = require('unist-util-find'); const { getSection } = require('./utils/get-section'); const getAllBefore = require('./utils/before-heading'); -const mdastToHtml = require('./utils/mdast-to-html'); const { getParagraphContent } = require('./utils/get-paragraph-content'); const { splitOnThematicBreak } = require('./utils/split-on-thematic-break'); +const { createMdastToHtml } = require('./utils/i18n-stringify'); function plugin() { return transformer; function transformer(tree, file) { + const toHtml = createMdastToHtml(file.data.lang); + + function getQuestion(textNodes, answersNodes, solutionNodes) { + const text = toHtml(textNodes); + const answers = getAnswers(answersNodes); + const solution = getSolution(solutionNodes); + + if (!text) throw Error('text is missing from question'); + if (!answers) throw Error('answers are missing from question'); + if (!solution) throw Error('solution is missing from question'); + + return { text, answers, solution }; + } + + function getAnswers(answersNodes) { + const answerGroups = splitOnThematicBreak(answersNodes); + + return answerGroups.map(answerGroup => { + const answerTree = root(answerGroup); + const feedbackNodes = getSection(answerTree, '--feedback--'); + const audioIdNodes = getSection(answerTree, '--audio-id--'); + const hasFeedback = feedbackNodes.length > 0; + const hasAudioId = audioIdNodes.length > 0; + + if (hasFeedback || hasAudioId) { + let answerNodes; + + if (hasFeedback && hasAudioId) { + const feedbackHeading = find(answerTree, { + type: 'heading', + children: [{ type: 'text', value: '--feedback--' }] + }); + const audioIdHeading = find(answerTree, { + type: 'heading', + children: [{ type: 'text', value: '--audio-id--' }] + }); + + const feedbackIndex = answerTree.children.indexOf(feedbackHeading); + const audioIdIndex = answerTree.children.indexOf(audioIdHeading); + const firstMarker = + feedbackIndex < audioIdIndex ? '--feedback--' : '--audio-id--'; + answerNodes = getAllBefore(answerTree, firstMarker); + } else if (hasFeedback) { + answerNodes = getAllBefore(answerTree, '--feedback--'); + } else { + answerNodes = getAllBefore(answerTree, '--audio-id--'); + } + + if (answerNodes.length < 1) { + throw Error('Answer missing'); + } + + let extractedAudioId = null; + if (hasAudioId) { + const audioIdContent = getParagraphContent(audioIdNodes[0]); + if (audioIdContent && audioIdContent.trim()) { + extractedAudioId = audioIdContent.trim(); + } + } + + return { + answer: toHtml(answerNodes), + feedback: hasFeedback ? toHtml(feedbackNodes) : null, + audioId: extractedAudioId + }; + } + + return { + answer: toHtml(answerGroup), + feedback: null, + audioId: null + }; + }); + } + + function getSolution(solutionNodes) { + let solution; + try { + solution = Number(getParagraphContent(solutionNodes[0])); + if (Number.isNaN(solution)) throw Error('Not a number'); + if (solution < 1) throw Error('Not positive number'); + } catch (e) { + console.log(e); + throw Error('A video solution should be a positive integer'); + } + + return solution; + } + const allQuestionNodes = getSection(tree, '--questions--'); if (allQuestionNodes.length > 0) { @@ -41,88 +130,4 @@ function plugin() { } } -function getQuestion(textNodes, answersNodes, solutionNodes) { - const text = mdastToHtml(textNodes); - const answers = getAnswers(answersNodes); - const solution = getSolution(solutionNodes); - - if (!text) throw Error('text is missing from question'); - if (!answers) throw Error('answers are missing from question'); - if (!solution) throw Error('solution is missing from question'); - - return { text, answers, solution }; -} - -function getAnswers(answersNodes) { - const answerGroups = splitOnThematicBreak(answersNodes); - - return answerGroups.map(answerGroup => { - const answerTree = root(answerGroup); - - const feedbackNodes = getSection(answerTree, '--feedback--'); - const audioIdNodes = getSection(answerTree, '--audio-id--'); - const hasFeedback = feedbackNodes.length > 0; - const hasAudioId = audioIdNodes.length > 0; - - if (hasFeedback || hasAudioId) { - let answerNodes; - - if (hasFeedback && hasAudioId) { - const feedbackHeading = find(answerTree, { - type: 'heading', - children: [{ type: 'text', value: '--feedback--' }] - }); - const audioIdHeading = find(answerTree, { - type: 'heading', - children: [{ type: 'text', value: '--audio-id--' }] - }); - - const feedbackIndex = answerTree.children.indexOf(feedbackHeading); - const audioIdIndex = answerTree.children.indexOf(audioIdHeading); - const firstMarker = - feedbackIndex < audioIdIndex ? '--feedback--' : '--audio-id--'; - answerNodes = getAllBefore(answerTree, firstMarker); - } else if (hasFeedback) { - answerNodes = getAllBefore(answerTree, '--feedback--'); - } else { - answerNodes = getAllBefore(answerTree, '--audio-id--'); - } - - if (answerNodes.length < 1) { - throw Error('Answer missing'); - } - - let extractedAudioId = null; - if (hasAudioId) { - const audioIdContent = getParagraphContent(audioIdNodes[0]); - if (audioIdContent && audioIdContent.trim()) { - extractedAudioId = audioIdContent.trim(); - } - } - - return { - answer: mdastToHtml(answerNodes), - feedback: hasFeedback ? mdastToHtml(feedbackNodes) : null, - audioId: extractedAudioId - }; - } - - return { answer: mdastToHtml(answerGroup), feedback: null, audioId: null }; - }); -} - -function getSolution(solutionNodes) { - let solution; - try { - solution = Number(getParagraphContent(solutionNodes[0])); - if (Number.isNaN(solution)) throw Error('Not a number'); - if (solution < 1) throw Error('Not positive number'); - } catch (e) { - console.log(e); - throw Error('A video solution should be a positive integer'); - } - - return solution; -} - module.exports = plugin; diff --git a/tools/challenge-parser/parser/plugins/add-video-question.test.js b/tools/challenge-parser/parser/plugins/add-video-question.test.js index 44e062c84ce..a9d1f5651d7 100644 --- a/tools/challenge-parser/parser/plugins/add-video-question.test.js +++ b/tools/challenge-parser/parser/plugins/add-video-question.test.js @@ -7,7 +7,8 @@ describe('add-video-question plugin', () => { videoAST, multipleQuestionAST, videoOutOfOrderAST, - videoWithAudioAST; + videoWithAudioAST, + chineseVideoAST; const plugin = addVideoQuestion(); let file = { data: {} }; @@ -21,6 +22,7 @@ describe('add-video-question plugin', () => { 'with-video-question-out-of-order.md' ); videoWithAudioAST = await parseFixture('with-video-question-audio.md'); + chineseVideoAST = await parseFixture('with-chinese-mcq.md'); }); beforeEach(() => { @@ -107,7 +109,7 @@ describe('add-video-question plugin', () => { it('should NOT throw if there is no question', () => { expect.assertions(1); - expect(() => plugin(simpleAST)).not.toThrow(); + expect(() => plugin(simpleAST, file)).not.toThrow(); }); it('should extract audioId from answers when present', () => { @@ -139,4 +141,39 @@ describe('add-video-question plugin', () => { plugin(videoAST, file); expect(file.data).toMatchSnapshot(); }); + + it('should render Chinese inline code as ruby in question text, answers, and feedback', async () => { + const zhFile = { data: { lang: 'zh-CN' } }; + + plugin(chineseVideoAST, zhFile); + + const question = zhFile.data.questions[0]; + + expect(question.text).toBe( + '

Question text containing 汉字(hàn zì).

' + ); + + const answer1 = question.answers[0]; + expect(answer1.answer).toContain( + '你好(nǐ hǎo)' + ); + + const answer2 = question.answers[1]; + expect(answer2.answer).toContain( + '(qǐng)' + ); + expect(answer2.feedback).toBe( + '

(qǐng) is not correct.

' + ); + + const answer3 = question.answers[2]; + expect(answer3.answer).toContain( + '请问(qǐng wèn)' + ); + + const answer4 = question.answers[3]; + expect(answer4.answer).toContain( + '(wèn)' + ); + }); }); diff --git a/tools/challenge-parser/parser/plugins/utils/i18n-stringify.js b/tools/challenge-parser/parser/plugins/utils/i18n-stringify.js new file mode 100644 index 00000000000..0e10a036ff4 --- /dev/null +++ b/tools/challenge-parser/parser/plugins/utils/i18n-stringify.js @@ -0,0 +1,78 @@ +const mdastToHTML = require('./mdast-to-html'); + +/** + * Parses Chinese text in format: hanzi (pinyin) + * @param {string} text - Text in format: hanzi (pinyin) + * @returns {{ hanzi: string, pinyin: string } | null} Parsed hanzi and pinyin, or null if not matching + */ +function parseChinesePattern(text) { + const match = text.match(/^(.+?)\s*\((.+?)\)$/); + + if (!match) { + return null; + } + + return { + hanzi: match[1].trim(), + pinyin: match[2].trim() + }; +} + +/** + * Custom handler for Chinese inline code to render as ruby elements + * @param {object} state - The state object from mdast-util-to-hast + * @param {object} node - The inlineCode node + * @returns {object} Hast element node + */ +function chineseInlineCodeHandler(state, node) { + const parsed = parseChinesePattern(node.value); + + if (parsed) { + return { + type: 'element', + tagName: 'ruby', + properties: {}, + children: [ + { type: 'text', value: parsed.hanzi }, + { + type: 'element', + tagName: 'rp', + properties: {}, + children: [{ type: 'text', value: '(' }] + }, + { + type: 'element', + tagName: 'rt', + properties: {}, + children: [{ type: 'text', value: parsed.pinyin }] + }, + { + type: 'element', + tagName: 'rp', + properties: {}, + children: [{ type: 'text', value: ')' }] + } + ] + }; + } + + return { + type: 'element', + // TODO: change this to span + // https://github.com/freeCodeCamp/language-curricula/issues/22 + tagName: 'code', + properties: {}, + children: [{ type: 'text', value: node.value }] + }; +} + +const rubyOptions = { + handlers: { + inlineCode: chineseInlineCodeHandler + } +}; + +const createMdastToHtml = lang => + lang == 'zh-CN' ? x => mdastToHTML(x, rubyOptions) : mdastToHTML; + +module.exports = { parseChinesePattern, createMdastToHtml }; diff --git a/tools/challenge-parser/parser/plugins/utils/i18n-stringify.test.js b/tools/challenge-parser/parser/plugins/utils/i18n-stringify.test.js new file mode 100644 index 00000000000..64631528c58 --- /dev/null +++ b/tools/challenge-parser/parser/plugins/utils/i18n-stringify.test.js @@ -0,0 +1,129 @@ +import { describe, it, expect } from 'vitest'; +import { createMdastToHtml, parseChinesePattern } from './i18n-stringify'; + +describe('parseChinesePattern', () => { + it('should parse Chinese text with hanzi and pinyin', () => { + const result = parseChinesePattern('你好 (nǐ hǎo)'); + expect(result).toEqual({ + hanzi: '你好', + pinyin: 'nǐ hǎo' + }); + }); + + it('should handle text without spaces before parentheses', () => { + const result = parseChinesePattern('你好(nǐ hǎo)'); + expect(result).toEqual({ + hanzi: '你好', + pinyin: 'nǐ hǎo' + }); + }); + + it('should handle text with multiple spaces', () => { + const result = parseChinesePattern('你好 (nǐ hǎo)'); + expect(result).toEqual({ + hanzi: '你好', + pinyin: 'nǐ hǎo' + }); + }); + + it('should return null for text without parentheses', () => { + const result = parseChinesePattern('你好'); + expect(result).toBeNull(); + }); + + it('should return null for text with only opening parenthesis', () => { + const result = parseChinesePattern('你好 (nǐ hǎo'); + expect(result).toBeNull(); + }); + + it('should return null for empty string', () => { + const result = parseChinesePattern(''); + expect(result).toBeNull(); + }); +}); + +describe('createMdastToHtml', () => { + it('should render Chinese inline code as ruby when lang is zh-CN', () => { + const toHtml = createMdastToHtml('zh-CN'); + const nodes = [ + { + type: 'paragraph', + children: [ + { type: 'text', value: 'This is ' }, + { type: 'inlineCode', value: '请问 (qǐng wèn)' }, + { type: 'text', value: '.' } + ] + } + ]; + const actual = toHtml(nodes); + expect(actual).toBe( + '

This is 请问(qǐng wèn).

' + ); + }); + + it('should render Chinese inline code as ruby with or without space before parenthesis', () => { + const toHtml = createMdastToHtml('zh-CN'); + const nodesWithSpace = [ + { + type: 'paragraph', + children: [{ type: 'inlineCode', value: '你好 (nǐ hǎo)' }] + } + ]; + const nodesWithoutSpace = [ + { + type: 'paragraph', + children: [{ type: 'inlineCode', value: '你好(nǐ hǎo)' }] + } + ]; + const expected = + '

你好(nǐ hǎo)

'; + expect(toHtml(nodesWithSpace)).toBe(expected); + expect(toHtml(nodesWithoutSpace)).toBe(expected); + }); + + it('should handle multiple Chinese inline codes in one paragraph', () => { + const toHtml = createMdastToHtml('zh-CN'); + const nodes = [ + { + type: 'paragraph', + children: [ + { type: 'inlineCode', value: '你好 (nǐ hǎo)' }, + { type: 'text', value: ' and ' }, + { type: 'inlineCode', value: '再见 (zài jiàn)' } + ] + } + ]; + const actual = toHtml(nodes); + expect(actual).toBe( + '

你好(nǐ hǎo) and 再见(zài jiàn)

' + ); + }); + + it('should fallback to code element if pattern does not match', () => { + const toHtml = createMdastToHtml('zh-CN'); + const nodes = [ + { + type: 'paragraph', + children: [ + { type: 'inlineCode', value: '你好' }, + { type: 'text', value: ' and ' }, + { type: 'inlineCode', value: 'nǐ hǎo' } + ] + } + ]; + const actual = toHtml(nodes, { lang: 'zh-CN' }); + expect(actual).toBe('

你好 and nǐ hǎo

'); + }); + + it('should render as regular code when lang is not zh-CN', () => { + const toHtml = createMdastToHtml('zh'); + const nodes = [ + { + type: 'paragraph', + children: [{ type: 'inlineCode', value: '请问 (qǐng wèn)' }] + } + ]; + const actual = toHtml(nodes); + expect(actual).toBe('

请问 (qǐng wèn)

'); + }); +}); diff --git a/tools/challenge-parser/parser/plugins/utils/mdast-to-html.js b/tools/challenge-parser/parser/plugins/utils/mdast-to-html.js index a4034d43f4f..96c3ae18b78 100644 --- a/tools/challenge-parser/parser/plugins/utils/mdast-to-html.js +++ b/tools/challenge-parser/parser/plugins/utils/mdast-to-html.js @@ -2,14 +2,17 @@ const hastToHTML = require('hast-util-to-html'); const { root } = require('mdast-builder'); const mdastToHast = require('mdast-util-to-hast'); -function mdastToHTML(nodes) { +function mdastToHTML(nodes, hastOptions = {}) { if (!Array.isArray(nodes)) throw Error('mdastToHTML expects an array argument'); // - the 'nodes' are children, so first need embedding in a parent - return hastToHTML(mdastToHast(root(nodes), { allowDangerousHtml: true }), { - allowDangerousHtml: true - }); + return hastToHTML( + mdastToHast(root(nodes), { allowDangerousHtml: true, ...hastOptions }), + { + allowDangerousHtml: true + } + ); } module.exports = mdastToHTML; From 69eb4e400340073ccabeec26b3eb87d2fde56ac3 Mon Sep 17 00:00:00 2001 From: Stella <148345190+st3lll4@users.noreply.github.com> Date: Mon, 10 Nov 2025 21:30:25 +0200 Subject: [PATCH 08/21] fix(curriculum): guide users to enable the interactive editor (#63328) --- .../672a55fbc2d95a9453151caf.md | 6 +++--- .../672aa8d65995be62ef1c7515.md | 2 +- .../670803abcb3e980233da4768.md | 4 ++-- .../6708382cf088b216580a9ff1.md | 6 +++--- .../67083868d5fdcb17bf8c14bd.md | 9 +++++---- .../670838b10ee87a18e5faff62.md | 2 +- .../672985445d7da807c6b4f406.md | 2 +- .../672990ecf71a852804ababe7.md | 8 ++++---- .../672a54bc58319c8fe6f78ad4.md | 4 ++-- .../672a551975938a916c74802c.md | 2 +- .../6708143cab2b583ecd3324f5.md | 10 +++++----- .../672995bda6c67e369aaf8588.md | 4 ++-- .../672bafe4ef812b78696b0e27.md | 6 +++--- .../672baff13bc5b3789691c75c.md | 4 ++-- .../672baffc684be178dd02fa06.md | 2 +- .../672bb009952c7a7904a750cb.md | 2 +- .../672bb015cfc889794359c4e0.md | 2 +- .../672bb02009ffc0797ca567ab.md | 2 +- .../672bb02ecb230779bbbaccd9.md | 2 +- .../672bb03999f39379f67d8972.md | 2 +- .../lecture-what-is-css/672aa5e1f8b935577acfb2b9.md | 4 ++-- .../lecture-what-is-css/672acbbe2891564c4e316164.md | 4 ++-- .../67168278ac6df6a799555db5.md | 10 +++++----- .../672aa7f7284b235f46f7d4e9.md | 2 +- .../6729974ec29be33cb00eb54d.md | 8 ++++---- .../672a4cd3d59756726657efb8.md | 5 +++-- .../672a4cf959443073a6774908.md | 6 +++--- .../6716825aff3434a71fdc3e99.md | 2 +- .../6716744f7245947a3dd60009.md | 2 +- .../67168323932391a9ee0d3a9e.md | 10 +++++----- .../6716743531fc9a797351c21e.md | 4 ++-- .../671682b3983489a819507553.md | 2 +- .../672bb83c3a9906945536cff2.md | 4 ++-- .../672995ffdfd2f337f5f215f8.md | 6 +++--- 34 files changed, 76 insertions(+), 74 deletions(-) diff --git a/curriculum/challenges/english/blocks/lecture-accessible-media-elements/672a55fbc2d95a9453151caf.md b/curriculum/challenges/english/blocks/lecture-accessible-media-elements/672a55fbc2d95a9453151caf.md index 894e0675e7e..6f0a45e198a 100644 --- a/curriculum/challenges/english/blocks/lecture-accessible-media-elements/672a55fbc2d95a9453151caf.md +++ b/curriculum/challenges/english/blocks/lecture-accessible-media-elements/672a55fbc2d95a9453151caf.md @@ -28,7 +28,7 @@ The value of `tabindex` determines how the element behaves in keyboard navigatio Tabbing will move focus from the `button` to the `div`, then to the link, following their order in the HTML. -Click anywhere in the whitespace of the preview window. Then use the `Tab` key to see the focus move between the different elements. +Click anywhere in the whitespace of the preview window. Then use the `Tab` key to see the focus move between the different elements. To interact with the example, you will need to enable the interactive editor. :::interactive_editor @@ -62,7 +62,7 @@ Custom positive values are sometimes used in complex widgets, such as a toolbar `accesskey` is another attribute you can use to make your web project keyboard accessible. It allows you to define a key that focuses on or activates a particular element. -Here is an interactive example you can try out following the suggestions below: +Here is an interactive example you can try out following the suggestions below (enable the interactive editor first): - `accesskey="s"` assigns the key `S` to the `Save` button. On most browsers, pressing `ALT + S` (on Windows) and `CTRL + Option + S` (on Mac) will activate this button. - `accesskey="c"` sets the key `C` to the `Cancel` button, allowing users to activate it using `ALT + C` (Windows) and `CTRL + Option + C` (Mac). @@ -82,7 +82,7 @@ Please note that the exact key combination to activate the accesskey might vary Another way to make the keyboard accessible in your apps is to make sure you provide clear focus indicators. If you feel the default browser focus indicator is not enough, you can override it by targeting the focus state of the element. -Here is an example of styling the focus state for a `button` element. Click anywhere in the whitespace of the preview window followed by pressing the `Tab` key to focus the button. +Here is an example of styling the focus state for a `button` element. Click anywhere in the whitespace of the preview window followed by pressing the `Tab` key to focus the button. To interact with the example, you will need to enable the interactive editor. :::interactive_editor diff --git a/curriculum/challenges/english/blocks/lecture-animations-and-accessibility/672aa8d65995be62ef1c7515.md b/curriculum/challenges/english/blocks/lecture-animations-and-accessibility/672aa8d65995be62ef1c7515.md index abdf07ee28c..ca9ff5a1def 100644 --- a/curriculum/challenges/english/blocks/lecture-animations-and-accessibility/672aa8d65995be62ef1c7515.md +++ b/curriculum/challenges/english/blocks/lecture-animations-and-accessibility/672aa8d65995be62ef1c7515.md @@ -30,7 +30,7 @@ This `@keyframes` rule, named `slide-in`, defines an animation that moves an ele The `translateX` function in your `@keyframes` animation is controlling the horizontal position of an element as it animates into view. -To apply this animation to an element, you use the `animation` property. This example also repeats the animation infinitely so you can see it in action: +To apply this animation to an element, you use the `animation` property. This example also repeats the animation infinitely so you can see it in action (you will need to enable the interactive editor to see previews): :::interactive_editor diff --git a/curriculum/challenges/english/blocks/lecture-html-fundamentals/670803abcb3e980233da4768.md b/curriculum/challenges/english/blocks/lecture-html-fundamentals/670803abcb3e980233da4768.md index 4eaa786e29f..41858e9d5c8 100644 --- a/curriculum/challenges/english/blocks/lecture-html-fundamentals/670803abcb3e980233da4768.md +++ b/curriculum/challenges/english/blocks/lecture-html-fundamentals/670803abcb3e980233da4768.md @@ -9,7 +9,7 @@ dashedName: what-are-div-elements The `div` element is used as a container to group other elements. -Here is an example of a `div` element. Add another paragraph element inside of the `div` element and see the changes in the preview window. +Here is an example of a `div` element. Add another paragraph element inside of the `div` element and see the changes in the preview window. To see the previews, you will need to enable the interactive editor. :::interactive_editor @@ -28,7 +28,7 @@ Even though the `div` element is commonly used in real world codebases, you shou For example, if you wanted divide up your content into sections, then the `section` element would be more appropriate than a `div` element. -Add another `section` element below the first one. Then inside of the `section` element, a `h2` and `p` elements. You can use whatever text you like and you will see the changes in the preview window. +Add another `section` element below the first one. Then inside of the `section` element, a `h2` and `p` elements. You can use whatever text you like and you will see the changes in the preview window. To interact with the example, you will need to enable the interactive editor. :::interactive_editor diff --git a/curriculum/challenges/english/blocks/lecture-html-fundamentals/6708382cf088b216580a9ff1.md b/curriculum/challenges/english/blocks/lecture-html-fundamentals/6708382cf088b216580a9ff1.md index 582886d652a..ed09f01320c 100644 --- a/curriculum/challenges/english/blocks/lecture-html-fundamentals/6708382cf088b216580a9ff1.md +++ b/curriculum/challenges/english/blocks/lecture-html-fundamentals/6708382cf088b216580a9ff1.md @@ -11,7 +11,7 @@ The `id` attribute adds a unique identifier to an HTML element. Here is an example of an `h1` element with an `id` of `title`. -Below the `h1` element, add an `h2` element with an `id` set to `"subtitle"`. You can write whatever text you like for the `h2` and you will see the changes in the preview window. +Below the `h1` element, add an `h2` element with an `id` set to `"subtitle"`. You can write whatever text you like for the `h2` and you will see the changes in the preview window. To interact with the example, you will need to enable the interactive editor. :::interactive_editor @@ -24,7 +24,7 @@ Below the `h1` element, add an `h2` element with an `id` set to `"subtitle"`. Yo You can reference the `id` name of `title` within your JavaScript or CSS. Here's a CSS example referencing the `id` of `title` to change the text `color` to `red`. -**NOTE**: Some CSS has been provided for you in this interactive example. Don't worry about trying to understand the CSS code because you will learn more about that in future lessons. But if you want to see the text color change to blue, click on the `styles.css` tab in the editor and change the `color: red;` to `color: blue;`. +**NOTE**: Some CSS has been provided for you in this interactive example. Don't worry about trying to understand the CSS code because you will learn more about that in future lessons. But if you want to see the text color change to blue, enable the interactive editor, click on the `styles.css` tab and change the `color: red;` to `color: blue;`. :::interactive_editor @@ -77,7 +77,7 @@ If you wanted to add multiple class names to an element, you can do so by separa Here is an another example of applying multiple classes to multiple `div` elements. -**NOTE**: Some CSS has been provided for you in this interactive example. Don't worry about trying to understand the CSS code because you will learn more about that in future lessons. But if you wanted to change the color of the first and third boxes, click on the `styles.css` tab and change the `background-color: red;` to `background-color: black;`. +**NOTE**: Some CSS has been provided for you in this interactive example. Don't worry about trying to understand the CSS code because you will learn more about that in future lessons. But if you wanted to change the color of the first and third boxes, enable the interactive editor and click on the `styles.css` tab and change the `background-color: red;` to `background-color: black;`. :::interactive_editor diff --git a/curriculum/challenges/english/blocks/lecture-html-fundamentals/67083868d5fdcb17bf8c14bd.md b/curriculum/challenges/english/blocks/lecture-html-fundamentals/67083868d5fdcb17bf8c14bd.md index ba7f757a044..79dbf9c5b14 100644 --- a/curriculum/challenges/english/blocks/lecture-html-fundamentals/67083868d5fdcb17bf8c14bd.md +++ b/curriculum/challenges/english/blocks/lecture-html-fundamentals/67083868d5fdcb17bf8c14bd.md @@ -9,7 +9,8 @@ dashedName: what-are-html-entities An HTML entity, or character reference, is a set of characters used to represent a reserved character in HTML. -Let's say you wanted to display the text `This is an element` on the screen. If you use the code currently in the editor, it won't display the desired result. Even if you added `src` and `alt` attributes to the example, it would show an image in the middle of the paragraph. Not the desired result. +Let's say you wanted to display the text `This is an element` on the screen. If you use the code currently in the editor, it won't display the desired result. Even if you added `src` and `alt` attributes to the example, it would show an image in the middle of the paragraph. Not the desired result. To interact with the example, you will need to enable the interactive editor. + :::interactive_editor @@ -23,7 +24,7 @@ When the HTML parser sees the less than (`<`) symbol followed by an HTML tag nam To fix this issue, you can use HTML entities. Here is an updated example using the correct HTML entities for the less (`<`) than and greater than (`>`) symbols. Now you should see `This is an element` on the screen. -Try adding a `<p>learning is fun</p>` below the paragraph element. You should see `

learning is fun

` on the screen. +Enable the interactive editor and try adding a `<p>learning is fun</p>` below the paragraph element. You should see `

learning is fun

` on the screen. :::interactive_editor @@ -40,7 +41,7 @@ Another type of character reference would be the decimal numeric reference. This Here is an example of using the decimal numeric reference for the less than symbol. -Change the code in the editor to see different symbols. You can use `©` for the copyright symbol and `®` for the trademark symbol. +Enable the interactive editor and change the code to see different symbols. You can use `©` for the copyright symbol and `®` for the trademark symbol. :::interactive_editor @@ -54,7 +55,7 @@ The last type of character reference would be the hexadecimal numeric reference. Here is an example of using the hexadecimal numeric reference for the less than symbol. -Change the code in the editor to see different symbols. You can use `€` for the euro symbol and `Ω` for the Greek capital letter Omega symbol. +Enable the interactive editor and change the code to see different symbols. You can use `€` for the euro symbol and `Ω` for the Greek capital letter Omega symbol. :::interactive_editor diff --git a/curriculum/challenges/english/blocks/lecture-html-fundamentals/670838b10ee87a18e5faff62.md b/curriculum/challenges/english/blocks/lecture-html-fundamentals/670838b10ee87a18e5faff62.md index 7a8cfe15ee4..418c35a9f44 100644 --- a/curriculum/challenges/english/blocks/lecture-html-fundamentals/670838b10ee87a18e5faff62.md +++ b/curriculum/challenges/english/blocks/lecture-html-fundamentals/670838b10ee87a18e5faff62.md @@ -9,7 +9,7 @@ dashedName: what-is-the-role-of-the-script-element-in-html The `script` element is used to embed executable code. Most developers will use this to execute JavaScript code. JavaScript is used to add interactivity to your web pages. Common examples of using JavaScript include interactive games, image sliders, and dynamic forms that validate user input in real-time. -Here is an example of using the `script` element in an HTML document. Remove the `//` from in front of the `alert("Welcome to freeCodeCamp");` and you should see an alert pop up. +Here is an example of using the `script` element in an HTML document. Remove the `//` from in front of the `alert("Welcome to freeCodeCamp");` and you should see an alert pop up. To see the previews, you will need to enable the interactive editor. :::interactive_editor diff --git a/curriculum/challenges/english/blocks/lecture-importance-of-semantic-html/672985445d7da807c6b4f406.md b/curriculum/challenges/english/blocks/lecture-importance-of-semantic-html/672985445d7da807c6b4f406.md index eec7f06ee9b..6a278054f8b 100644 --- a/curriculum/challenges/english/blocks/lecture-importance-of-semantic-html/672985445d7da807c6b4f406.md +++ b/curriculum/challenges/english/blocks/lecture-importance-of-semantic-html/672985445d7da807c6b4f406.md @@ -27,7 +27,7 @@ Following the pattern, your `h3` element should always come after an `h2` elemen But this code would not be correct, because `h3` comes before `h2`. -Move the `h2` element above the `h3` so it is semantically correct. +Move the `h2` element above the `h3` so it is semantically correct. To interact with the code, you will need to enable the interactive editor. :::interactive_editor diff --git a/curriculum/challenges/english/blocks/lecture-importance-of-semantic-html/672990ecf71a852804ababe7.md b/curriculum/challenges/english/blocks/lecture-importance-of-semantic-html/672990ecf71a852804ababe7.md index dabe2d1a67f..28dea5e4268 100644 --- a/curriculum/challenges/english/blocks/lecture-importance-of-semantic-html/672990ecf71a852804ababe7.md +++ b/curriculum/challenges/english/blocks/lecture-importance-of-semantic-html/672990ecf71a852804ababe7.md @@ -13,7 +13,7 @@ Many presentational HTML elements are deprecated, which means that they are outd The `font` element is a deprecated element used to set the font size and color of the text. Here's an example of a `font` element. -Change the size from 5 to 7 to see the font increase. +Enable the interactive editor and change the size from 5 to 7 to see the font increase. :::interactive_editor @@ -29,7 +29,7 @@ While this element still works, you should not use it because the font size and The `center` element is another deprecated element that is used to center the content horizontally within its container. Here's an example of the `center` element that contains text and a paragraph element. -Add `center` tags around the `

Another example text.

` to see it centered on the page. +Enable the interactive editor and add `center` tags around the `

Another example text.

` to see it centered on the page. :::interactive_editor @@ -46,7 +46,7 @@ Add `center` tags around the `

Another example text.

` to see it centered o And next, we have the `big` element. This is another deprecated presentational HTML element that makes the enclosed text one level bigger than its surrounding text. Here we have an example that defines a paragraph with two parts. -Add `big` tags around the `Some other text` and see the changes in the preview window. +Enable the interactive editor and add `big` tags around the `Some other text` and see the changes in the preview window. :::interactive_editor @@ -77,7 +77,7 @@ Examples of semantic HTML elements include: This is an example of a `header` element that contains a navigation section element. -Add a `Products` inside of the `nav` and see the changes in the preview window. +Enable the interactive editor and add a `Products` inside of the `nav` and see the changes in the preview window. :::interactive_editor diff --git a/curriculum/challenges/english/blocks/lecture-introduction-to-aria/672a54bc58319c8fe6f78ad4.md b/curriculum/challenges/english/blocks/lecture-introduction-to-aria/672a54bc58319c8fe6f78ad4.md index 7cc687cee5a..b6e893a2fb7 100644 --- a/curriculum/challenges/english/blocks/lecture-introduction-to-aria/672a54bc58319c8fe6f78ad4.md +++ b/curriculum/challenges/english/blocks/lecture-introduction-to-aria/672a54bc58319c8fe6f78ad4.md @@ -20,11 +20,11 @@ It is important to remember that `aria-hidden` only hides content from assistive You should never use `aria-hidden` to hide an element that is focusable with the keyboard. The `aria-hidden` attribute only removes the element from the accessibility tree. It does not remove it from the DOM. Thus, it will still be possible for screen reader users to tab to the element, but their screen reader will not announce the element, effectively causing them to focus on "nothing". -Here's an example where we hide an icon from the accessibility tree by adding the `aria-hidden` attribute with a value of `true`. +Here's an example where we hide an icon from the accessibility tree by adding the `aria-hidden` attribute with a value of `true`. We only keep the text exposed to assistive technologies to avoid any confusion that may arise from the redundancy of having both an icon and text for the same purpose. -**NOTE**: This interactive example includes the Font Awesome CDN so you can see the gear icon displayed in the preview window. +**NOTE**: This interactive example includes the Font Awesome CDN so you can see the gear icon displayed in the preview window. To see the previews, you will need to enable the interactive editor. :::interactive_editor diff --git a/curriculum/challenges/english/blocks/lecture-introduction-to-aria/672a551975938a916c74802c.md b/curriculum/challenges/english/blocks/lecture-introduction-to-aria/672a551975938a916c74802c.md index 4568fe4c92c..6d66d62c07b 100644 --- a/curriculum/challenges/english/blocks/lecture-introduction-to-aria/672a551975938a916c74802c.md +++ b/curriculum/challenges/english/blocks/lecture-introduction-to-aria/672a551975938a916c74802c.md @@ -13,7 +13,7 @@ The most common use for `aria-describedby` is to associate instructions and erro Let's take a look at a few examples to understand how it works. In this first example, we have a `form` element that accepts a password. -Type a few characters into the password input field and you will see that the password is masked in the preview window. You should also see that the `password-help` text remains red until you provide 8 or more characters into the input. +Enable the interactive editor and type a few characters into the password input field. You will see that the password is masked in the preview window. You should also see that the `password-help` text remains red until you provide 8 or more characters into the input. NOTE: This interactive example is using CSS and JavaScript to dynamically update the color for the `password-help` text. Don't worry about trying to understand the JavaScript code because you will learn JavaScript in future modules. diff --git a/curriculum/challenges/english/blocks/lecture-understanding-html-attributes/6708143cab2b583ecd3324f5.md b/curriculum/challenges/english/blocks/lecture-understanding-html-attributes/6708143cab2b583ecd3324f5.md index a4d42065af9..6230244620a 100644 --- a/curriculum/challenges/english/blocks/lecture-understanding-html-attributes/6708143cab2b583ecd3324f5.md +++ b/curriculum/challenges/english/blocks/lecture-understanding-html-attributes/6708143cab2b583ecd3324f5.md @@ -17,7 +17,7 @@ The attribute name is followed by an equal sign (`=`) and a value in quotes. The This first example uses the `href` and `target` attributes. The `href` attribute specifies the URL of a link and the `target` attribute specifies where to open the link. -Change the `href="https://www.freecodecamp.org/news/"` to `href="https://www.freecodecamp.org"`. Now when you click on the link in the interactive editor, you will see the freeCodeCamp homepage in a new browser tab. +Enable the interactive editor and change the `href="https://www.freecodecamp.org/news/"` to `href="https://www.freecodecamp.org"`. Now when you click on the link in the interactive editor, you will see the freeCodeCamp homepage in a new browser tab. :::interactive_editor @@ -31,7 +31,7 @@ Without the `href` attribute, the link would not work because there would be no Other common attributes are the `src`, and `alt`, or alternative, attribute - which is used to specify the source of an image and provide alternative descriptive text for the image, respectively. -Change the `src="https://cdn.freecodecamp.org/curriculum/cat-photo-app/cats.jpg"` to `src="https://cdn.freecodecamp.org/curriculum/cat-photo-app/running-cats.jpg"`. Then change the `alt="Two tabby kittens sleeping together on a couch."` to `alt="Two cats running in the dirt."`. +Enable the interactive editor and change the `src="https://cdn.freecodecamp.org/curriculum/cat-photo-app/cats.jpg"` to `src="https://cdn.freecodecamp.org/curriculum/cat-photo-app/running-cats.jpg"`. Then change the `alt="Two tabby kittens sleeping together on a couch."` to `alt="Two cats running in the dirt."`. :::interactive_editor @@ -45,7 +45,7 @@ Similar to the `href` attribute, the `src` attribute is required because it spec Some attributes are a little unique with their syntax like the `checked` attribute. -Try clicking on the checkbox in the preview window to see it alternate between a checked and unchecked state. +Enable the interactive editor and try clicking on the checkbox in the preview window to see it alternate between a checked and unchecked state. :::interactive_editor @@ -59,7 +59,7 @@ In the following example, we have an `input` element with the `type` attribute s The `checked` attribute is used to specify that the checkbox should be checked by default. The `checked` attribute does not require a value. If it is present, the checkbox will be checked by default. If the attribute is not present, the checkbox will be unchecked. This is known as a boolean attribute. You will learn more about booleans in general when you get to the JavaScript section. -Remove the `checked` attribute from the `input` in the interactive editor, and you will see that the checkbox is no longer checked by default. +Enable the interactive editor and try remove the `checked` attribute from the `input`. You will see that the checkbox is no longer checked by default. :::interactive_editor @@ -71,7 +71,7 @@ Remove the `checked` attribute from the `input` in the interactive editor, and y There are several common boolean attributes you will encounter in HTML, such as `disabled`, `readonly`, and `required`. These attributes are used to specify the state of an element, such as whether it is disabled, read-only, or required. -Here is an example of a text `input` element that is disabled by default. Try clicking on the `input` element in the preview window. Now remove the `disabled` attribute from the `input` element and you will see that the `input` is no longer disabled by default. You should now be able to click on it and type inside the field. +Here is an example of a text `input` element that is disabled by default. Enable the interactive editor and try clicking on the `input` element in the preview window. Now remove the `disabled` attribute from the `input` element and you will see that the `input` is no longer disabled by default. You should now be able to click on it and type inside the field. :::interactive_editor diff --git a/curriculum/challenges/english/blocks/lecture-understanding-nuanced-semantic-elements/672995bda6c67e369aaf8588.md b/curriculum/challenges/english/blocks/lecture-understanding-nuanced-semantic-elements/672995bda6c67e369aaf8588.md index fd657cd013c..34dfafed213 100644 --- a/curriculum/challenges/english/blocks/lecture-understanding-nuanced-semantic-elements/672995bda6c67e369aaf8588.md +++ b/curriculum/challenges/english/blocks/lecture-understanding-nuanced-semantic-elements/672995bda6c67e369aaf8588.md @@ -11,7 +11,7 @@ Description lists are perfect for presenting terms and definitions in an organiz This is an example of a description list in HTML with two terms and their corresponding details. -Uncomment the code to see the new detail item show up in the preview window. +Enable the interactive editor and try uncommenting the code to see the new detail item show up in the preview window. :::interactive_editor @@ -40,7 +40,7 @@ In the browser, you would see each term followed by its corresponding descriptio But description lists are not limited to only terms and definitions. They are much more versatile than that. Here we have a recipe with two ingredients. -Uncomment the code to see the new detail item show up in the preview window. +Enable the interactive editor and try uncommenting the code to see the new detail item show up in the preview window. :::interactive_editor diff --git a/curriculum/challenges/english/blocks/lecture-user-centered-design/672bafe4ef812b78696b0e27.md b/curriculum/challenges/english/blocks/lecture-user-centered-design/672bafe4ef812b78696b0e27.md index 62c0a000746..2d4630a9d3a 100644 --- a/curriculum/challenges/english/blocks/lecture-user-centered-design/672bafe4ef812b78696b0e27.md +++ b/curriculum/challenges/english/blocks/lecture-user-centered-design/672bafe4ef812b78696b0e27.md @@ -11,7 +11,7 @@ dashedName: what-are-best-practices-for-designing-a-dark-mode-feature Dark mode is a special feature on web applications where you can change the default light color scheme to a dark color scheme. This helps reduce eye strain and improve readability in low-light conditions. When designing your dark mode features, it is important to understand best practices to ensure that your dark mode feature is effective and user-friendly. -Click on the `Toggle Dark Mode` button in the example below to see how dark mode works. +Enable the interactive editor and click on the `Toggle Dark Mode` button in the example below to see how dark mode works. :::interactive_editor @@ -55,7 +55,7 @@ document.getElementById('theme-toggle').addEventListener('click', () => { ::: -The first consideration is the avoidance of saturated colors in dark mode. Saturated colors are colors that are bright and intense. For example, a bright magenta button against a dark gray background can be too intense and cause eye strain. Instead, you should use desaturated colors in dark mode. Desaturated colors are colors that are less intense, have a lower saturation level, and more comfortable to look at in dark mode. +The first consideration is the avoidance of saturated colors in dark mode. Saturated colors are colors that are bright and intense. For example, a bright magenta button against a dark gray background can be too intense and cause eye strain. Instead, you should use desaturated colors in dark mode. Desaturated colors are colors that are less intense, have a lower saturation level, and more comfortable to look at in dark mode. To see the previews, you will need to enable the interactive editor. :::interactive_editor @@ -133,7 +133,7 @@ document.getElementById('theme-toggle').addEventListener('click', () => { ::: -Another consideration with dark mode is the use of pure black backgrounds with white text. While this high contrast can be effective, it can also be too harsh on the eyes. Instead, consider using a dark gray background with light gray text for a softer contrast. Text will be easier on the eyes and more comfortable to read in dark mode. +Another consideration with dark mode is the use of pure black backgrounds with white text. While this high contrast can be effective, it can also be too harsh on the eyes. Instead, consider using a dark gray background with light gray text for a softer contrast. Text will be easier on the eyes and more comfortable to read in dark mode. To see the previews, you will need to enable the interactive editor. :::interactive_editor diff --git a/curriculum/challenges/english/blocks/lecture-user-centered-design/672baff13bc5b3789691c75c.md b/curriculum/challenges/english/blocks/lecture-user-centered-design/672baff13bc5b3789691c75c.md index bf2b7527be9..b01d156abdd 100644 --- a/curriculum/challenges/english/blocks/lecture-user-centered-design/672baff13bc5b3789691c75c.md +++ b/curriculum/challenges/english/blocks/lecture-user-centered-design/672baff13bc5b3789691c75c.md @@ -7,7 +7,7 @@ dashedName: what-are-best-practices-for-designing-breadcrumbs # --interactive-- -**NOTE**: Some of the interactive examples might use CSS that you haven't learned yet. Don't worry about trying to understand all of the code. The goal of the examples is to show you previews for these design concepts so you better understand how things work. +**NOTE**: Some of the interactive examples might use CSS that you haven't learned yet. Don't worry about trying to understand all of the code. The goal of the examples is to show you previews for these design concepts so you better understand how things work. To see the previews, you will need to enable the interactive editor. When it comes to web design, there are many types of navigational aids you can use. Examples include top navigation bars, sidebars, and footers. But if your site is on the more complex side with deeper levels of navigation, you might want to consider using breadcrumbs. @@ -57,7 +57,7 @@ When it comes to designing breadcrumbs, there are a few considerations to keep i ::: -The second consideration is the placement of the breadcrumbs. Breadcrumbs are typically placed at the top of the page, either above or below the main navigation bar. Users shouldn't have to struggle to find the breadcrumbs, so make sure they are visible and easy to locate. +The second consideration is the placement of the breadcrumbs. Breadcrumbs are typically placed at the top of the page, either above or below the main navigation bar. Users shouldn't have to struggle to find the breadcrumbs, so make sure they are visible and easy to locate. :::interactive_editor diff --git a/curriculum/challenges/english/blocks/lecture-user-centered-design/672baffc684be178dd02fa06.md b/curriculum/challenges/english/blocks/lecture-user-centered-design/672baffc684be178dd02fa06.md index f26a31a84f6..a9c727add3c 100644 --- a/curriculum/challenges/english/blocks/lecture-user-centered-design/672baffc684be178dd02fa06.md +++ b/curriculum/challenges/english/blocks/lecture-user-centered-design/672baffc684be178dd02fa06.md @@ -7,7 +7,7 @@ dashedName: what-are-best-practices-for-designing-cards # --interactive-- -**NOTE**: Some of the interactive examples might use CSS that you haven't learned yet. Don't worry about trying to understand all of the code. The goal of the examples is to show you previews for these design concepts so you better understand how things work. +**NOTE**: Some of the interactive examples might use CSS that you haven't learned yet. Don't worry about trying to understand all of the code. The goal of the examples is to show you previews for these design concepts so you better understand how things work. To see the previews, you will need to enable the interactive editor. Card components are a very common occurrence in e-commerce, social media, and news sites. They are used to help display information in a structured way. When you are designing your cards, it is important to understand best practices so your users can easily understand the information you are trying to convey. diff --git a/curriculum/challenges/english/blocks/lecture-user-centered-design/672bb009952c7a7904a750cb.md b/curriculum/challenges/english/blocks/lecture-user-centered-design/672bb009952c7a7904a750cb.md index 362fc8e08b6..36fc60559dc 100644 --- a/curriculum/challenges/english/blocks/lecture-user-centered-design/672bb009952c7a7904a750cb.md +++ b/curriculum/challenges/english/blocks/lecture-user-centered-design/672bb009952c7a7904a750cb.md @@ -7,7 +7,7 @@ dashedName: what-are-best-practices-for-designing-infinite-scrolls # --interactive-- -**NOTE**: Some of the interactive examples might use CSS and JavaScript that you haven't learned yet. Don't worry about trying to understand all of the code. The goal of the examples is to show you previews for these design concepts so you better understand how things work. +**NOTE**: Some of the interactive examples might use CSS and JavaScript that you haven't learned yet. Don't worry about trying to understand all of the code. The goal of the examples is to show you previews for these design concepts so you better understand how things work. To see the previews, you will need to enable the interactive editor. Infinite scrolling is a design pattern that loads more content as the user scrolls down the page. Oftentimes, this is used on social media sites like Twitter. For example, if you are logged in and want to see more tweets, you can scroll down and more tweets will load. This is an example of infinite scrolling. diff --git a/curriculum/challenges/english/blocks/lecture-user-centered-design/672bb015cfc889794359c4e0.md b/curriculum/challenges/english/blocks/lecture-user-centered-design/672bb015cfc889794359c4e0.md index 7877a463cc5..0afcd887156 100644 --- a/curriculum/challenges/english/blocks/lecture-user-centered-design/672bb015cfc889794359c4e0.md +++ b/curriculum/challenges/english/blocks/lecture-user-centered-design/672bb015cfc889794359c4e0.md @@ -7,7 +7,7 @@ dashedName: what-are-best-practices-for-designing-modal-dialogs # --interactive-- -**NOTE**: Some of the interactive examples might use CSS and JavaScript that you haven't learned yet. Don't worry about trying to understand all of the code. The goal of the examples is to show you previews for these design concepts so you better understand how things work. +**NOTE**: Some of the interactive examples might use CSS and JavaScript that you haven't learned yet. Don't worry about trying to understand all of the code. The goal of the examples is to show you previews for these design concepts so you better understand how things work. To see the previews, you will need to enable the interactive editor. What is a modal? It's the type of pop-up that a website might show you on top of their content. HTML has a `dialog` element that you can use to create modals. diff --git a/curriculum/challenges/english/blocks/lecture-user-centered-design/672bb02009ffc0797ca567ab.md b/curriculum/challenges/english/blocks/lecture-user-centered-design/672bb02009ffc0797ca567ab.md index 7f377ac9167..a330b4c59a2 100644 --- a/curriculum/challenges/english/blocks/lecture-user-centered-design/672bb02009ffc0797ca567ab.md +++ b/curriculum/challenges/english/blocks/lecture-user-centered-design/672bb02009ffc0797ca567ab.md @@ -7,7 +7,7 @@ dashedName: what-are-best-practices-for-progress-indication-on-forms-registratio # --interactive-- -**NOTE**: Some of the interactive examples might use CSS and JavaScript that you haven't learned yet. Don't worry about trying to understand all of the code. The goal of the examples is to show you previews for these design concepts so you better understand how things work. +**NOTE**: Some of the interactive examples might use CSS and JavaScript that you haven't learned yet. Don't worry about trying to understand all of the code. The goal of the examples is to show you previews for these design concepts so you better understand how things work. To see the previews, you will need to enable the interactive editor. Progress indication is a way to show users how far they are in a process. It can be used in forms, registration, and setup processes. The goal is to help users understand where they are in the process and how much more they need to do. diff --git a/curriculum/challenges/english/blocks/lecture-user-centered-design/672bb02ecb230779bbbaccd9.md b/curriculum/challenges/english/blocks/lecture-user-centered-design/672bb02ecb230779bbbaccd9.md index 3e00e2dcc87..0bd9db8200c 100644 --- a/curriculum/challenges/english/blocks/lecture-user-centered-design/672bb02ecb230779bbbaccd9.md +++ b/curriculum/challenges/english/blocks/lecture-user-centered-design/672bb02ecb230779bbbaccd9.md @@ -7,7 +7,7 @@ dashedName: what-are-best-practices-for-designing-shopping-carts # --interactive-- -**NOTE**: Some of the interactive examples might use CSS that you haven't learned yet. Don't worry about trying to understand all of the code. The goal of the examples is to show you previews for these design concepts so you better understand how things work. +**NOTE**: Some of the interactive examples might use CSS that you haven't learned yet. Don't worry about trying to understand all of the code. The goal of the examples is to show you previews for these design concepts so you better understand how things work. To see the previews, you will need to enable the interactive editor. There are thousands of e-commerce websites on the internet, and the shopping cart is a crucial part of the e-commerce experience. A good design can make the shopping cart experience more enjoyable and increase sales. A poor design can lead to abandoned carts and lost sales. diff --git a/curriculum/challenges/english/blocks/lecture-user-centered-design/672bb03999f39379f67d8972.md b/curriculum/challenges/english/blocks/lecture-user-centered-design/672bb03999f39379f67d8972.md index 1b7052593de..e4f13c08a5a 100644 --- a/curriculum/challenges/english/blocks/lecture-user-centered-design/672bb03999f39379f67d8972.md +++ b/curriculum/challenges/english/blocks/lecture-user-centered-design/672bb03999f39379f67d8972.md @@ -7,7 +7,7 @@ dashedName: what-is-progressive-disclosure # --interactive-- -**NOTE**: Some of the interactive examples might use CSS that you haven't learned yet. Don't worry about trying to understand all of the code. The goal of the examples is to show you previews for these design concepts so you better understand how things work. +**NOTE**: Some of the interactive examples might use CSS that you haven't learned yet. Don't worry about trying to understand all of the code. The goal of the examples is to show you previews for these design concepts so you better understand how things work. To see the previews, you will need to enable the interactive editor. A progressive disclosure is a design pattern used to only show users relevant content based on their current activity and hide the rest. This is done to reduce cognitive load and make the user experience more intuitive. diff --git a/curriculum/challenges/english/blocks/lecture-what-is-css/672aa5e1f8b935577acfb2b9.md b/curriculum/challenges/english/blocks/lecture-what-is-css/672aa5e1f8b935577acfb2b9.md index 0b3a6c138bd..f98be9328c5 100644 --- a/curriculum/challenges/english/blocks/lecture-what-is-css/672aa5e1f8b935577acfb2b9.md +++ b/curriculum/challenges/english/blocks/lecture-what-is-css/672aa5e1f8b935577acfb2b9.md @@ -82,7 +82,7 @@ Let's consider a simple analogy. If you think of a website as a house, HTML woul CSS works by selecting HTML elements and applying styles to them. -Here is an example showing an unstyled `button` element and a styled one. +Here is an example showing an unstyled `button` element and a styled one. To interact with this example, you will need to enable the interactive editor. :::interactive_editor @@ -123,7 +123,7 @@ This means that with CSS, you can make your website look great on any device, wh CSS allows you to adjust layouts, font sizes, and other visual elements based on the screen size of the device viewing the website. -Try adjusting the size of the preview window to see how the layout adapts to the screen size. +Try enabling the interactive editor and adjust the size of the preview window to see how the layout adapts to the screen size. :::interactive_editor diff --git a/curriculum/challenges/english/blocks/lecture-what-is-css/672acbbe2891564c4e316164.md b/curriculum/challenges/english/blocks/lecture-what-is-css/672acbbe2891564c4e316164.md index 8833a827dff..e21077b9624 100644 --- a/curriculum/challenges/english/blocks/lecture-what-is-css/672acbbe2891564c4e316164.md +++ b/curriculum/challenges/english/blocks/lecture-what-is-css/672acbbe2891564c4e316164.md @@ -33,7 +33,7 @@ The value would be the specific setting applied to that property. For example, i After each property name, you need to place a colon, and after each value, you should have a semicolon. -Now that you know the syntax for a CSS rule, let's take a look at an example. Click on the `styles.css` tab in the interactive editor to see the CSS code. +Now that you know the syntax for a CSS rule, let's take a look at an example. Enable the interactive editor and click on the `styles.css` tab to see the CSS code. :::interactive_editor @@ -61,7 +61,7 @@ The declaration consists of the `color` property with a value set to `blue`. Thi If you want to apply the same set of styles to multiple selectors, you can create a selector list with each selector separated by a comma. -Here is an example of styling multiple selectors: +Here is an example of styling multiple selectors (to interact with the example, enable the interactive editor): :::interactive_editor diff --git a/curriculum/challenges/english/blocks/lecture-working-with-audio-and-video-elements/67168278ac6df6a799555db5.md b/curriculum/challenges/english/blocks/lecture-working-with-audio-and-video-elements/67168278ac6df6a799555db5.md index ac733bf309b..fdf5bc0ad5d 100644 --- a/curriculum/challenges/english/blocks/lecture-working-with-audio-and-video-elements/67168278ac6df6a799555db5.md +++ b/curriculum/challenges/english/blocks/lecture-working-with-audio-and-video-elements/67168278ac6df6a799555db5.md @@ -12,7 +12,7 @@ The `video` element supports mp4, ogg, and webm formats. To include audio content on your web page, you can use the `audio` element with the `src` attribute pointing to the location of your audio file. -As you can see in the preview window, nothing shows up on the page. +As you can see in the preview window, nothing shows up on the page. To see the previews, you will need to enable the interactive editor. :::interactive_editor @@ -24,7 +24,7 @@ As you can see in the preview window, nothing shows up on the page. If you want to see the audio player on the page, then you can add the `audio` element with the `controls` attribute. -Press play in the preview window to hear one of Quincy Larson's songs. To hear a different song, change the `src` value to `"https://cdn.freecodecamp.org/curriculum/js-music-player/never-not-favored.mp3"`. +Press play in the preview window to hear one of Quincy Larson's songs. To hear a different song, change the `src` value to `"https://cdn.freecodecamp.org/curriculum/js-music-player/never-not-favored.mp3"`. To see the previews, you will need to enable the interactive editor. :::interactive_editor @@ -38,7 +38,7 @@ The `controls` attribute enables users to manage audio playback, including adjus Apart from the `src` and `controls` attributes, there are several other attributes that enhance the functionality of the `audio` element. The `loop` attribute is a boolean attribute that makes the audio replay continuously. -Here's an example of using the `loop` attribute to play one of Quincy Larson's songs titled "Can't stay down". To see the looping in action, scrub the play head close the end of the song and it will restart again once it is finished. +Here's an example of using the `loop` attribute to play one of Quincy Larson's songs titled "Can't stay down". To see the looping in action, enable the interactive editor, scrub the play head close the end of the song and it will restart again once it is finished. :::interactive_editor @@ -54,7 +54,7 @@ Here's an example of using the `loop` attribute to play one of Quincy Larson's s Another attribute you can use is the `muted` attribute. When present in the `audio` element, this boolean attribute will start the audio in a muted state. Here's an example of using the `muted` attribute. -To hear the music, click on the volume icon in the audio player. +To hear the music, enable the interactive editor and click on the volume icon in the audio player. :::interactive_editor @@ -83,7 +83,7 @@ The browser will first start with the ogg type, and if it can't play the audio, All the attributes we have learned so far are also supported in the `video` element. Here's an example of using a `video` element with the `loop`, `controls`, and `muted` attributes. -Add the `autoplay` attribute to the opening `video` tag so the video plays automatically. +Add the `autoplay` attribute to the opening `video` tag so the video plays automatically. To interact with the example, you will need to enable the interactive editor. **NOTE**: The `width` attribute is being used here to make the video smaller and fit better in the preview window. You will learn more about the `width` attribute in future lessons. diff --git a/curriculum/challenges/english/blocks/lecture-working-with-css-flexbox/672aa7f7284b235f46f7d4e9.md b/curriculum/challenges/english/blocks/lecture-working-with-css-flexbox/672aa7f7284b235f46f7d4e9.md index ecaea548e37..c9f98ae78c4 100644 --- a/curriculum/challenges/english/blocks/lecture-working-with-css-flexbox/672aa7f7284b235f46f7d4e9.md +++ b/curriculum/challenges/english/blocks/lecture-working-with-css-flexbox/672aa7f7284b235f46f7d4e9.md @@ -59,7 +59,7 @@ div { ::: -But if you add `display: flex` to the `main` container, the `div` elements will be rearranged to fit on the same row and they will shrink if necessary: +But if you add `display: flex` to the `main` container, the `div` elements will be rearranged to fit on the same row and they will shrink if necessary (to see the previews, enable the interactive editor): :::interactive_editor diff --git a/curriculum/challenges/english/blocks/lecture-working-with-forms/6729974ec29be33cb00eb54d.md b/curriculum/challenges/english/blocks/lecture-working-with-forms/6729974ec29be33cb00eb54d.md index 7604aa4b7a7..1daa79dd80e 100644 --- a/curriculum/challenges/english/blocks/lecture-working-with-forms/6729974ec29be33cb00eb54d.md +++ b/curriculum/challenges/english/blocks/lecture-working-with-forms/6729974ec29be33cb00eb54d.md @@ -17,7 +17,7 @@ The `form` element in HTML is used to gather user information, such as names and The `action` attribute specifies where the form data will be sent upon submission. To collect specific information, like names and email addresses, you would use the `input` element. Here is an example of using an `input` element. -Interact with the `input` element in the preview window by typing in your name in the field. +Enable the interactive editor and interact with the `input` element in the preview window by typing in your name in the field. :::interactive_editor @@ -31,7 +31,7 @@ Interact with the `input` element in the preview window by typing in your name i `input` elements are void elements and do not have closing tags. The `type` attribute defines the data type expected from the user. In this case, the data would be plaintext. To add a label for the input, you would use a `label` element. Here is an example of using a `label` element with the text of `Full Name:`. -Click on the text `Full Name:` in the preview window and you will see the input go into focus. +Click on the text `Full Name:` in the preview window and you will see the input go into focus. To interact with the example, you will need to enable the interactive editor. :::interactive_editor @@ -48,7 +48,7 @@ Click on the text `Full Name:` in the preview window and you will see the input By nesting an `input` inside a `label` element, you create an implicit association between the `label` and the `input` field. The term "implicit" refers to something that is understood or inferred without needing to be explicitly stated or defined with additional attributes or elements. To explicitly associate a `label` with an `input`, you can use the `for` attribute. Here is an example of using the `for` attribute for an email address label. -Interact with the `input` element in the preview window by typing in a fake email address like `jane@example.com`. +Interact with the `input` element in the preview window by typing in a fake email address like `jane@example.com`. To interact with the example, you will need to enable the interactive editor. :::interactive_editor @@ -63,7 +63,7 @@ Interact with the `input` element in the preview window by typing in a fake emai When using an explicit association, the values for the `for` attribute and `id` need to be the same. In this case, the values are both set to `email`. The `email` type in the input provides basic validation for correctly formatted email addresses. If you want to show additional hints to the users about the expected input, you can use the `placeholder` attribute. Here is an example using the `placeholder` attribute inside the email input. -Click on the email input and start typing in an email and you will see the placeholder text go away. +Enable the interactive editor, click on the email input and start typing in an email and you will see the placeholder text go away. :::interactive_editor diff --git a/curriculum/challenges/english/blocks/lecture-working-with-forms/672a4cd3d59756726657efb8.md b/curriculum/challenges/english/blocks/lecture-working-with-forms/672a4cd3d59756726657efb8.md index b98eed0e409..bd93c639fde 100644 --- a/curriculum/challenges/english/blocks/lecture-working-with-forms/672a4cd3d59756726657efb8.md +++ b/curriculum/challenges/english/blocks/lecture-working-with-forms/672a4cd3d59756726657efb8.md @@ -21,7 +21,8 @@ Other examples of using the `button` element include submitting a form, showing By default, the button will not do anything when activated. However, you can add some JavaScript code to make the button interactive, such as showing an alert in this case. -Click on the `Show Alert` button to see an alert pop up on the screen. +Click on the `Show Alert` button to see an alert pop up on the screen. To interact with the example, you will need to enable the interactive editor. + **NOTE**: This interactive example is using JavaScript but you don't need to worry about understanding the JavaScript code. You will learn about JavaScript in future modules. @@ -55,7 +56,7 @@ Another possible value for the `type` attribute is the `submit` value. Here is a Inside this `form` element, there is a `label` and `input` element for the user's email address. When the user clicks on the submit button, their data will be sent to the server and will be processed. The third possible value for the `type` attribute is the `reset` value. Here is an example of a `form` element with reset and submit buttons. -Interact with the email input in the preview window by providing a fake email address. Then click on the reset button to see your email disappear from the field. +Enable the interactive editor and interact with the email input in the preview window by providing a fake email address. Then click on the reset button to see your email disappear from the field. :::interactive_editor diff --git a/curriculum/challenges/english/blocks/lecture-working-with-forms/672a4cf959443073a6774908.md b/curriculum/challenges/english/blocks/lecture-working-with-forms/672a4cf959443073a6774908.md index cb42e815659..95151636bdd 100644 --- a/curriculum/challenges/english/blocks/lecture-working-with-forms/672a4cf959443073a6774908.md +++ b/curriculum/challenges/english/blocks/lecture-working-with-forms/672a4cf959443073a6774908.md @@ -21,7 +21,7 @@ The first state would be considered the `default` state. The default state of an When the user clicks on a form control or selects it with the keyboard's tab key, then that means it is in the `focused` state. When an input is in the `focused` state, most browsers will show a blue highlighted border around the input. But you can choose to add additional styles in CSS. -Click on any part of the whitespace in the preview window and then press the `tab` key to see the focus state. +Click on any part of the whitespace in the preview window and then press the `tab` key to see the focus state. To see the previews, you will need to enable the interactive editor. :::interactive_editor @@ -33,7 +33,7 @@ Click on any part of the whitespace in the preview window and then press the `ta Another form state is the `disabled` state. This state shows users that an input cannot be focused or activated. -Try clicking on the email input and you will notice that it will not focus anymore. +Enable the interactive editor and try clicking on the email input and you will notice that it will not focus anymore. :::interactive_editor @@ -47,7 +47,7 @@ Similar to the `focused` state, you can choose to add additional styles for the Another type of form state is the `readonly` state. This is when a form control, like an input, is not editable by the user. Here is an example of setting an email input to read-only. The `value` attribute is used to set the value shown inside the input field. -Try editing the current value of `example@email.com` in the preview window, and you will notice that is not possible. +Enable the interactive editor and try editing the current value of `example@email.com` in the preview window, and you will notice that is not possible. :::interactive_editor diff --git a/curriculum/challenges/english/blocks/lecture-working-with-images-and-svgs/6716825aff3434a71fdc3e99.md b/curriculum/challenges/english/blocks/lecture-working-with-images-and-svgs/6716825aff3434a71fdc3e99.md index f4dff1e3fe7..1bbc7a38d82 100644 --- a/curriculum/challenges/english/blocks/lecture-working-with-images-and-svgs/6716825aff3434a71fdc3e99.md +++ b/curriculum/challenges/english/blocks/lecture-working-with-images-and-svgs/6716825aff3434a71fdc3e99.md @@ -15,7 +15,7 @@ An SVG is a different kind of image. SVG stands for a scalable vector graphic. A SVGs specifically have the added benefit of storing data in XML. This means you can use them directly in your code as raw HTML with the `svg` element. It also means you can programmatically change the color of the image. -To change the smiley face to red, change the `fill="yellow"` to `fill="red"`. +To change the smiley face to red, enable the interactive editor and change the `fill="yellow"` to `fill="red"`. :::interactive_editor diff --git a/curriculum/challenges/english/blocks/lecture-working-with-links/6716744f7245947a3dd60009.md b/curriculum/challenges/english/blocks/lecture-working-with-links/6716744f7245947a3dd60009.md index 28b292322a6..f30dbfc05ef 100644 --- a/curriculum/challenges/english/blocks/lecture-working-with-links/6716744f7245947a3dd60009.md +++ b/curriculum/challenges/english/blocks/lecture-working-with-links/6716744f7245947a3dd60009.md @@ -9,7 +9,7 @@ dashedName: what-are-the-different-target-attribute-types You may have seen the `target` attribute on anchor elements, or links. This important attribute tells the browser where to open the URL for the anchor element. -Click on the link and you will be directed to the freeCodeCamp homepage in a new browser tab. +Enable the interactive editor, click on the link and you will be directed to the freeCodeCamp homepage in a new browser tab. :::interactive_editor diff --git a/curriculum/challenges/english/blocks/lecture-working-with-links/67168323932391a9ee0d3a9e.md b/curriculum/challenges/english/blocks/lecture-working-with-links/67168323932391a9ee0d3a9e.md index c88e428f68b..3cb34488841 100644 --- a/curriculum/challenges/english/blocks/lecture-working-with-links/67168323932391a9ee0d3a9e.md +++ b/curriculum/challenges/english/blocks/lecture-working-with-links/67168323932391a9ee0d3a9e.md @@ -11,7 +11,7 @@ You may have seen a link on a web page become purple after you click it. This is The first is the default state, which is `:link`. This state represents a link which the user has not visited, clicked, or interacted with yet. You can think of this state as providing the base styles for all links on your page. The other states build on top of it. -Take a look at the link in the preview window. It should be the default color of blue which represents the default state. If you click on it, then it will turn purple. +Enable the interactive editor and take a look at the link in the preview window. It should be the default color of blue which represents the default state. If you click on it, then it will turn purple. :::interactive_editor @@ -23,7 +23,7 @@ Take a look at the link in the preview window. It should be the default color of The second state is `:visited`, which applies when a user has already visited the page being linked to. By default, this turns the link purple - but you can leverage CSS to provide a different visual indication to the user. This is helpful to let someone know they have already read a portion of your documentation. Or, that the site is one they can trust because they have used it before. -Click on the link in the preview window and you should see that the visited link changes to the color brown. +Click on the link in the preview window and you should see that the visited link changes to the color brown. To see the previews, you will need to enable the interactive editor. **NOTE**: Some CSS has been provided for this interactive example so you can see the changes in the link styles. Don't worry about trying to understand the CSS code because you will learn what it all means in future modules. @@ -49,7 +49,7 @@ a:visited { The third state is `:hover`. This state applies when a user is hovering their cursor over a link. This state is helpful for providing extra attention to a link, to ensure a user actually intends to click it. -Hover your mouse over the link and you will see the color change to red. +Enable the interactive editor and try hovering your mouse over the link. You will see the color change to red. :::interactive_editor @@ -73,7 +73,7 @@ a:hover { Then we have `:focus`. This state applies when we focus on a link. -Click on any portion of the whitespace in the preview window and then press `tab` on your keyboard. You should see the link change to green. +Click on any portion of the whitespace in the preview window and then press `tab` on your keyboard. You should see the link change to green. To see the previews, you will need to enable the interactive editor. :::interactive_editor @@ -97,7 +97,7 @@ a:focus { And finally, we have `:active`. This state applies to links that are being activated by the user. This typically means clicking on the link with the primary mouse button by left clicking, in most cases. This state can be helpful for showing a user that the element they clicked on is interactive. -Click on the link and you should see the link turn to black. This happens pretty quickly so you might need to click on it a few times to see the color change. +Enable the interactive editor and click on the link. You should see the link turn to black. This happens pretty quickly so you might need to click on it a few times to see the color change. :::interactive_editor diff --git a/curriculum/challenges/english/blocks/lecture-working-with-media/6716743531fc9a797351c21e.md b/curriculum/challenges/english/blocks/lecture-working-with-media/6716743531fc9a797351c21e.md index 3428f7ca045..0f803a691a1 100644 --- a/curriculum/challenges/english/blocks/lecture-working-with-media/6716743531fc9a797351c21e.md +++ b/curriculum/challenges/english/blocks/lecture-working-with-media/6716743531fc9a797351c21e.md @@ -17,7 +17,7 @@ With replaced elements, you can control the position, or layout of an element. B The element itself is replaced with the external object: the image. Your CSS can control things like the positioning of the image, or apply a filter to it, but you cannot actually modify the image itself. A more robust example might be the `iframe` element, which embeds an external site on your web page. -Here is an example of using the `iframe` element for a popular YouTube video on the freeCodeCamp channel. If you want to see different videos in the preview window, change the value of the `src` attribute to a video of your choosing. +Here is an example of using the `iframe` element for a popular YouTube video on the freeCodeCamp channel. If you want to see different videos in the preview window, change the value of the `src` attribute to a video of your choosing. To see the previews, you will need to enable the interactive editor. **NOTE**: Don't worry about the extra attributes mentioned in the interactive example like `referrerpolicy` and `allowfullscreen`. You will learn more about working with `iframe` elements in a future workshop. @@ -31,7 +31,7 @@ Here is an example of using the `iframe` element for a popular YouTube video on Other common examples of using the `iframe` element would be to embed maps onto the page. Here is an example of an embedded map. -Try playing around with the map itself by zooming in/out. +Enable the interactive editor and try playing around with the map itself by zooming in/out. :::interactive_editor diff --git a/curriculum/challenges/english/blocks/lecture-working-with-media/671682b3983489a819507553.md b/curriculum/challenges/english/blocks/lecture-working-with-media/671682b3983489a819507553.md index b391f7ebae5..cdea4ed01a6 100644 --- a/curriculum/challenges/english/blocks/lecture-working-with-media/671682b3983489a819507553.md +++ b/curriculum/challenges/english/blocks/lecture-working-with-media/671682b3983489a819507553.md @@ -9,7 +9,7 @@ dashedName: how-do-you-embed-videos-onto-your-page-using-the-iframe-element In a prior lesson, you were first introduced to the `iframe` element. In this lesson, you will learn more about how to work with the `iframe` element. This element stands for inline frame. It's an inline element used to embed other HTML content directly within the HTML page. That HTML content could be a video, map, another HTML element, or even other web pages. -Here's an example of embedding a popular freeCodeCamp course from YouTube. To see a different video, change the `src` value to a video of your choosing. +Here's an example of embedding a popular freeCodeCamp course from YouTube. To see a different video, enable the interactive editor and change the `src` value to a video of your choosing. :::interactive_editor diff --git a/curriculum/challenges/english/blocks/lecture-working-with-relative-and-absolute-units/672bb83c3a9906945536cff2.md b/curriculum/challenges/english/blocks/lecture-working-with-relative-and-absolute-units/672bb83c3a9906945536cff2.md index a5b1dc341e1..8b3425f6a2c 100644 --- a/curriculum/challenges/english/blocks/lecture-working-with-relative-and-absolute-units/672bb83c3a9906945536cff2.md +++ b/curriculum/challenges/english/blocks/lecture-working-with-relative-and-absolute-units/672bb83c3a9906945536cff2.md @@ -17,7 +17,7 @@ This means that if you set an element's height to `100vh`, it will occupy the fu These units are especially handy when you want to create full-screen layouts or elements that maintain a specific proportion of the screen. -For example, you might want to use them to create a hero section that always fills the entire screen: +For example, you might want to use them to create a hero section that always fills the entire screen (to interact with the example, you will need to enable the interactive editor). :::interactive_editor @@ -60,7 +60,7 @@ This CSS ensures that the hero section will always be exactly the size of the vi `vh` and `vw` units can also be used for typography to create responsive text sizes. -Try adjusting the size of the preview window to see how the text scales with the viewport size: +Enable the interactive editor and try adjusting the size of the preview window to see how the text scales with the viewport size: :::interactive_editor diff --git a/curriculum/challenges/english/blocks/lecture-working-with-specialized-semantic-elements/672995ffdfd2f337f5f215f8.md b/curriculum/challenges/english/blocks/lecture-working-with-specialized-semantic-elements/672995ffdfd2f337f5f215f8.md index 23c2735443f..7d95dc7b9e0 100644 --- a/curriculum/challenges/english/blocks/lecture-working-with-specialized-semantic-elements/672995ffdfd2f337f5f215f8.md +++ b/curriculum/challenges/english/blocks/lecture-working-with-specialized-semantic-elements/672995ffdfd2f337f5f215f8.md @@ -9,7 +9,7 @@ dashedName: how-do-you-display-mathematical-equations-and-chemical-formulas-in-h The superscript element is used to display a piece of text as a superscript. A superscript is a symbol or letter printed above the normal line of text. -Here is an example using the superscript element to illustrate exponents: +Here is an example using the superscript element to illustrate exponents (to see the previews, enable the interactive editor): :::interactive_editor @@ -21,7 +21,7 @@ Here is an example using the superscript element to illustrate exponents: In this example, the number 2 is wrapped in `sup` tags to represent the superscript inside the paragraph. In the preview window, you will see that the second number 2 is smaller and slightly higher than the first number 2. -Common use cases for the superscript element would include exponents, superior lettering, and ordinal numbers. Here is an example using the superscript element for superior lettering: +Common use cases for the superscript element would include exponents, superior lettering, and ordinal numbers. Here is an example using the superscript element for superior lettering (to see the previews, enable the interactive editor): :::interactive_editor @@ -39,7 +39,7 @@ It is important to note that the superscript element should only be used for typ To represent chemical equations inside HTML, you would use the subscript element. This element uses a subscript which displays a lowered baseline using smaller text. -Here is an example of using the subscript element to show the chemical representation for carbon dioxide. +Here is an example of using the subscript element to show the chemical representation for carbon dioxide (to see the previews, enable the interactive editor): :::interactive_editor From c56a9448f40267abba5e51ff4a2005110baca5d9 Mon Sep 17 00:00:00 2001 From: Arman kb <159944489+Armankb2@users.noreply.github.com> Date: Tue, 11 Nov 2025 04:42:20 +0530 Subject: [PATCH 09/21] fix(curriculum): allow multiple trailing spaces in factorial calculator regex (#63702) --- .../blocks/lab-factorial-calculator/66c07238b01053abaf812065.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/curriculum/challenges/english/blocks/lab-factorial-calculator/66c07238b01053abaf812065.md b/curriculum/challenges/english/blocks/lab-factorial-calculator/66c07238b01053abaf812065.md index 5a9e5ef6844..5e48397fbb8 100644 --- a/curriculum/challenges/english/blocks/lab-factorial-calculator/66c07238b01053abaf812065.md +++ b/curriculum/challenges/english/blocks/lab-factorial-calculator/66c07238b01053abaf812065.md @@ -74,7 +74,7 @@ assert.strictEqual(factorialCalculator(7), 5040); You should call your `factorialCalculator` function with the `num` variable as the argument. ```js -assert.match(__helpers.removeJSComments(code), /factorialCalculator\(\s*num\s*\)\s*;?\s?$/m); +assert.match(__helpers.removeJSComments(code), /factorialCalculator\(\s*num\s*\)\s*;?\s*$/m); ``` You should define a `factorial` variable and assign the result of the `factorialCalculator` function to it. From c722fcdd9de690c9738891426679fa618a99607f Mon Sep 17 00:00:00 2001 From: Diem-Trang Pham <6422507+pdtrang@users.noreply.github.com> Date: Mon, 10 Nov 2025 17:19:13 -0600 Subject: [PATCH 10/21] fix(curriculum): update tests for step 41 of cat photo app workshop (#63663) --- .../blocks/workshop-cat-photo-app/5ef9b03c81a63668521804ee.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/curriculum/challenges/english/blocks/workshop-cat-photo-app/5ef9b03c81a63668521804ee.md b/curriculum/challenges/english/blocks/workshop-cat-photo-app/5ef9b03c81a63668521804ee.md index 20f380375c7..970b4c5f561 100644 --- a/curriculum/challenges/english/blocks/workshop-cat-photo-app/5ef9b03c81a63668521804ee.md +++ b/curriculum/challenges/english/blocks/workshop-cat-photo-app/5ef9b03c81a63668521804ee.md @@ -18,14 +18,14 @@ Add this declaration as the first line of the code. Your code should begin with the declaration ``. You may have omitted the declaration, have a typo, or it is not the first line of code. ```js -assert.match(code, /\<\s*!DOCTYPE\s+html\s*\>/); +assert.match(code, /<\s*!doctype\s+html\s*>/i); ``` Your `` must be located at the top of the document. ```js const noSpaces = code.replace(/\s/g, ''); -assert.match(noSpaces, /^\<\!DOCTYPEhtml\>\ Date: Tue, 11 Nov 2025 04:20:03 +0200 Subject: [PATCH 11/21] feat: release a2-english exam (#63136) --- api/src/routes/protected/certificate.test.ts | 5 +- client/i18n/locales/english/intro.json | 85 +++++++++++++++---- .../components/super-block-intro.tsx | 1 - .../blocks/en-a2-certification-exam.json | 2 +- e2e/cert-username-case-navigation.spec.ts | 4 +- e2e/map.spec.ts | 2 +- shared/config/certification-settings.ts | 8 +- .../api/configs/super-block-list.ts | 2 +- 8 files changed, 80 insertions(+), 29 deletions(-) diff --git a/api/src/routes/protected/certificate.test.ts b/api/src/routes/protected/certificate.test.ts index 12ad09e06bb..253a6e26049 100644 --- a/api/src/routes/protected/certificate.test.ts +++ b/api/src/routes/protected/certificate.test.ts @@ -38,6 +38,7 @@ describe('certificate routes', () => { data: { completedChallenges: [], name: 'fcc', + isA2EnglishCert: false, isRespWebDesignCert: false, isJsAlgoDataStructCert: false, isFrontEndLibsCert: false, @@ -135,6 +136,7 @@ describe('certificate routes', () => { }, isCertMap: { is2018DataVisCert: false, + isA2EnglishCert: false, isApisMicroservicesCert: false, isBackEndCert: false, isCollegeAlgebraPyCertV8: false, @@ -238,7 +240,8 @@ describe('certificate routes', () => { isInfosecCertV7: true, isMachineLearningPyCertV7: true, isCollegeAlgebraPyCertV8: true, - isFoundationalCSharpCertV8: true + isFoundationalCSharpCertV8: true, + isA2EnglishCert: true } }); diff --git a/client/i18n/locales/english/intro.json b/client/i18n/locales/english/intro.json index 5982679089e..424e3b3a624 100644 --- a/client/i18n/locales/english/intro.json +++ b/client/i18n/locales/english/intro.json @@ -1394,7 +1394,7 @@ } }, "a2-english-for-developers": { - "title": "A2 English for Developers (Beta) Certification", + "title": "A2 English for Developers Certification", "intro": [ "In this English for Developers Curriculum, you'll learn the essentials of English communication. This will follow the A2 level of the Common European Framework of Reference (CEFR). And we've focused on vocabulary that is particularly useful for developers.", "The first half of the curriculum will help you get comfortable with English grammar and usage. It will give you tons of hands-on practice. You'll learn basics like introducing yourself, making small talk, and discussing your work.", @@ -2372,7 +2372,10 @@ "Open up this page to review concepts around the basics of HTML elements, semantic HTML, tables, forms and accessibility." ] }, - "qpra": { "title": "30", "intro": [] }, + "qpra": { + "title": "30", + "intro": [] + }, "lecture-understanding-computer-internet-and-tooling-basics": { "title": "Understanding Computer, Internet, and Tooling Basics", "intro": [ @@ -4170,7 +4173,10 @@ "Open up this page to review all of the concepts taught including variables, strings, booleans, functions, objects, arrays, debugging, working with the DOM and more." ] }, - "kagw": { "title": "258", "intro": [] }, + "kagw": { + "title": "258", + "intro": [] + }, "lecture-introduction-to-javascript-libraries-and-frameworks": { "title": "Introduction to JavaScript Libraries and Frameworks", "intro": [ @@ -4443,11 +4449,26 @@ "In this lesson, you will learn about TypeScript configuration files and how to use them." ] }, - "trvf": { "title": "293", "intro": [] }, - "kwmg": { "title": "294", "intro": [] }, - "nodx": { "title": "295", "intro": [] }, - "erfj": { "title": "296", "intro": [] }, - "muyw": { "title": "297", "intro": [] }, + "trvf": { + "title": "293", + "intro": [] + }, + "kwmg": { + "title": "294", + "intro": [] + }, + "nodx": { + "title": "295", + "intro": [] + }, + "erfj": { + "title": "296", + "intro": [] + }, + "muyw": { + "title": "297", + "intro": [] + }, "review-typescript": { "title": "Typescript Review", "intro": [ @@ -4465,8 +4486,14 @@ "Review the Front End Libraries concepts to prepare for the upcoming quiz." ] }, - "rdzk": { "title": "301", "intro": [] }, - "vtpz": { "title": "302", "intro": [] }, + "rdzk": { + "title": "301", + "intro": [] + }, + "vtpz": { + "title": "302", + "intro": [] + }, "lecture-introduction-to-python": { "title": "Introduction to Python", "intro": [ @@ -7570,8 +7597,14 @@ "title": "Introducing Yourself Basics", "intro": ["", ""] }, - "es-a1-learn-meet-luna": { "title": "Meet Luna", "intro": ["", ""] }, - "es-a1-learn-meet-mateo": { "title": "Meet Mateo", "intro": ["", ""] }, + "es-a1-learn-meet-luna": { + "title": "Meet Luna", + "intro": ["", ""] + }, + "es-a1-learn-meet-mateo": { + "title": "Meet Mateo", + "intro": ["", ""] + }, "es-a1-learn-meet-julieta": { "title": "Meet Julieta", "intro": ["", ""] @@ -8010,7 +8043,10 @@ "Open up this page to review concepts around the basics of HTML elements, semantic HTML, tables, forms and accessibility." ] }, - "qpra": { "title": "30", "intro": [] }, + "qpra": { + "title": "30", + "intro": [] + }, "lecture-understanding-computer-internet-and-tooling-basics": { "title": "Understanding Computer, Internet, and Tooling Basics", "intro": [ @@ -8736,7 +8772,10 @@ "title": "Single Finals", "intro": ["", ""] }, - "zh-a1-learn-initials": { "title": "Initials", "intro": ["", ""] }, + "zh-a1-learn-initials": { + "title": "Initials", + "intro": ["", ""] + }, "zh-a1-learn-compound-finals": { "title": "Compound Finals", "intro": ["", ""] @@ -8787,12 +8826,18 @@ "title": "Introducing Others Basics", "intro": ["", ""] }, - "zh-a1-learn-the-team": { "title": "The Team", "intro": ["", ""] }, + "zh-a1-learn-the-team": { + "title": "The Team", + "intro": ["", ""] + }, "zh-a1-learn-a-new-colleague": { "title": "A New Colleague", "intro": ["", ""] }, - "zh-a1-learn-my-family": { "title": "My Family", "intro": ["", ""] }, + "zh-a1-learn-my-family": { + "title": "My Family", + "intro": ["", ""] + }, "zh-a1-practice-introducing-others": { "title": "Introducing Others Practice", "intro": ["", ""] @@ -8955,7 +9000,9 @@ "part-12": "Containers", "part-13": "Using Relational Databases" }, - "modules": { "basic-html": "Basic HTML" }, + "modules": { + "basic-html": "Basic HTML" + }, "module-intros": { "basic-html": { "title": "Basic HTML", @@ -8968,7 +9015,9 @@ "daily-coding-challenge": { "title": "Daily Coding Challenge", "blocks": { - "daily-coding-challenge": { "title": "Daily Coding Challenge" } + "daily-coding-challenge": { + "title": "Daily Coding Challenge" + } } }, "misc-text": { diff --git a/client/src/templates/Introduction/components/super-block-intro.tsx b/client/src/templates/Introduction/components/super-block-intro.tsx index 1e627feca2d..fce06ccf214 100644 --- a/client/src/templates/Introduction/components/super-block-intro.tsx +++ b/client/src/templates/Introduction/components/super-block-intro.tsx @@ -57,7 +57,6 @@ export const ConditionalDonationAlert = ({ const betaCertifications: SuperBlocks[] = []; const unfinishedCertifications = [ - SuperBlocks.A2English, SuperBlocks.B1English, SuperBlocks.A1Spanish, SuperBlocks.A2Spanish, diff --git a/curriculum/structure/blocks/en-a2-certification-exam.json b/curriculum/structure/blocks/en-a2-certification-exam.json index a1c292ecc61..15adf28689f 100644 --- a/curriculum/structure/blocks/en-a2-certification-exam.json +++ b/curriculum/structure/blocks/en-a2-certification-exam.json @@ -1,6 +1,6 @@ { "name": "A2 English for Developers Certification Exam", - "isUpcomingChange": true, + "isUpcomingChange": false, "dashedName": "en-a2-certification-exam", "helpCategory": "English", "challengeOrder": [ diff --git a/e2e/cert-username-case-navigation.spec.ts b/e2e/cert-username-case-navigation.spec.ts index 7ccb5a2d130..aac7cf7ca3d 100644 --- a/e2e/cert-username-case-navigation.spec.ts +++ b/e2e/cert-username-case-navigation.spec.ts @@ -16,7 +16,7 @@ test.describe('Public profile certifications', () => { await expect( page.getByRole('link', { name: /View.+Certification/ }) - ).toHaveCount(19); + ).toHaveCount(20); }); test('Should show claimed certifications if the username includes uppercase characters', async ({ @@ -48,7 +48,7 @@ test.describe('Public profile certifications', () => { await page.waitForURL('/certifiedboozer'); await expect( page.getByRole('link', { name: /View.+Certification/ }) - ).toHaveCount(19); + ).toHaveCount(20); }); test.afterAll(() => { diff --git a/e2e/map.spec.ts b/e2e/map.spec.ts index 86d50b2be86..8cfb0d9042f 100644 --- a/e2e/map.spec.ts +++ b/e2e/map.spec.ts @@ -12,7 +12,7 @@ const LANDING_PAGE_LINKS = [ }, { slug: 'a2-english-for-developers', - name: 'A2 English for Developers (Beta) Certification' + name: 'A2 English for Developers Certification' }, { slug: 'b1-english-for-developers', diff --git a/shared/config/certification-settings.ts b/shared/config/certification-settings.ts index 3834a09c788..3f45a5155db 100644 --- a/shared/config/certification-settings.ts +++ b/shared/config/certification-settings.ts @@ -32,8 +32,8 @@ export enum Certification { PythonV9 = 'python-v9', RelationalDbV9 = 'relational-databases-v9', BackEndDevApisV9 = 'back-end-development-and-apis-v9', + A2English = 'a2-english-for-developers', FullStackDeveloperV9 = 'full-stack-developer-v9', - A2English = 'a2-english-for-developers-v8', B1English = 'b1-english-for-developers-v8', A2Spanish = 'a2-professional-spanish-v8', A2Chinese = 'a2-professional-chinese-v8', @@ -54,6 +54,7 @@ export function isCertification(x: string): x is Certification { // "Current" certifications are the subset of standard certifications that are // live and not legacy. export const currentCertifications = [ + Certification.A2English, Certification.FoundationalCSharp ] as const; @@ -95,7 +96,6 @@ export const upcomingCertifications = [ Certification.RelationalDbV9, Certification.BackEndDevApisV9, Certification.FullStackDeveloperV9, - Certification.A2English, Certification.B1English, Certification.A2Spanish, Certification.A2Chinese, @@ -205,11 +205,11 @@ export const certSlugTypeMap = { [Certification.RelationalDb]: certTypes.relationalDatabaseV8, [Certification.CollegeAlgebraPy]: certTypes.collegeAlgebraPyV8, [Certification.FoundationalCSharp]: certTypes.foundationalCSharpV8, + [Certification.A2English]: certTypes.a2English, // upcoming [Certification.RespWebDesignV9]: certTypes.respWebDesignV9, - [Certification.JsV9]: certTypes.javascriptV9, - [Certification.A2English]: certTypes.a2English + [Certification.JsV9]: certTypes.javascriptV9 }; export const superBlockCertTypeMap = { diff --git a/tools/challenge-editor/api/configs/super-block-list.ts b/tools/challenge-editor/api/configs/super-block-list.ts index 1074ea4a768..745c2f1fb6e 100644 --- a/tools/challenge-editor/api/configs/super-block-list.ts +++ b/tools/challenge-editor/api/configs/super-block-list.ts @@ -72,7 +72,7 @@ export const superBlockList = [ path: 'foundational-c-sharp-with-microsoft' }, { - name: 'A2 English for Developers (Beta)', + name: 'A2 English for Developers', path: 'a2-english-for-developers' }, { From ee911d7eac41bf26204afc8f5c8a742a987c7695 Mon Sep 17 00:00:00 2001 From: Oliver Eyton-Williams Date: Tue, 11 Nov 2025 09:34:24 +0100 Subject: [PATCH 12/21] refactor: simplify sourcing of challenge nodes into gatsby (#63697) --- client/gatsby-node.js | 2 - .../show-daily-coding-challenge.tsx | 10 +- .../components/__fixtures__/edges.json | 8115 ++++++----------- .../profile/components/time-line.tsx | 8 +- client/src/redux/prop-types.ts | 7 +- .../src/templates/Challenges/classic/show.tsx | 15 +- .../templates/Challenges/codeally/show.tsx | 12 +- client/src/templates/Challenges/exam/show.tsx | 19 +- .../Challenges/fill-in-the-blank/show.tsx | 15 +- .../src/templates/Challenges/generic/show.tsx | 13 +- .../templates/Challenges/ms-trophy/show.tsx | 21 +- .../Challenges/projects/backend/show.tsx | 19 +- .../Challenges/projects/frontend/show.tsx | 16 +- client/src/templates/Challenges/quiz/show.tsx | 12 +- .../Introduction/super-block-intro.tsx | 3 +- .../create-challenge-nodes.js | 4 +- tools/daily-challenges/helpers.ts | 8 +- tools/daily-challenges/types.ts | 10 +- 18 files changed, 2778 insertions(+), 5531 deletions(-) diff --git a/client/gatsby-node.js b/client/gatsby-node.js index 40c24d3c77c..71d03b712c5 100644 --- a/client/gatsby-node.js +++ b/client/gatsby-node.js @@ -470,8 +470,6 @@ exports.createSchemaCustomization = ({ actions }) => { } type ChallengeFields { slug: String - blockName: String - tests: [Test] } type Nodule { type: String diff --git a/client/src/client-only-routes/show-daily-coding-challenge.tsx b/client/src/client-only-routes/show-daily-coding-challenge.tsx index f9605069375..1ce53a4c521 100644 --- a/client/src/client-only-routes/show-daily-coding-challenge.tsx +++ b/client/src/client-only-routes/show-daily-coding-challenge.tsx @@ -91,10 +91,7 @@ function formatChallengeData({ ...baseChallengeProps, helpCategory: 'JavaScript', challengeType: 28, - fields: { - blockName: 'daily-coding-challenge', - tests: javascript.tests - }, + tests: javascript.tests, challengeFiles: [ { name: 'script', @@ -119,10 +116,7 @@ function formatChallengeData({ ...baseChallengeProps, helpCategory: 'Python', challengeType: 29, - fields: { - blockName: 'daily-coding-challenge', - tests: python.tests - }, + tests: python.tests, challengeFiles: [ { fileKey: 'mainpy', diff --git a/client/src/components/profile/components/__fixtures__/edges.json b/client/src/components/profile/components/__fixtures__/edges.json index da0b3637fbf..a0ec389b14b 100644 --- a/client/src/components/profile/components/__fixtures__/edges.json +++ b/client/src/components/profile/components/__fixtures__/edges.json @@ -3,8 +3,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-accessibility/add-a-text-alternative-to-images-for-visually-impaired-accessibility", - "blockName": "Applied Accessibility" + "slug": "/learn/responsive-web-design/applied-accessibility/add-a-text-alternative-to-images-for-visually-impaired-accessibility" }, "id": "587d774c367417b2b2512a9c", "title": "Add a Text Alternative to Images for Visually Impaired Accessibility" @@ -15,8 +14,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-accessibility/add-an-accessible-date-picker", - "blockName": "Applied Accessibility" + "slug": "/learn/responsive-web-design/applied-accessibility/add-an-accessible-date-picker" }, "id": "587d778b367417b2b2512aa8", "title": "Add an Accessible Date Picker" @@ -27,8 +25,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-accessibility/avoid-colorblindness-issues-by-carefully-choosing-colors-that-convey-information", - "blockName": "Applied Accessibility" + "slug": "/learn/responsive-web-design/applied-accessibility/avoid-colorblindness-issues-by-carefully-choosing-colors-that-convey-information" }, "id": "587d778f367417b2b2512aad", "title": "Avoid Colorblindness Issues by Carefully Choosing Colors that Convey Information" @@ -39,8 +36,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-accessibility/avoid-colorblindness-issues-by-using-sufficient-contrast", - "blockName": "Applied Accessibility" + "slug": "/learn/responsive-web-design/applied-accessibility/avoid-colorblindness-issues-by-using-sufficient-contrast" }, "id": "587d778f367417b2b2512aac", "title": "Avoid Colorblindness Issues by Using Sufficient Contrast" @@ -51,8 +47,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-accessibility/give-links-meaning-by-using-descriptive-link-text", - "blockName": "Applied Accessibility" + "slug": "/learn/responsive-web-design/applied-accessibility/give-links-meaning-by-using-descriptive-link-text" }, "id": "587d778f367417b2b2512aae", "title": "Give Links Meaning by Using Descriptive Link Text" @@ -63,8 +58,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element", - "blockName": "Applied Accessibility" + "slug": "/learn/responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element" }, "id": "587d7789367417b2b2512aa4", "title": "Improve Accessibility of Audio Content with the audio Element" @@ -75,8 +69,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-accessibility/improve-chart-accessibility-with-the-figure-element", - "blockName": "Applied Accessibility" + "slug": "/learn/responsive-web-design/applied-accessibility/improve-chart-accessibility-with-the-figure-element" }, "id": "587d778a367417b2b2512aa5", "title": "Improve Chart Accessibility with the figure Element" @@ -87,8 +80,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-accessibility/improve-form-field-accessibility-with-the-label-element", - "blockName": "Applied Accessibility" + "slug": "/learn/responsive-web-design/applied-accessibility/improve-form-field-accessibility-with-the-label-element" }, "id": "587d778a367417b2b2512aa6", "title": "Improve Form Field Accessibility with the label Element" @@ -99,8 +91,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-accessibility/improve-readability-with-high-contrast-text", - "blockName": "Applied Accessibility" + "slug": "/learn/responsive-web-design/applied-accessibility/improve-readability-with-high-contrast-text" }, "id": "587d778e367417b2b2512aab", "title": "Improve Readability with High Contrast Text" @@ -111,8 +102,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-accessibility/jump-straight-to-the-content-using-the-main-element", - "blockName": "Applied Accessibility" + "slug": "/learn/responsive-web-design/applied-accessibility/jump-straight-to-the-content-using-the-main-element" }, "id": "587d774e367417b2b2512a9f", "title": "Jump Straight to the Content Using the main Element" @@ -123,8 +113,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-accessibility/know-when-alt-text-should-be-left-blank", - "blockName": "Applied Accessibility" + "slug": "/learn/responsive-web-design/applied-accessibility/know-when-alt-text-should-be-left-blank" }, "id": "587d774c367417b2b2512a9d", "title": "Know When Alt Text Should be Left Blank" @@ -135,8 +124,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-accessibility/make-elements-only-visible-to-a-screen-reader-by-using-custom-css", - "blockName": "Applied Accessibility" + "slug": "/learn/responsive-web-design/applied-accessibility/make-elements-only-visible-to-a-screen-reader-by-using-custom-css" }, "id": "587d778d367417b2b2512aaa", "title": "Make Elements Only Visible to a Screen Reader by Using Custom CSS" @@ -147,8 +135,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-accessibility/make-links-navigable-with-html-access-keys", - "blockName": "Applied Accessibility" + "slug": "/learn/responsive-web-design/applied-accessibility/make-links-navigable-with-html-access-keys" }, "id": "587d7790367417b2b2512aaf", "title": "Make Links Navigable with HTML Access Keys" @@ -159,8 +146,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-accessibility/make-screen-reader-navigation-easier-with-the-footer-landmark", - "blockName": "Applied Accessibility" + "slug": "/learn/responsive-web-design/applied-accessibility/make-screen-reader-navigation-easier-with-the-footer-landmark" }, "id": "587d7788367417b2b2512aa3", "title": "Make Screen Reader Navigation Easier with the footer Landmark" @@ -171,8 +157,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-accessibility/make-screen-reader-navigation-easier-with-the-header-landmark", - "blockName": "Applied Accessibility" + "slug": "/learn/responsive-web-design/applied-accessibility/make-screen-reader-navigation-easier-with-the-header-landmark" }, "id": "587d7787367417b2b2512aa1", "title": "Make Screen Reader Navigation Easier with the header Landmark" @@ -183,8 +168,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-accessibility/make-screen-reader-navigation-easier-with-the-nav-landmark", - "blockName": "Applied Accessibility" + "slug": "/learn/responsive-web-design/applied-accessibility/make-screen-reader-navigation-easier-with-the-nav-landmark" }, "id": "587d7788367417b2b2512aa2", "title": "Make Screen Reader Navigation Easier with the nav Landmark" @@ -195,8 +179,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-accessibility/standardize-times-with-the-html5-datetime-attribute", - "blockName": "Applied Accessibility" + "slug": "/learn/responsive-web-design/applied-accessibility/standardize-times-with-the-html5-datetime-attribute" }, "id": "587d778c367417b2b2512aa9", "title": "Standardize Times with the HTML5 datetime Attribute" @@ -207,8 +190,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-accessibility/use-headings-to-show-hierarchical-relationships-of-content", - "blockName": "Applied Accessibility" + "slug": "/learn/responsive-web-design/applied-accessibility/use-headings-to-show-hierarchical-relationships-of-content" }, "id": "587d774d367417b2b2512a9e", "title": "Use Headings to Show Hierarchical Relationships of Content" @@ -219,8 +201,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-accessibility/use-tabindex-to-add-keyboard-focus-to-an-element", - "blockName": "Applied Accessibility" + "slug": "/learn/responsive-web-design/applied-accessibility/use-tabindex-to-add-keyboard-focus-to-an-element" }, "id": "587d7790367417b2b2512ab0", "title": "Use tabindex to Add Keyboard Focus to an Element" @@ -231,8 +212,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-accessibility/use-tabindex-to-specify-the-order-of-keyboard-focus-for-several-elements", - "blockName": "Applied Accessibility" + "slug": "/learn/responsive-web-design/applied-accessibility/use-tabindex-to-specify-the-order-of-keyboard-focus-for-several-elements" }, "id": "587d7790367417b2b2512ab1", "title": "Use tabindex to Specify the Order of Keyboard Focus for Several Elements" @@ -243,8 +223,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-accessibility/wrap-content-in-the-article-element", - "blockName": "Applied Accessibility" + "slug": "/learn/responsive-web-design/applied-accessibility/wrap-content-in-the-article-element" }, "id": "587d774e367417b2b2512aa0", "title": "Wrap Content in the article Element" @@ -255,8 +234,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-accessibility/wrap-radio-buttons-in-a-fieldset-element-for-better-accessibility", - "blockName": "Applied Accessibility" + "slug": "/learn/responsive-web-design/applied-accessibility/wrap-radio-buttons-in-a-fieldset-element-for-better-accessibility" }, "id": "587d778b367417b2b2512aa7", "title": "Wrap Radio Buttons in a fieldset Element for Better Accessibility" @@ -267,8 +245,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/add-a-box-shadow-to-a-card-like-element", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/add-a-box-shadow-to-a-card-like-element" }, "id": "587d781b367417b2b2512abe", "title": "Add a box-shadow to a Card-like Element" @@ -279,8 +256,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/adjust-the-background-color-property-of-text", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/adjust-the-background-color-property-of-text" }, "id": "587d781b367417b2b2512abc", "title": "Adjust the background-color Property of Text" @@ -291,8 +267,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/adjust-the-color-of-various-elements-to-complementary-colors", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/adjust-the-color-of-various-elements-to-complementary-colors" }, "id": "587d78a4367417b2b2512ad3", "title": "Adjust the Color of Various Elements to Complementary Colors" @@ -303,8 +278,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/adjust-the-height-of-an-element-using-the-height-property", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/adjust-the-height-of-an-element-using-the-height-property" }, "id": "587d7791367417b2b2512ab5", "title": "Adjust the Height of an Element Using the height Property" @@ -315,8 +289,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/adjust-the-hover-state-of-an-anchor-tag", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/adjust-the-hover-state-of-an-anchor-tag" }, "id": "587d781d367417b2b2512ac8", "title": "Adjust the Hover State of an Anchor Tag" @@ -327,8 +300,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/adjust-the-hue-of-a-color", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/adjust-the-hue-of-a-color" }, "id": "587d78a4367417b2b2512ad4", "title": "Adjust the Hue of a Color" @@ -339,8 +311,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/adjust-the-size-of-a-heading-element-versus-a-paragraph-element", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/adjust-the-size-of-a-heading-element-versus-a-paragraph-element" }, "id": "587d781b367417b2b2512abd", "title": "Adjust the Size of a Heading Element Versus a Paragraph Element" @@ -351,8 +322,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/adjust-the-tone-of-a-color", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/adjust-the-tone-of-a-color" }, "id": "587d78a4367417b2b2512ad5", "title": "Adjust the Tone of a Color" @@ -363,8 +333,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/adjust-the-width-of-an-element-using-the-width-property", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/adjust-the-width-of-an-element-using-the-width-property" }, "id": "587d7791367417b2b2512ab4", "title": "Adjust the Width of an Element Using the width Property" @@ -375,8 +344,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/animate-elements-at-variable-rates", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/animate-elements-at-variable-rates" }, "id": "587d78a8367417b2b2512ae5", "title": "Animate Elements at Variable Rates" @@ -387,8 +355,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/animate-elements-continually-using-an-infinite-animation-count", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/animate-elements-continually-using-an-infinite-animation-count" }, "id": "587d78a8367417b2b2512ae3", "title": "Animate Elements Continually Using an Infinite Animation Count" @@ -399,8 +366,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/animate-multiple-elements-at-variable-rates", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/animate-multiple-elements-at-variable-rates" }, "id": "587d78a8367417b2b2512ae6", "title": "Animate Multiple Elements at Variable Rates" @@ -411,8 +377,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/center-an-element-horizontally-using-the-margin-property", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/center-an-element-horizontally-using-the-margin-property" }, "id": "587d78a3367417b2b2512ad0", "title": "Center an Element Horizontally Using the margin Property" @@ -423,8 +388,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/change-an-elements-relative-position", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/change-an-elements-relative-position" }, "id": "587d781e367417b2b2512ac9", "title": "Change an Element's Relative Position" @@ -435,8 +399,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/change-animation-timing-with-keywords", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/change-animation-timing-with-keywords" }, "id": "587d78a8367417b2b2512ae7", "title": "Change Animation Timing with Keywords" @@ -447,8 +410,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/change-the-position-of-overlapping-elements-with-the-z-index-property", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/change-the-position-of-overlapping-elements-with-the-z-index-property" }, "id": "587d78a3367417b2b2512acf", "title": "Change the Position of Overlapping Elements with the z-index Property" @@ -459,8 +421,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/create-a-gradual-css-linear-gradient", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/create-a-gradual-css-linear-gradient" }, "id": "587d78a5367417b2b2512ad6", "title": "Create a Gradual CSS Linear Gradient" @@ -471,8 +432,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/create-a-graphic-using-css", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/create-a-graphic-using-css" }, "id": "587d78a6367417b2b2512add", "title": "Create a Graphic Using CSS" @@ -483,8 +443,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/create-a-horizontal-line-using-the-hr-element", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/create-a-horizontal-line-using-the-hr-element" }, "id": "587d781b367417b2b2512abb", "title": "Create a Horizontal Line Using the hr Element" @@ -495,8 +454,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/create-a-more-complex-shape-using-css-and-html", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/create-a-more-complex-shape-using-css-and-html" }, "id": "587d78a6367417b2b2512ade", "title": "Create a More Complex Shape Using CSS and HTML" @@ -507,8 +465,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/create-movement-using-css-animation", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/create-movement-using-css-animation" }, "id": "587d78a7367417b2b2512ae1", "title": "Create Movement Using CSS Animation" @@ -519,8 +476,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/create-texture-by-adding-a-subtle-pattern-as-a-background-image", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/create-texture-by-adding-a-subtle-pattern-as-a-background-image" }, "id": "587d78a5367417b2b2512ad8", "title": "Create Texture by Adding a Subtle Pattern as a Background Image" @@ -531,8 +487,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/create-visual-balance-using-the-text-align-property", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/create-visual-balance-using-the-text-align-property" }, "id": "587d7791367417b2b2512ab3", "title": "Create Visual Balance Using the text-align Property" @@ -543,8 +498,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/create-visual-direction-by-fading-an-element-from-left-to-right", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/create-visual-direction-by-fading-an-element-from-left-to-right" }, "id": "587d78a7367417b2b2512ae2", "title": "Create Visual Direction by Fading an Element from Left to Right" @@ -555,8 +509,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/decrease-the-opacity-of-an-element", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/decrease-the-opacity-of-an-element" }, "id": "587d781c367417b2b2512abf", "title": "Decrease the Opacity of an Element" @@ -567,8 +520,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/learn-about-complementary-colors", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/learn-about-complementary-colors" }, "id": "587d78a3367417b2b2512ad1", "title": "Learn about Complementary Colors" @@ -579,8 +531,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/learn-about-tertiary-colors", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/learn-about-tertiary-colors" }, "id": "587d78a4367417b2b2512ad2", "title": "Learn about Tertiary Colors" @@ -591,8 +542,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/learn-how-bezier-curves-work", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/learn-how-bezier-curves-work" }, "id": "587d78a9367417b2b2512ae8", "title": "Learn How Bezier Curves Work" @@ -603,8 +553,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/learn-how-the-css-keyframes-and-animation-properties-work", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/learn-how-the-css-keyframes-and-animation-properties-work" }, "id": "587d78a7367417b2b2512adf", "title": "Learn How the CSS @keyframes and animation Properties Work" @@ -615,8 +564,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/lock-an-element-to-its-parent-with-absolute-positioning", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/lock-an-element-to-its-parent-with-absolute-positioning" }, "id": "587d781e367417b2b2512acb", "title": "Lock an Element to its Parent with Absolute Positioning" @@ -627,8 +575,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/lock-an-element-to-the-browser-window-with-fixed-positioning", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/lock-an-element-to-the-browser-window-with-fixed-positioning" }, "id": "587d781e367417b2b2512acc", "title": "Lock an Element to the Browser Window with Fixed Positioning" @@ -639,8 +586,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/make-a-css-heartbeat-using-an-infinite-animation-count", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/make-a-css-heartbeat-using-an-infinite-animation-count" }, "id": "587d78a8367417b2b2512ae4", "title": "Make a CSS Heartbeat using an Infinite Animation Count" @@ -651,8 +597,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/make-motion-more-natural-using-a-bezier-curve", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/make-motion-more-natural-using-a-bezier-curve" }, "id": "587d78a9367417b2b2512aea", "title": "Make Motion More Natural Using a Bezier Curve" @@ -663,8 +608,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/modify-fill-mode-of-an-animation", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/modify-fill-mode-of-an-animation" }, "id": "58a7a6ebf9a6318348e2d5aa", "title": "Modify Fill Mode of an Animation" @@ -675,8 +619,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/move-a-relatively-positioned-element-with-css-offsets", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/move-a-relatively-positioned-element-with-css-offsets" }, "id": "587d781e367417b2b2512aca", "title": "Move a Relatively Positioned Element with CSS Offsets" @@ -687,8 +630,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/push-elements-left-or-right-with-the-float-property", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/push-elements-left-or-right-with-the-float-property" }, "id": "587d78a3367417b2b2512ace", "title": "Push Elements Left or Right with the float Property" @@ -699,8 +641,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/set-the-font-size-for-multiple-heading-elements", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/set-the-font-size-for-multiple-heading-elements" }, "id": "587d781c367417b2b2512ac2", "title": "Set the font-size for Multiple Heading Elements" @@ -711,8 +652,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/set-the-font-size-of-paragraph-text", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/set-the-font-size-of-paragraph-text" }, "id": "587d781c367417b2b2512ac4", "title": "Set the font-size of Paragraph Text" @@ -723,8 +663,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/set-the-font-weight-for-multiple-heading-elements", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/set-the-font-weight-for-multiple-heading-elements" }, "id": "587d781c367417b2b2512ac3", "title": "Set the font-weight for Multiple Heading Elements" @@ -735,8 +674,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/set-the-line-height-of-paragraphs", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/set-the-line-height-of-paragraphs" }, "id": "587d781d367417b2b2512ac5", "title": "Set the line-height of Paragraphs" @@ -747,8 +685,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/use-a-bezier-curve-to-move-a-graphic", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/use-a-bezier-curve-to-move-a-graphic" }, "id": "587d78a9367417b2b2512ae9", "title": "Use a Bezier Curve to Move a Graphic" @@ -759,8 +696,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/use-a-css-linear-gradient-to-create-a-striped-element", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/use-a-css-linear-gradient-to-create-a-striped-element" }, "id": "587d78a5367417b2b2512ad7", "title": "Use a CSS Linear Gradient to Create a Striped Element" @@ -771,8 +707,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/use-css-animation-to-change-the-hover-state-of-a-button", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/use-css-animation-to-change-the-hover-state-of-a-button" }, "id": "587d78a7367417b2b2512ae0", "title": "Use CSS Animation to Change the Hover State of a Button" @@ -783,8 +718,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/use-the-css-transform-property-skewx-to-skew-an-element-along-the-x-axis", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/use-the-css-transform-property-skewx-to-skew-an-element-along-the-x-axis" }, "id": "587d78a6367417b2b2512adb", "title": "Use the CSS Transform Property skewX to Skew an Element Along the X-Axis" @@ -795,8 +729,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/use-the-css-transform-property-skewy-to-skew-an-element-along-the-y-axis", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/use-the-css-transform-property-skewy-to-skew-an-element-along-the-y-axis" }, "id": "587d78a6367417b2b2512adc", "title": "Use the CSS Transform Property skewY to Skew an Element Along the Y-Axis" @@ -807,8 +740,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/use-the-css-transform-scale-property-to-change-the-size-of-an-element", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/use-the-css-transform-scale-property-to-change-the-size-of-an-element" }, "id": "587d78a5367417b2b2512ad9", "title": "Use the CSS Transform scale Property to Change the Size of an Element" @@ -819,8 +751,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/use-the-css-transform-scale-property-to-scale-an-element-on-hover", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/use-the-css-transform-scale-property-to-scale-an-element-on-hover" }, "id": "587d78a5367417b2b2512ada", "title": "Use the CSS Transform scale Property to Scale an Element on Hover" @@ -831,8 +762,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/use-the-em-tag-to-italicize-text", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/use-the-em-tag-to-italicize-text" }, "id": "587d781a367417b2b2512ab9", "title": "Use the em Tag to Italicize Text" @@ -843,8 +773,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/use-the-s-tag-to-strikethrough-text", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/use-the-s-tag-to-strikethrough-text" }, "id": "587d781b367417b2b2512aba", "title": "Use the s Tag to Strikethrough Text" @@ -855,8 +784,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/use-the-strong-tag-to-make-text-bold", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/use-the-strong-tag-to-make-text-bold" }, "id": "587d781a367417b2b2512ab7", "title": "Use the strong Tag to Make Text Bold" @@ -867,8 +795,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/use-the-text-transform-property-to-make-text-uppercase", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/use-the-text-transform-property-to-make-text-uppercase" }, "id": "587d781c367417b2b2512ac0", "title": "Use the text-transform Property to Make Text Uppercase" @@ -879,8 +806,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/applied-visual-design/use-the-u-tag-to-underline-text", - "blockName": "Applied Visual Design" + "slug": "/learn/responsive-web-design/applied-visual-design/use-the-u-tag-to-underline-text" }, "id": "587d781a367417b2b2512ab8", "title": "Use the u Tag to Underline Text" @@ -891,8 +817,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/add-a-negative-margin-to-an-element", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/add-a-negative-margin-to-an-element" }, "id": "bad87fee1348bd9aedf08823", "title": "Add a Negative Margin to an Element" @@ -903,8 +828,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/add-borders-around-your-elements", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/add-borders-around-your-elements" }, "id": "bad87fee1348bd9bedf08813", "title": "Add Borders Around Your Elements" @@ -915,8 +839,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/add-different-margins-to-each-side-of-an-element", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/add-different-margins-to-each-side-of-an-element" }, "id": "bad87fee1248bd9aedf08824", "title": "Add Different Margins to Each Side of an Element" @@ -927,8 +850,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/add-different-padding-to-each-side-of-an-element", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/add-different-padding-to-each-side-of-an-element" }, "id": "bad87fee1348bd9aedf08824", "title": "Add Different Padding to Each Side of an Element" @@ -939,8 +861,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/add-rounded-corners-with-border-radius", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/add-rounded-corners-with-border-radius" }, "id": "bad87fee1348bd9aedf08814", "title": "Add Rounded Corners with border-radius" @@ -951,8 +872,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/adjust-the-margin-of-an-element", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/adjust-the-margin-of-an-element" }, "id": "bad87fee1348bd9aedf08822", "title": "Adjust the Margin of an Element" @@ -963,8 +883,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/adjust-the-padding-of-an-element", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/adjust-the-padding-of-an-element" }, "id": "bad88fee1348bd9aedf08825", "title": "Adjust the Padding of an Element" @@ -975,8 +894,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/attach-a-fallback-value-to-a-css-variable", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/attach-a-fallback-value-to-a-css-variable" }, "id": "5a9d7286424fe3d0e10cad13", "title": "Attach a Fallback value to a CSS Variable" @@ -987,8 +905,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/change-a-variable-for-a-specific-area", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/change-a-variable-for-a-specific-area" }, "id": "5a9d72a1424fe3d0e10cad15", "title": "Change a variable for a specific area" @@ -999,8 +916,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/change-the-color-of-text", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/change-the-color-of-text" }, "id": "bad87fee1348bd9aedf08803", "title": "Change the Color of Text" @@ -1011,8 +927,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/change-the-font-size-of-an-element", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/change-the-font-size-of-an-element" }, "id": "bad87fee1348bd9aedf08806", "title": "Change the Font Size of an Element" @@ -1023,8 +938,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/create-a-custom-css-variable", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/create-a-custom-css-variable" }, "id": "5a9d726c424fe3d0e10cad11", "title": "Create a custom CSS Variable" @@ -1035,8 +949,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/give-a-background-color-to-a-div-element", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/give-a-background-color-to-a-div-element" }, "id": "bad87fed1348bd9aede07836", "title": "Give a Background Color to a div Element" @@ -1047,8 +960,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/import-a-google-font", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/import-a-google-font" }, "id": "bad87fee1348bd9aedf08807", "title": "Import a Google Font" @@ -1059,8 +971,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/improve-compatibility-with-browser-fallbacks", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/improve-compatibility-with-browser-fallbacks" }, "id": "5b7d72c338cd7e35b63f3e14", "title": "Improve Compatibility with Browser Fallbacks" @@ -1071,8 +982,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/inherit-css-variables", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/inherit-css-variables" }, "id": "5a9d7295424fe3d0e10cad14", "title": "Inherit CSS Variables" @@ -1083,8 +993,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/inherit-styles-from-the-body-element", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/inherit-styles-from-the-body-element" }, "id": "bad87fee1348bd9aedf08746", "title": "Inherit Styles from the Body Element" @@ -1095,8 +1004,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/make-circular-images-with-a-border-radius", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/make-circular-images-with-a-border-radius" }, "id": "bad87fee1348bd9aedf08815", "title": "Make Circular Images with a border-radius" @@ -1107,8 +1015,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/override-all-other-styles-by-using-important", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/override-all-other-styles-by-using-important" }, "id": "bad87fee1348bd9aedf07756", "title": "Override All Other Styles by using Important" @@ -1119,8 +1026,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/override-class-declarations-by-styling-id-attributes", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/override-class-declarations-by-styling-id-attributes" }, "id": "bad87fee1348bd8aedf06756", "title": "Override Class Declarations by Styling ID Attributes" @@ -1131,8 +1037,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/override-class-declarations-with-inline-styles", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/override-class-declarations-with-inline-styles" }, "id": "bad87fee1348bd9aedf06756", "title": "Override Class Declarations with Inline Styles" @@ -1143,8 +1048,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/override-styles-in-subsequent-css", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/override-styles-in-subsequent-css" }, "id": "bad87fee1348bd9aedf04756", "title": "Override Styles in Subsequent CSS" @@ -1155,8 +1059,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/prioritize-one-style-over-another", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/prioritize-one-style-over-another" }, "id": "bad87fee1348bd9aedf08756", "title": "Prioritize One Style Over Another" @@ -1167,8 +1070,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/set-the-font-family-of-an-element", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/set-the-font-family-of-an-element" }, "id": "bad87fee1348bd9aede08807", "title": "Set the Font Family of an Element" @@ -1179,8 +1081,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/set-the-id-of-an-element", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/set-the-id-of-an-element" }, "id": "bad87eee1348bd9aede07836", "title": "Set the id of an Element" @@ -1191,8 +1092,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/size-your-images", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/size-your-images" }, "id": "bad87fee1348bd9acdf08812", "title": "Size Your Images" @@ -1203,8 +1103,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/specify-how-fonts-should-degrade", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/specify-how-fonts-should-degrade" }, "id": "bad87fee1348bd9aedf08808", "title": "Specify How Fonts Should Degrade" @@ -1215,8 +1114,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/style-multiple-elements-with-a-css-class", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/style-multiple-elements-with-a-css-class" }, "id": "bad87fee1348bd9aefe08806", "title": "Style Multiple Elements with a CSS Class" @@ -1227,8 +1125,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/style-the-html-body-element", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/style-the-html-body-element" }, "id": "bad87fee1348bd9aedf08736", "title": "Style the HTML Body Element" @@ -1239,8 +1136,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/understand-absolute-versus-relative-units", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/understand-absolute-versus-relative-units" }, "id": "bad82fee1322bd9aedf08721", "title": "Understand Absolute versus Relative Units" @@ -1251,8 +1147,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/use-a-css-class-to-style-an-element", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/use-a-css-class-to-style-an-element" }, "id": "bad87fee1348bd9aecf08806", "title": "Use a CSS Class to Style an Element" @@ -1263,8 +1158,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/use-a-custom-css-variable", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/use-a-custom-css-variable" }, "id": "5a9d727a424fe3d0e10cad12", "title": "Use a custom CSS Variable" @@ -1275,8 +1169,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/use-a-media-query-to-change-a-variable", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/use-a-media-query-to-change-a-variable" }, "id": "5a9d72ad424fe3d0e10cad16", "title": "Use a media query to change a variable" @@ -1287,8 +1180,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/use-abbreviated-hex-code", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/use-abbreviated-hex-code" }, "id": "bad87fee1348bd9aedf08719", "title": "Use Abbreviated Hex Code" @@ -1299,8 +1191,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/use-an-id-attribute-to-style-an-element", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/use-an-id-attribute-to-style-an-element" }, "id": "bad87dee1348bd9aede07836", "title": "Use an id Attribute to Style an Element" @@ -1311,8 +1202,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/use-attribute-selectors-to-style-elements", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/use-attribute-selectors-to-style-elements" }, "id": "58c383d33e2e3259241f3076", "title": "Use Attribute Selectors to Style Elements" @@ -1323,8 +1213,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/use-clockwise-notation-to-specify-the-margin-of-an-element", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/use-clockwise-notation-to-specify-the-margin-of-an-element" }, "id": "bad87fee1348bd9afdf08726", "title": "Use Clockwise Notation to Specify the Margin of an Element" @@ -1335,8 +1224,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/use-clockwise-notation-to-specify-the-padding-of-an-element", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/use-clockwise-notation-to-specify-the-padding-of-an-element" }, "id": "bad87fee1348bd9aedf08826", "title": "Use Clockwise Notation to Specify the Padding of an Element" @@ -1347,8 +1235,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/use-css-selectors-to-style-elements", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/use-css-selectors-to-style-elements" }, "id": "bad87fee1348bd9aedf08805", "title": "Use CSS Selectors to Style Elements" @@ -1359,8 +1246,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/use-css-variables-to-change-several-elements-at-once", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/use-css-variables-to-change-several-elements-at-once" }, "id": "5a9d725e424fe3d0e10cad10", "title": "Use CSS Variables to change several elements at once" @@ -1371,8 +1257,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/use-hex-code-for-specific-colors", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/use-hex-code-for-specific-colors" }, "id": "bad87fee1348bd9aedf08726", "title": "Use Hex Code for Specific Colors" @@ -1383,8 +1268,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/use-hex-code-to-mix-colors", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/use-hex-code-to-mix-colors" }, "id": "bad87fee1348bd9aedf08721", "title": "Use Hex Code to Mix Colors" @@ -1395,8 +1279,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/use-rgb-to-mix-colors", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/use-rgb-to-mix-colors" }, "id": "bad82fee1348bd9aedf08721", "title": "Use RGB to Mix Colors" @@ -1407,8 +1290,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-css/use-rgb-values-to-color-elements", - "blockName": "Basic CSS" + "slug": "/learn/responsive-web-design/basic-css/use-rgb-values-to-color-elements" }, "id": "bad87fee1348bd9aede08718", "title": "Use RGB values to Color Elements" @@ -1419,8 +1301,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-html-and-html5/add-a-submit-button-to-a-form", - "blockName": "Basic HTML and HTML5" + "slug": "/learn/responsive-web-design/basic-html-and-html5/add-a-submit-button-to-a-form" }, "id": "bad87fee1348bd9aedd08830", "title": "Add a Submit Button to a Form" @@ -1431,8 +1312,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-html-and-html5/add-images-to-your-website", - "blockName": "Basic HTML and HTML5" + "slug": "/learn/responsive-web-design/basic-html-and-html5/add-images-to-your-website" }, "id": "bad87fee1348bd9aedf08812", "title": "Add Images to Your Website" @@ -1443,8 +1323,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-html-and-html5/add-placeholder-text-to-a-text-field", - "blockName": "Basic HTML and HTML5" + "slug": "/learn/responsive-web-design/basic-html-and-html5/add-placeholder-text-to-a-text-field" }, "id": "bad87fee1348bd9aedf08830", "title": "Add Placeholder Text to a Text Field" @@ -1455,8 +1334,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-html-and-html5/check-radio-buttons-and-checkboxes-by-default", - "blockName": "Basic HTML and HTML5" + "slug": "/learn/responsive-web-design/basic-html-and-html5/check-radio-buttons-and-checkboxes-by-default" }, "id": "bad87fee1348bd9aedd08835", "title": "Check Radio Buttons and Checkboxes by Default" @@ -1467,8 +1345,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-html-and-html5/comment-out-html", - "blockName": "Basic HTML and HTML5" + "slug": "/learn/responsive-web-design/basic-html-and-html5/comment-out-html" }, "id": "bad87fee1348bd9aedf08804", "title": "Comment out HTML" @@ -1479,8 +1356,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-html-and-html5/create-a-bulleted-unordered-list", - "blockName": "Basic HTML and HTML5" + "slug": "/learn/responsive-web-design/basic-html-and-html5/create-a-bulleted-unordered-list" }, "id": "bad87fee1348bd9aedf08827", "title": "Create a Bulleted Unordered List" @@ -1491,8 +1367,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-html-and-html5/create-a-form-element", - "blockName": "Basic HTML and HTML5" + "slug": "/learn/responsive-web-design/basic-html-and-html5/create-a-form-element" }, "id": "bad87fee1348bd9aede08830", "title": "Create a Form Element" @@ -1503,8 +1378,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-html-and-html5/create-a-set-of-checkboxes", - "blockName": "Basic HTML and HTML5" + "slug": "/learn/responsive-web-design/basic-html-and-html5/create-a-set-of-checkboxes" }, "id": "bad87fee1348bd9aedf08835", "title": "Create a Set of Checkboxes" @@ -1515,8 +1389,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-html-and-html5/create-a-set-of-radio-buttons", - "blockName": "Basic HTML and HTML5" + "slug": "/learn/responsive-web-design/basic-html-and-html5/create-a-set-of-radio-buttons" }, "id": "bad87fee1348bd9aedf08834", "title": "Create a Set of Radio Buttons" @@ -1527,8 +1400,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-html-and-html5/create-a-text-field", - "blockName": "Basic HTML and HTML5" + "slug": "/learn/responsive-web-design/basic-html-and-html5/create-a-text-field" }, "id": "bad87fee1348bd9aedf08829", "title": "Create a Text Field" @@ -1539,8 +1411,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-html-and-html5/create-an-ordered-list", - "blockName": "Basic HTML and HTML5" + "slug": "/learn/responsive-web-design/basic-html-and-html5/create-an-ordered-list" }, "id": "bad87fee1348bd9aedf08828", "title": "Create an Ordered List" @@ -1551,8 +1422,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-html-and-html5/declare-the-doctype-of-an-html-document", - "blockName": "Basic HTML and HTML5" + "slug": "/learn/responsive-web-design/basic-html-and-html5/declare-the-doctype-of-an-html-document" }, "id": "587d78aa367417b2b2512aed", "title": "Declare the Doctype of an HTML Document" @@ -1563,8 +1433,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-html-and-html5/define-the-head-and-body-of-an-html-document", - "blockName": "Basic HTML and HTML5" + "slug": "/learn/responsive-web-design/basic-html-and-html5/define-the-head-and-body-of-an-html-document" }, "id": "587d78aa367417b2b2512aec", "title": "Define the Head and Body of an HTML Document" @@ -1575,8 +1444,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-html-and-html5/delete-html-elements", - "blockName": "Basic HTML and HTML5" + "slug": "/learn/responsive-web-design/basic-html-and-html5/delete-html-elements" }, "id": "bad87fed1348bd9aedf08833", "title": "Delete HTML Elements" @@ -1587,8 +1455,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-html-and-html5/fill-in-the-blank-with-placeholder-text", - "blockName": "Basic HTML and HTML5" + "slug": "/learn/responsive-web-design/basic-html-and-html5/fill-in-the-blank-with-placeholder-text" }, "id": "bad87fee1348bd9aedf08833", "title": "Fill in the Blank with Placeholder Text" @@ -1599,8 +1466,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-html-and-html5/headline-with-the-h2-element", - "blockName": "Basic HTML and HTML5" + "slug": "/learn/responsive-web-design/basic-html-and-html5/headline-with-the-h2-element" }, "id": "bad87fee1348bd9aedf0887a", "title": "Headline with the h2 Element" @@ -1611,8 +1477,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-html-and-html5/inform-with-the-paragraph-element", - "blockName": "Basic HTML and HTML5" + "slug": "/learn/responsive-web-design/basic-html-and-html5/inform-with-the-paragraph-element" }, "id": "bad87fee1348bd9aedf08801", "title": "Inform with the Paragraph Element" @@ -1623,8 +1488,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-html-and-html5/introduction-to-html5-elements", - "blockName": "Basic HTML and HTML5" + "slug": "/learn/responsive-web-design/basic-html-and-html5/introduction-to-html5-elements" }, "id": "bad87fee1348bd9aecf08801", "title": "Introduction to HTML5 Elements" @@ -1635,8 +1499,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-html-and-html5/link-to-external-pages-with-anchor-elements", - "blockName": "Basic HTML and HTML5" + "slug": "/learn/responsive-web-design/basic-html-and-html5/link-to-external-pages-with-anchor-elements" }, "id": "bad87fee1348bd9aedf08816", "title": "Link to External Pages with Anchor Elements" @@ -1647,8 +1510,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-html-and-html5/link-to-internal-sections-of-a-page-with-anchor-elements", - "blockName": "Basic HTML and HTML5" + "slug": "/learn/responsive-web-design/basic-html-and-html5/link-to-internal-sections-of-a-page-with-anchor-elements" }, "id": "bad88fee1348bd9aedf08816", "title": "Link to Internal Sections of a Page with Anchor Elements" @@ -1659,8 +1521,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-html-and-html5/make-dead-links-using-the-hash-symbol", - "blockName": "Basic HTML and HTML5" + "slug": "/learn/responsive-web-design/basic-html-and-html5/make-dead-links-using-the-hash-symbol" }, "id": "bad87fee1348bd9aedf08817", "title": "Make Dead Links Using the Hash Symbol" @@ -1671,8 +1532,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-html-and-html5/nest-an-anchor-element-within-a-paragraph", - "blockName": "Basic HTML and HTML5" + "slug": "/learn/responsive-web-design/basic-html-and-html5/nest-an-anchor-element-within-a-paragraph" }, "id": "bad87fee1348bd9aede08817", "title": "Nest an Anchor Element within a Paragraph" @@ -1683,8 +1543,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-html-and-html5/nest-many-elements-within-a-single-div-element", - "blockName": "Basic HTML and HTML5" + "slug": "/learn/responsive-web-design/basic-html-and-html5/nest-many-elements-within-a-single-div-element" }, "id": "bad87fee1348bd9aede08835", "title": "Nest Many Elements within a Single div Element" @@ -1695,8 +1554,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-html-and-html5/say-hello-to-html-elements", - "blockName": "Basic HTML and HTML5" + "slug": "/learn/responsive-web-design/basic-html-and-html5/say-hello-to-html-elements" }, "id": "bd7123c8c441eddfaeb5bdef", "title": "Say Hello to HTML Elements" @@ -1707,8 +1565,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-html-and-html5/turn-an-image-into-a-link", - "blockName": "Basic HTML and HTML5" + "slug": "/learn/responsive-web-design/basic-html-and-html5/turn-an-image-into-a-link" }, "id": "bad87fee1348bd9aedf08820", "title": "Turn an Image into a Link" @@ -1719,8 +1576,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-html-and-html5/uncomment-html", - "blockName": "Basic HTML and HTML5" + "slug": "/learn/responsive-web-design/basic-html-and-html5/uncomment-html" }, "id": "bad87fee1348bd9aedf08802", "title": "Uncomment HTML" @@ -1731,8 +1587,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-html-and-html5/use-html5-to-require-a-field", - "blockName": "Basic HTML and HTML5" + "slug": "/learn/responsive-web-design/basic-html-and-html5/use-html5-to-require-a-field" }, "id": "bad87fee1348bd9aedc08830", "title": "Use HTML5 to Require a Field" @@ -1743,8 +1598,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/basic-html-and-html5/use-the-value-attribute-with-radio-buttons-and-checkboxes", - "blockName": "Basic HTML and HTML5" + "slug": "/learn/responsive-web-design/basic-html-and-html5/use-the-value-attribute-with-radio-buttons-and-checkboxes" }, "id": "5c6c06847491271903d37cfd", "title": "Use the value attribute with Radio Buttons and Checkboxes" @@ -1755,8 +1609,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-flexbox/add-flex-superpowers-to-the-tweet-embed", - "blockName": "CSS Flexbox" + "slug": "/learn/responsive-web-design/css-flexbox/add-flex-superpowers-to-the-tweet-embed" }, "id": "587d78ab367417b2b2512af1", "title": "Add Flex Superpowers to the Tweet Embed" @@ -1767,8 +1620,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-flexbox/align-elements-using-the-align-items-property", - "blockName": "CSS Flexbox" + "slug": "/learn/responsive-web-design/css-flexbox/align-elements-using-the-align-items-property" }, "id": "587d78ad367417b2b2512af8", "title": "Align Elements Using the align-items Property" @@ -1779,8 +1631,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-flexbox/align-elements-using-the-justify-content-property", - "blockName": "CSS Flexbox" + "slug": "/learn/responsive-web-design/css-flexbox/align-elements-using-the-justify-content-property" }, "id": "587d78ac367417b2b2512af6", "title": "Align Elements Using the justify-content Property" @@ -1791,8 +1642,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed", - "blockName": "CSS Flexbox" + "slug": "/learn/responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed" }, "id": "587d78ac367417b2b2512af5", "title": "Apply the flex-direction Property to Create a Column in the Tweet Embed" @@ -1803,8 +1653,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed", - "blockName": "CSS Flexbox" + "slug": "/learn/responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed" }, "id": "587d78ab367417b2b2512af3", "title": "Apply the flex-direction Property to Create Rows in the Tweet Embed" @@ -1815,8 +1664,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-flexbox/use-display-flex-to-position-two-boxes", - "blockName": "CSS Flexbox" + "slug": "/learn/responsive-web-design/css-flexbox/use-display-flex-to-position-two-boxes" }, "id": "587d78ab367417b2b2512af0", "title": "Use display: flex to Position Two Boxes" @@ -1827,8 +1675,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed", - "blockName": "CSS Flexbox" + "slug": "/learn/responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed" }, "id": "587d78ad367417b2b2512af9", "title": "Use the align-items Property in the Tweet Embed" @@ -1839,8 +1686,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-flexbox/use-the-align-self-property", - "blockName": "CSS Flexbox" + "slug": "/learn/responsive-web-design/css-flexbox/use-the-align-self-property" }, "id": "587d78af367417b2b2512b00", "title": "Use the align-self Property" @@ -1851,8 +1697,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-flexbox/use-the-flex-basis-property-to-set-the-initial-size-of-an-item", - "blockName": "CSS Flexbox" + "slug": "/learn/responsive-web-design/css-flexbox/use-the-flex-basis-property-to-set-the-initial-size-of-an-item" }, "id": "587d78ae367417b2b2512afd", "title": "Use the flex-basis Property to Set the Initial Size of an Item" @@ -1863,8 +1708,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-flexbox/use-the-flex-direction-property-to-make-a-column", - "blockName": "CSS Flexbox" + "slug": "/learn/responsive-web-design/css-flexbox/use-the-flex-direction-property-to-make-a-column" }, "id": "587d78ac367417b2b2512af4", "title": "Use the flex-direction Property to Make a Column" @@ -1875,8 +1719,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-flexbox/use-the-flex-direction-property-to-make-a-row", - "blockName": "CSS Flexbox" + "slug": "/learn/responsive-web-design/css-flexbox/use-the-flex-direction-property-to-make-a-row" }, "id": "587d78ab367417b2b2512af2", "title": "Use the flex-direction Property to Make a Row" @@ -1887,8 +1730,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-flexbox/use-the-flex-grow-property-to-expand-items", - "blockName": "CSS Flexbox" + "slug": "/learn/responsive-web-design/css-flexbox/use-the-flex-grow-property-to-expand-items" }, "id": "587d78ae367417b2b2512afc", "title": "Use the flex-grow Property to Expand Items" @@ -1899,8 +1741,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-flexbox/use-the-flex-shorthand-property", - "blockName": "CSS Flexbox" + "slug": "/learn/responsive-web-design/css-flexbox/use-the-flex-shorthand-property" }, "id": "587d78ae367417b2b2512afe", "title": "Use the flex Shorthand Property" @@ -1911,8 +1752,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-flexbox/use-the-flex-shrink-property-to-shrink-items", - "blockName": "CSS Flexbox" + "slug": "/learn/responsive-web-design/css-flexbox/use-the-flex-shrink-property-to-shrink-items" }, "id": "587d78ad367417b2b2512afb", "title": "Use the flex-shrink Property to Shrink Items" @@ -1923,8 +1763,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-flexbox/use-the-flex-wrap-property-to-wrap-a-row-or-column", - "blockName": "CSS Flexbox" + "slug": "/learn/responsive-web-design/css-flexbox/use-the-flex-wrap-property-to-wrap-a-row-or-column" }, "id": "587d78ad367417b2b2512afa", "title": "Use the flex-wrap Property to Wrap a Row or Column" @@ -1935,8 +1774,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed", - "blockName": "CSS Flexbox" + "slug": "/learn/responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed" }, "id": "587d78ac367417b2b2512af7", "title": "Use the justify-content Property in the Tweet Embed" @@ -1947,8 +1785,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-flexbox/use-the-order-property-to-rearrange-items", - "blockName": "CSS Flexbox" + "slug": "/learn/responsive-web-design/css-flexbox/use-the-order-property-to-rearrange-items" }, "id": "587d78ae367417b2b2512aff", "title": "Use the order Property to Rearrange Items" @@ -1959,8 +1796,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-grid/add-columns-with-grid-template-columns", - "blockName": "CSS Grid" + "slug": "/learn/responsive-web-design/css-grid/add-columns-with-grid-template-columns" }, "id": "5a9036d038fddaf9a66b5d32", "title": "Add Columns with grid-template-columns" @@ -1971,8 +1807,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-grid/add-gaps-faster-with-grid-gap", - "blockName": "CSS Grid" + "slug": "/learn/responsive-web-design/css-grid/add-gaps-faster-with-grid-gap" }, "id": "5a9036ee38fddaf9a66b5d37", "title": "Add Gaps Faster with grid-gap" @@ -1983,8 +1818,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-grid/add-rows-with-grid-template-rows", - "blockName": "CSS Grid" + "slug": "/learn/responsive-web-design/css-grid/add-rows-with-grid-template-rows" }, "id": "5a9036e138fddaf9a66b5d33", "title": "Add Rows with grid-template-rows" @@ -1995,8 +1829,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-grid/align-all-items-horizontally-using-justify-items", - "blockName": "CSS Grid" + "slug": "/learn/responsive-web-design/css-grid/align-all-items-horizontally-using-justify-items" }, "id": "5a90376038fddaf9a66b5d3c", "title": "Align All Items Horizontally using justify-items" @@ -2007,8 +1840,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-grid/align-all-items-vertically-using-align-items", - "blockName": "CSS Grid" + "slug": "/learn/responsive-web-design/css-grid/align-all-items-vertically-using-align-items" }, "id": "5a94fdf869fb03452672e45b", "title": "Align All Items Vertically using align-items" @@ -2019,8 +1851,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-grid/align-an-item-horizontally-using-justify-self", - "blockName": "CSS Grid" + "slug": "/learn/responsive-web-design/css-grid/align-an-item-horizontally-using-justify-self" }, "id": "5a90374338fddaf9a66b5d3a", "title": "Align an Item Horizontally using justify-self" @@ -2031,8 +1862,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-grid/align-an-item-vertically-using-align-self", - "blockName": "CSS Grid" + "slug": "/learn/responsive-web-design/css-grid/align-an-item-vertically-using-align-self" }, "id": "5a90375238fddaf9a66b5d3b", "title": "Align an Item Vertically using align-self" @@ -2043,8 +1873,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-grid/create-a-column-gap-using-grid-column-gap", - "blockName": "CSS Grid" + "slug": "/learn/responsive-web-design/css-grid/create-a-column-gap-using-grid-column-gap" }, "id": "5a9036ee38fddaf9a66b5d35", "title": "Create a Column Gap Using grid-column-gap" @@ -2055,8 +1884,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-grid/create-a-row-gap-using-grid-row-gap", - "blockName": "CSS Grid" + "slug": "/learn/responsive-web-design/css-grid/create-a-row-gap-using-grid-row-gap" }, "id": "5a9036ee38fddaf9a66b5d36", "title": "Create a Row Gap using grid-row-gap" @@ -2067,8 +1895,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-grid/create-flexible-layouts-using-auto-fill", - "blockName": "CSS Grid" + "slug": "/learn/responsive-web-design/css-grid/create-flexible-layouts-using-auto-fill" }, "id": "5a94fe5469fb03452672e461", "title": "Create Flexible Layouts Using auto-fill" @@ -2079,8 +1906,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-grid/create-flexible-layouts-using-auto-fit", - "blockName": "CSS Grid" + "slug": "/learn/responsive-web-design/css-grid/create-flexible-layouts-using-auto-fit" }, "id": "5a94fe6269fb03452672e462", "title": "Create Flexible Layouts Using auto-fit" @@ -2091,8 +1917,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-grid/create-grids-within-grids", - "blockName": "CSS Grid" + "slug": "/learn/responsive-web-design/css-grid/create-grids-within-grids" }, "id": "5a94fe8569fb03452672e464", "title": "Create Grids within Grids" @@ -2103,8 +1928,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-grid/create-your-first-css-grid", - "blockName": "CSS Grid" + "slug": "/learn/responsive-web-design/css-grid/create-your-first-css-grid" }, "id": "5a858944d96184f06fd60d61", "title": "Create Your First CSS Grid" @@ -2115,8 +1939,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-grid/divide-the-grid-into-an-area-template", - "blockName": "CSS Grid" + "slug": "/learn/responsive-web-design/css-grid/divide-the-grid-into-an-area-template" }, "id": "5a94fe0569fb03452672e45c", "title": "Divide the Grid Into an Area Template" @@ -2127,8 +1950,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-grid/limit-item-size-using-the-minmax-function", - "blockName": "CSS Grid" + "slug": "/learn/responsive-web-design/css-grid/limit-item-size-using-the-minmax-function" }, "id": "5a94fe4469fb03452672e460", "title": "Limit Item Size Using the minmax Function" @@ -2139,8 +1961,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-grid/place-items-in-grid-areas-using-the-grid-area-property", - "blockName": "CSS Grid" + "slug": "/learn/responsive-web-design/css-grid/place-items-in-grid-areas-using-the-grid-area-property" }, "id": "5a94fe1369fb03452672e45d", "title": "Place Items in Grid Areas Using the grid-area Property" @@ -2151,8 +1972,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-grid/reduce-repetition-using-the-repeat-function", - "blockName": "CSS Grid" + "slug": "/learn/responsive-web-design/css-grid/reduce-repetition-using-the-repeat-function" }, "id": "5a94fe3669fb03452672e45f", "title": "Reduce Repetition Using the repeat Function" @@ -2163,8 +1983,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-grid/use-css-grid-units-to-change-the-size-of-columns-and-rows", - "blockName": "CSS Grid" + "slug": "/learn/responsive-web-design/css-grid/use-css-grid-units-to-change-the-size-of-columns-and-rows" }, "id": "5a9036ee38fddaf9a66b5d34", "title": "Use CSS Grid units to Change the Size of Columns and Rows" @@ -2175,8 +1994,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-grid/use-grid-area-without-creating-an-areas-template", - "blockName": "CSS Grid" + "slug": "/learn/responsive-web-design/css-grid/use-grid-area-without-creating-an-areas-template" }, "id": "5a94fe2669fb03452672e45e", "title": "Use grid-area Without Creating an Areas Template" @@ -2187,8 +2005,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-grid/use-grid-column-to-control-spacing", - "blockName": "CSS Grid" + "slug": "/learn/responsive-web-design/css-grid/use-grid-column-to-control-spacing" }, "id": "5a90372638fddaf9a66b5d38", "title": "Use grid-column to Control Spacing" @@ -2199,8 +2016,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-grid/use-grid-row-to-control-spacing", - "blockName": "CSS Grid" + "slug": "/learn/responsive-web-design/css-grid/use-grid-row-to-control-spacing" }, "id": "5a90373638fddaf9a66b5d39", "title": "Use grid-row to Control Spacing" @@ -2211,8 +2027,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/css-grid/use-media-queries-to-create-responsive-layouts", - "blockName": "CSS Grid" + "slug": "/learn/responsive-web-design/css-grid/use-media-queries-to-create-responsive-layouts" }, "id": "5a94fe7769fb03452672e463", "title": "Use Media Queries to Create Responsive Layouts" @@ -2223,8 +2038,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/responsive-web-design-principles/create-a-media-query", - "blockName": "Responsive Web Design Principles" + "slug": "/learn/responsive-web-design/responsive-web-design-principles/create-a-media-query" }, "id": "587d78b0367417b2b2512b08", "title": "Create a Media Query" @@ -2235,8 +2049,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/responsive-web-design-principles/make-an-image-responsive", - "blockName": "Responsive Web Design Principles" + "slug": "/learn/responsive-web-design/responsive-web-design-principles/make-an-image-responsive" }, "id": "587d78b1367417b2b2512b09", "title": "Make an Image Responsive" @@ -2247,8 +2060,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/responsive-web-design-principles/make-typography-responsive", - "blockName": "Responsive Web Design Principles" + "slug": "/learn/responsive-web-design/responsive-web-design-principles/make-typography-responsive" }, "id": "587d78b1367417b2b2512b0c", "title": "Make Typography Responsive" @@ -2259,8 +2071,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/responsive-web-design-principles/use-a-retina-image-for-higher-resolution-displays", - "blockName": "Responsive Web Design Principles" + "slug": "/learn/responsive-web-design/responsive-web-design-principles/use-a-retina-image-for-higher-resolution-displays" }, "id": "587d78b1367417b2b2512b0a", "title": "Use a Retina Image for Higher Resolution Displays" @@ -2271,8 +2082,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/responsive-web-design-projects/build-a-personal-portfolio-webpage", - "blockName": "Responsive Web Design Projects" + "slug": "/learn/responsive-web-design/responsive-web-design-projects/build-a-personal-portfolio-webpage" }, "id": "bd7158d8c242eddfaeb5bd13", "title": "Build a Personal Portfolio Webpage" @@ -2283,8 +2093,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/responsive-web-design-projects/build-a-product-landing-page", - "blockName": "Responsive Web Design Projects" + "slug": "/learn/responsive-web-design/responsive-web-design-projects/build-a-product-landing-page" }, "id": "587d78af367417b2b2512b04", "title": "Build a Product Landing Page" @@ -2295,8 +2104,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/responsive-web-design-projects/build-a-survey-form", - "blockName": "Responsive Web Design Projects" + "slug": "/learn/responsive-web-design/responsive-web-design-projects/build-a-survey-form" }, "id": "587d78af367417b2b2512b03", "title": "Build a Survey Form" @@ -2307,8 +2115,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/responsive-web-design-projects/build-a-technical-documentation-page", - "blockName": "Responsive Web Design Projects" + "slug": "/learn/responsive-web-design/responsive-web-design-projects/build-a-technical-documentation-page" }, "id": "587d78b0367417b2b2512b05", "title": "Build a Technical Documentation Page" @@ -2319,8 +2126,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/responsive-web-design/responsive-web-design-projects/build-a-tribute-page", - "blockName": "Responsive Web Design Projects" + "slug": "/learn/responsive-web-design/responsive-web-design-projects/build-a-tribute-page" }, "id": "bd7158d8c442eddfaeb5bd18", "title": "Build a Tribute Page" @@ -2331,8 +2137,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/boo-who", - "blockName": "Basic Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/boo-who" }, "id": "a77dbc43c33f39daa4429b4f", "title": "Boo who" @@ -2343,8 +2148,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/chunky-monkey", - "blockName": "Basic Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/chunky-monkey" }, "id": "a9bd25c716030ec90084d8a1", "title": "Chunky Monkey" @@ -2355,8 +2159,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/confirm-the-ending", - "blockName": "Basic Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/confirm-the-ending" }, "id": "acda2fb1324d9b0fa741e6b5", "title": "Confirm the Ending" @@ -2367,8 +2170,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/convert-celsius-to-fahrenheit", - "blockName": "Basic Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/convert-celsius-to-fahrenheit" }, "id": "56533eb9ac21ba0edf2244b3", "title": "Convert Celsius to Fahrenheit" @@ -2379,8 +2181,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/factorialize-a-number", - "blockName": "Basic Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/factorialize-a-number" }, "id": "a302f7aae1aa3152a5b413bc", "title": "Factorialize a Number" @@ -2391,8 +2192,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/falsy-bouncer", - "blockName": "Basic Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/falsy-bouncer" }, "id": "adf08ec01beb4f99fc7a68f2", "title": "Falsy Bouncer" @@ -2403,8 +2203,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/find-the-longest-word-in-a-string", - "blockName": "Basic Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/find-the-longest-word-in-a-string" }, "id": "a26cbbe9ad8655a977e1ceb5", "title": "Find the Longest Word in a String" @@ -2415,8 +2214,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/finders-keepers", - "blockName": "Basic Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/finders-keepers" }, "id": "a6e40f1041b06c996f7b2406", "title": "Finders Keepers" @@ -2427,8 +2225,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/mutations", - "blockName": "Basic Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/mutations" }, "id": "af2170cad53daa0770fabdea", "title": "Mutations" @@ -2439,8 +2236,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/repeat-a-string-repeat-a-string", - "blockName": "Basic Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/repeat-a-string-repeat-a-string" }, "id": "afcc8d540bea9ea2669306b6", "title": "Repeat a String Repeat a String" @@ -2451,8 +2247,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/return-largest-numbers-in-arrays", - "blockName": "Basic Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/return-largest-numbers-in-arrays" }, "id": "a789b3483989747d63b0e427", "title": "Return Largest Numbers in Arrays" @@ -2463,8 +2258,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/reverse-a-string", - "blockName": "Basic Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/reverse-a-string" }, "id": "a202eed8fc186c8434cb6d61", "title": "Reverse a String" @@ -2475,8 +2269,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/slice-and-splice", - "blockName": "Basic Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/slice-and-splice" }, "id": "579e2a2c335b9d72dd32e05c", "title": "Slice and Splice" @@ -2487,8 +2280,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/title-case-a-sentence", - "blockName": "Basic Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/title-case-a-sentence" }, "id": "ab6137d4e35944e21037b769", "title": "Title Case a Sentence" @@ -2499,8 +2291,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/truncate-a-string", - "blockName": "Basic Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/truncate-a-string" }, "id": "ac6993d51946422351508a41", "title": "Truncate a String" @@ -2511,8 +2302,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/where-do-i-belong", - "blockName": "Basic Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/where-do-i-belong" }, "id": "a24c1a4622e3c05097f71d67", "title": "Where do I Belong" @@ -2523,8 +2313,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/access-an-arrays-contents-using-bracket-notation", - "blockName": "Basic Data Structures" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/access-an-arrays-contents-using-bracket-notation" }, "id": "5a661e0f1068aca922b3ef17", "title": "Access an Array's Contents Using Bracket Notation" @@ -2535,8 +2324,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/access-property-names-with-bracket-notation", - "blockName": "Basic Data Structures" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/access-property-names-with-bracket-notation" }, "id": "587d7b7c367417b2b2512b1a", "title": "Access Property Names with Bracket Notation" @@ -2547,8 +2335,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/add-items-to-an-array-with-push-and-unshift", - "blockName": "Basic Data Structures" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/add-items-to-an-array-with-push-and-unshift" }, "id": "587d78b2367417b2b2512b0e", "title": "Add Items to an Array with push() and unshift()" @@ -2559,8 +2346,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/add-items-using-splice", - "blockName": "Basic Data Structures" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/add-items-using-splice" }, "id": "587d78b3367417b2b2512b11", "title": "Add Items Using splice()" @@ -2571,8 +2357,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects", - "blockName": "Basic Data Structures" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects" }, "id": "587d7b7c367417b2b2512b18", "title": "Add Key-Value Pairs to JavaScript Objects" @@ -2583,8 +2368,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/check-for-the-presence-of-an-element-with-indexof", - "blockName": "Basic Data Structures" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/check-for-the-presence-of-an-element-with-indexof" }, "id": "587d7b7b367417b2b2512b14", "title": "Check For The Presence of an Element With indexOf()" @@ -2595,8 +2379,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/check-if-an-object-has-a-property", - "blockName": "Basic Data Structures" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/check-if-an-object-has-a-property" }, "id": "587d7b7d367417b2b2512b1c", "title": "Check if an Object has a Property" @@ -2607,8 +2390,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/combine-arrays-with-the-spread-operator", - "blockName": "Basic Data Structures" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/combine-arrays-with-the-spread-operator" }, "id": "587d7b7b367417b2b2512b17", "title": "Combine Arrays with the Spread Operator" @@ -2619,8 +2401,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/copy-an-array-with-the-spread-operator", - "blockName": "Basic Data Structures" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/copy-an-array-with-the-spread-operator" }, "id": "587d7b7b367417b2b2512b13", "title": "Copy an Array with the Spread Operator" @@ -2631,8 +2412,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/copy-array-items-using-slice", - "blockName": "Basic Data Structures" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/copy-array-items-using-slice" }, "id": "587d7b7a367417b2b2512b12", "title": "Copy Array Items Using slice()" @@ -2643,8 +2423,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/create-complex-multi-dimensional-arrays", - "blockName": "Basic Data Structures" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/create-complex-multi-dimensional-arrays" }, "id": "587d7b7b367417b2b2512b16", "title": "Create complex multi-dimensional arrays" @@ -2655,8 +2434,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/generate-an-array-of-all-object-keys-with-object-keys", - "blockName": "Basic Data Structures" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/generate-an-array-of-all-object-keys-with-object-keys" }, "id": "587d7b7d367417b2b2512b1e", "title": "Generate an Array of All Object Keys with Object.keys()" @@ -2667,8 +2445,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/iterate-through-all-an-arrays-items-using-for-loops", - "blockName": "Basic Data Structures" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/iterate-through-all-an-arrays-items-using-for-loops" }, "id": "587d7b7b367417b2b2512b15", "title": "Iterate Through All an Array's Items Using For Loops" @@ -2679,8 +2456,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/iterate-through-the-keys-of-an-object-with-a-for---in-statement", - "blockName": "Basic Data Structures" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/iterate-through-the-keys-of-an-object-with-a-for---in-statement" }, "id": "587d7b7d367417b2b2512b1d", "title": "Iterate Through the Keys of an Object with a for...in Statement" @@ -2691,8 +2467,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/modify-an-array-stored-in-an-object", - "blockName": "Basic Data Structures" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/modify-an-array-stored-in-an-object" }, "id": "587d7b7d367417b2b2512b1f", "title": "Modify an Array Stored in an Object" @@ -2703,8 +2478,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/modify-an-object-nested-within-an-object", - "blockName": "Basic Data Structures" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/modify-an-object-nested-within-an-object" }, "id": "587d7b7c367417b2b2512b19", "title": "Modify an Object Nested Within an Object" @@ -2715,8 +2489,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/remove-items-from-an-array-with-pop-and-shift", - "blockName": "Basic Data Structures" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/remove-items-from-an-array-with-pop-and-shift" }, "id": "587d78b2367417b2b2512b0f", "title": "Remove Items from an Array with pop() and shift()" @@ -2727,8 +2500,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/remove-items-using-splice", - "blockName": "Basic Data Structures" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/remove-items-using-splice" }, "id": "587d78b2367417b2b2512b10", "title": "Remove Items Using splice()" @@ -2739,8 +2511,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/use-an-array-to-store-a-collection-of-data", - "blockName": "Basic Data Structures" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/use-an-array-to-store-a-collection-of-data" }, "id": "587d7b7e367417b2b2512b20", "title": "Use an Array to Store a Collection of Data" @@ -2751,8 +2522,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/use-the-delete-keyword-to-remove-object-properties", - "blockName": "Basic Data Structures" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-data-structures/use-the-delete-keyword-to-remove-object-properties" }, "id": "587d7b7c367417b2b2512b1b", "title": "Use the delete Keyword to Remove Object Properties" @@ -2763,8 +2533,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/access-array-data-with-indexes", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/access-array-data-with-indexes" }, "id": "56bbb991ad1ed5201cd392ca", "title": "Access Array Data with Indexes" @@ -2775,8 +2544,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/access-multi-dimensional-arrays-with-indexes", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/access-multi-dimensional-arrays-with-indexes" }, "id": "56592a60ddddeae28f7aa8e1", "title": "Access Multi-Dimensional Arrays With Indexes" @@ -2787,8 +2555,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/accessing-nested-arrays", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/accessing-nested-arrays" }, "id": "56533eb9ac21ba0edf2244cd", "title": "Accessing Nested Arrays" @@ -2799,8 +2566,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/accessing-nested-objects", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/accessing-nested-objects" }, "id": "56533eb9ac21ba0edf2244cc", "title": "Accessing Nested Objects" @@ -2811,8 +2577,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/accessing-object-properties-with-bracket-notation", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/accessing-object-properties-with-bracket-notation" }, "id": "56533eb9ac21ba0edf2244c8", "title": "Accessing Object Properties with Bracket Notation" @@ -2823,8 +2588,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/accessing-object-properties-with-dot-notation", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/accessing-object-properties-with-dot-notation" }, "id": "56533eb9ac21ba0edf2244c7", "title": "Accessing Object Properties with Dot Notation" @@ -2835,8 +2599,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/accessing-object-properties-with-variables", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/accessing-object-properties-with-variables" }, "id": "56533eb9ac21ba0edf2244c9", "title": "Accessing Object Properties with Variables" @@ -2847,8 +2610,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/add-new-properties-to-a-javascript-object", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/add-new-properties-to-a-javascript-object" }, "id": "56bbb991ad1ed5201cd392d2", "title": "Add New Properties to a JavaScript Object" @@ -2859,8 +2621,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/add-two-numbers-with-javascript", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/add-two-numbers-with-javascript" }, "id": "cf1111c1c11feddfaeb3bdef", "title": "Add Two Numbers with JavaScript" @@ -2871,8 +2632,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/adding-a-default-option-in-switch-statements", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/adding-a-default-option-in-switch-statements" }, "id": "56533eb9ac21ba0edf2244de", "title": "Adding a Default Option in Switch Statements" @@ -2883,8 +2643,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/appending-variables-to-strings", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/appending-variables-to-strings" }, "id": "56533eb9ac21ba0edf2244ed", "title": "Appending Variables to Strings" @@ -2895,8 +2654,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/assigning-the-value-of-one-variable-to-another", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/assigning-the-value-of-one-variable-to-another" }, "id": "5ee127a03c3b35dd45426493", "title": "Assigning the Value of One Variable to Another" @@ -2907,8 +2665,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/assignment-with-a-returned-value", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/assignment-with-a-returned-value" }, "id": "56533eb9ac21ba0edf2244c3", "title": "Assignment with a Returned Value" @@ -2919,8 +2676,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/build-javascript-objects", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/build-javascript-objects" }, "id": "56bbb991ad1ed5201cd392d0", "title": "Build JavaScript Objects" @@ -2931,8 +2687,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/chaining-if-else-statements", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/chaining-if-else-statements" }, "id": "56533eb9ac21ba0edf2244dc", "title": "Chaining If Else Statements" @@ -2943,8 +2698,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/comment-your-javascript-code", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/comment-your-javascript-code" }, "id": "bd7123c9c441eddfaeb4bdef", "title": "Comment Your JavaScript Code" @@ -2955,8 +2709,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-equality-operator", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-equality-operator" }, "id": "56533eb9ac21ba0edf2244d0", "title": "Comparison with the Equality Operator" @@ -2967,8 +2720,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-greater-than-operator", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-greater-than-operator" }, "id": "56533eb9ac21ba0edf2244d4", "title": "Comparison with the Greater Than Operator" @@ -2979,8 +2731,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-greater-than-or-equal-to-operator", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-greater-than-or-equal-to-operator" }, "id": "56533eb9ac21ba0edf2244d5", "title": "Comparison with the Greater Than Or Equal To Operator" @@ -2991,8 +2742,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-inequality-operator", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-inequality-operator" }, "id": "56533eb9ac21ba0edf2244d2", "title": "Comparison with the Inequality Operator" @@ -3003,8 +2753,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-less-than-operator", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-less-than-operator" }, "id": "56533eb9ac21ba0edf2244d6", "title": "Comparison with the Less Than Operator" @@ -3015,8 +2764,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-less-than-or-equal-to-operator", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-less-than-or-equal-to-operator" }, "id": "56533eb9ac21ba0edf2244d7", "title": "Comparison with the Less Than Or Equal To Operator" @@ -3027,8 +2775,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-strict-equality-operator", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-strict-equality-operator" }, "id": "56533eb9ac21ba0edf2244d1", "title": "Comparison with the Strict Equality Operator" @@ -3039,8 +2786,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-strict-inequality-operator", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-strict-inequality-operator" }, "id": "56533eb9ac21ba0edf2244d3", "title": "Comparison with the Strict Inequality Operator" @@ -3051,8 +2797,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/comparisons-with-the-logical-and-operator", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/comparisons-with-the-logical-and-operator" }, "id": "56533eb9ac21ba0edf2244d8", "title": "Comparisons with the Logical And Operator" @@ -3063,8 +2808,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/comparisons-with-the-logical-or-operator", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/comparisons-with-the-logical-or-operator" }, "id": "56533eb9ac21ba0edf2244d9", "title": "Comparisons with the Logical Or Operator" @@ -3075,8 +2819,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/compound-assignment-with-augmented-addition", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/compound-assignment-with-augmented-addition" }, "id": "56533eb9ac21ba0edf2244af", "title": "Compound Assignment With Augmented Addition" @@ -3087,8 +2830,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/compound-assignment-with-augmented-division", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/compound-assignment-with-augmented-division" }, "id": "56533eb9ac21ba0edf2244b2", "title": "Compound Assignment With Augmented Division" @@ -3099,8 +2841,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/compound-assignment-with-augmented-multiplication", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/compound-assignment-with-augmented-multiplication" }, "id": "56533eb9ac21ba0edf2244b1", "title": "Compound Assignment With Augmented Multiplication" @@ -3111,8 +2852,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/compound-assignment-with-augmented-subtraction", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/compound-assignment-with-augmented-subtraction" }, "id": "56533eb9ac21ba0edf2244b0", "title": "Compound Assignment With Augmented Subtraction" @@ -3123,8 +2863,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/concatenating-strings-with-plus-operator", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/concatenating-strings-with-plus-operator" }, "id": "56533eb9ac21ba0edf2244b7", "title": "Concatenating Strings with Plus Operator" @@ -3135,8 +2874,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/concatenating-strings-with-the-plus-equals-operator", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/concatenating-strings-with-the-plus-equals-operator" }, "id": "56533eb9ac21ba0edf2244b8", "title": "Concatenating Strings with the Plus Equals Operator" @@ -3147,8 +2885,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/constructing-strings-with-variables", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/constructing-strings-with-variables" }, "id": "56533eb9ac21ba0edf2244b9", "title": "Constructing Strings with Variables" @@ -3159,8 +2896,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/count-backwards-with-a-for-loop", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/count-backwards-with-a-for-loop" }, "id": "56105e7b514f539506016a5e", "title": "Count Backwards With a For Loop" @@ -3171,8 +2907,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/counting-cards", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/counting-cards" }, "id": "565bbe00e9cc8ac0725390f4", "title": "Counting Cards" @@ -3183,8 +2918,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/create-decimal-numbers-with-javascript", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/create-decimal-numbers-with-javascript" }, "id": "cf1391c1c11feddfaeb4bdef", "title": "Create Decimal Numbers with JavaScript" @@ -3195,8 +2929,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/declare-a-read-only-variable-with-the-const-keyword", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/declare-a-read-only-variable-with-the-const-keyword" }, "id": "587d7b87367417b2b2512b41", "title": "Declare a Read-Only Variable with the const Keyword" @@ -3207,8 +2940,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/declare-javascript-variables", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/declare-javascript-variables" }, "id": "bd7123c9c443eddfaeb5bdef", "title": "Declare JavaScript Variables" @@ -3219,8 +2951,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/declare-string-variables", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/declare-string-variables" }, "id": "bd7123c9c444eddfaeb5bdef", "title": "Declare String Variables" @@ -3231,8 +2962,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/decrement-a-number-with-javascript", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/decrement-a-number-with-javascript" }, "id": "56533eb9ac21ba0edf2244ad", "title": "Decrement a Number with JavaScript" @@ -3243,8 +2973,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/delete-properties-from-a-javascript-object", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/delete-properties-from-a-javascript-object" }, "id": "56bbb991ad1ed5201cd392d3", "title": "Delete Properties from a JavaScript Object" @@ -3255,8 +2984,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/divide-one-decimal-by-another-with-javascript", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/divide-one-decimal-by-another-with-javascript" }, "id": "bd7993c9ca9feddfaeb7bdef", "title": "Divide One Decimal by Another with JavaScript" @@ -3267,8 +2995,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/divide-one-number-by-another-with-javascript", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/divide-one-number-by-another-with-javascript" }, "id": "cf1111c1c11feddfaeb6bdef", "title": "Divide One Number by Another with JavaScript" @@ -3279,8 +3006,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/escape-sequences-in-strings", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/escape-sequences-in-strings" }, "id": "56533eb9ac21ba0edf2244b6", "title": "Escape Sequences in Strings" @@ -3291,8 +3017,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/escaping-literal-quotes-in-strings", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/escaping-literal-quotes-in-strings" }, "id": "56533eb9ac21ba0edf2244b5", "title": "Escaping Literal Quotes in Strings" @@ -3303,8 +3028,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/explore-differences-between-the-var-and-let-keywords", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/explore-differences-between-the-var-and-let-keywords" }, "id": "587d7b87367417b2b2512b3f", "title": "Explore Differences Between the var and let Keywords" @@ -3315,8 +3039,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/find-the-length-of-a-string", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/find-the-length-of-a-string" }, "id": "bd7123c9c448eddfaeb5bdef", "title": "Find the Length of a String" @@ -3327,8 +3050,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/finding-a-remainder-in-javascript", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/finding-a-remainder-in-javascript" }, "id": "56533eb9ac21ba0edf2244ae", "title": "Finding a Remainder in JavaScript" @@ -3339,8 +3061,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/generate-random-fractions-with-javascript", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/generate-random-fractions-with-javascript" }, "id": "cf1111c1c11feddfaeb9bdef", "title": "Generate Random Fractions with JavaScript" @@ -3351,8 +3072,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/generate-random-whole-numbers-with-javascript", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/generate-random-whole-numbers-with-javascript" }, "id": "cf1111c1c12feddfaeb1bdef", "title": "Generate Random Whole Numbers with JavaScript" @@ -3363,8 +3083,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/generate-random-whole-numbers-within-a-range", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/generate-random-whole-numbers-within-a-range" }, "id": "cf1111c1c12feddfaeb2bdef", "title": "Generate Random Whole Numbers within a Range" @@ -3375,8 +3094,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/global-scope-and-functions", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/global-scope-and-functions" }, "id": "56533eb9ac21ba0edf2244be", "title": "Global Scope and Functions" @@ -3387,8 +3105,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/global-vs--local-scope-in-functions", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/global-vs--local-scope-in-functions" }, "id": "56533eb9ac21ba0edf2244c0", "title": "Global vs. Local Scope in Functions" @@ -3399,8 +3116,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/golf-code", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/golf-code" }, "id": "5664820f61c48e80c9fa476c", "title": "Golf Code" @@ -3411,8 +3127,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/increment-a-number-with-javascript", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/increment-a-number-with-javascript" }, "id": "56533eb9ac21ba0edf2244ac", "title": "Increment a Number with JavaScript" @@ -3423,8 +3138,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/initializing-variables-with-the-assignment-operator", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/initializing-variables-with-the-assignment-operator" }, "id": "56533eb9ac21ba0edf2244a9", "title": "Initializing Variables with the Assignment Operator" @@ -3435,8 +3149,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/introducing-else-if-statements", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/introducing-else-if-statements" }, "id": "56533eb9ac21ba0edf2244db", "title": "Introducing Else If Statements" @@ -3447,8 +3160,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/introducing-else-statements", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/introducing-else-statements" }, "id": "56533eb9ac21ba0edf2244da", "title": "Introducing Else Statements" @@ -3459,8 +3171,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/iterate-odd-numbers-with-a-for-loop", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/iterate-odd-numbers-with-a-for-loop" }, "id": "56104e9e514f539506016a5c", "title": "Iterate Odd Numbers With a For Loop" @@ -3471,8 +3182,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/iterate-through-an-array-with-a-for-loop", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/iterate-through-an-array-with-a-for-loop" }, "id": "5675e877dbd60be8ad28edc6", "title": "Iterate Through an Array with a For Loop" @@ -3483,8 +3193,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/iterate-with-javascript-do---while-loops", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/iterate-with-javascript-do---while-loops" }, "id": "5a2efd662fb457916e1fe604", "title": "Iterate with JavaScript Do...While Loops" @@ -3495,8 +3204,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/iterate-with-javascript-for-loops", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/iterate-with-javascript-for-loops" }, "id": "cf1111c1c11feddfaeb5bdef", "title": "Iterate with JavaScript For Loops" @@ -3507,8 +3215,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/iterate-with-javascript-while-loops", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/iterate-with-javascript-while-loops" }, "id": "cf1111c1c11feddfaeb1bdef", "title": "Iterate with JavaScript While Loops" @@ -3519,8 +3226,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/local-scope-and-functions", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/local-scope-and-functions" }, "id": "56533eb9ac21ba0edf2244bf", "title": "Local Scope and Functions" @@ -3531,8 +3237,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/logical-order-in-if-else-statements", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/logical-order-in-if-else-statements" }, "id": "5690307fddb111c6084545d7", "title": "Logical Order in If Else Statements" @@ -3543,8 +3248,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-pop", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-pop" }, "id": "56bbb991ad1ed5201cd392cc", "title": "Manipulate Arrays With pop()" @@ -3555,8 +3259,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-push", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-push" }, "id": "56bbb991ad1ed5201cd392cb", "title": "Manipulate Arrays With push()" @@ -3567,8 +3270,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-shift", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-shift" }, "id": "56bbb991ad1ed5201cd392cd", "title": "Manipulate Arrays With shift()" @@ -3579,8 +3281,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-unshift", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-unshift" }, "id": "56bbb991ad1ed5201cd392ce", "title": "Manipulate Arrays With unshift()" @@ -3591,8 +3292,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/manipulating-complex-objects", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/manipulating-complex-objects" }, "id": "56533eb9ac21ba0edf2244cb", "title": "Manipulating Complex Objects" @@ -3603,8 +3303,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/modify-array-data-with-indexes", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/modify-array-data-with-indexes" }, "id": "cf1111c1c11feddfaeb8bdef", "title": "Modify Array Data With Indexes" @@ -3615,8 +3314,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements" }, "id": "56533eb9ac21ba0edf2244df", "title": "Multiple Identical Options in Switch Statements" @@ -3627,8 +3325,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/multiply-two-decimals-with-javascript", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/multiply-two-decimals-with-javascript" }, "id": "bd7993c9c69feddfaeb7bdef", "title": "Multiply Two Decimals with JavaScript" @@ -3639,8 +3336,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/multiply-two-numbers-with-javascript", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/multiply-two-numbers-with-javascript" }, "id": "cf1231c1c11feddfaeb5bdef", "title": "Multiply Two Numbers with JavaScript" @@ -3651,8 +3347,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/nest-one-array-within-another-array", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/nest-one-array-within-another-array" }, "id": "cf1111c1c11feddfaeb7bdef", "title": "Nest one Array within Another Array" @@ -3663,8 +3358,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/nesting-for-loops", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/nesting-for-loops" }, "id": "56533eb9ac21ba0edf2244e1", "title": "Nesting For Loops" @@ -3675,8 +3369,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/passing-values-to-functions-with-arguments", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/passing-values-to-functions-with-arguments" }, "id": "56533eb9ac21ba0edf2244bd", "title": "Passing Values to Functions with Arguments" @@ -3687,8 +3380,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/practice-comparing-different-values", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/practice-comparing-different-values" }, "id": "599a789b454f2bbd91a3ff4d", "title": "Practice comparing different values" @@ -3699,8 +3391,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/profile-lookup", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/profile-lookup" }, "id": "5688e62ea601b2482ff8422b", "title": "Profile Lookup" @@ -3711,8 +3402,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/quoting-strings-with-single-quotes", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/quoting-strings-with-single-quotes" }, "id": "56533eb9ac21ba0edf2244b4", "title": "Quoting Strings with Single Quotes" @@ -3723,8 +3413,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/record-collection", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/record-collection" }, "id": "56533eb9ac21ba0edf2244cf", "title": "Record Collection" @@ -3735,8 +3424,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/replace-loops-using-recursion", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/replace-loops-using-recursion" }, "id": "5cfa3679138e7d9595b9d9d4", "title": "Replace Loops using Recursion" @@ -3747,8 +3435,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch" }, "id": "56533eb9ac21ba0edf2244e0", "title": "Replacing If Else Chains with Switch" @@ -3759,8 +3446,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/return-a-value-from-a-function-with-return", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/return-a-value-from-a-function-with-return" }, "id": "56533eb9ac21ba0edf2244c2", "title": "Return a Value from a Function with Return" @@ -3771,8 +3457,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/return-early-pattern-for-functions", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/return-early-pattern-for-functions" }, "id": "56533eb9ac21ba0edf2244c4", "title": "Return Early Pattern for Functions" @@ -3783,8 +3468,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/returning-boolean-values-from-functions", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/returning-boolean-values-from-functions" }, "id": "5679ceb97cbaa8c51670a16b", "title": "Returning Boolean Values from Functions" @@ -3795,8 +3479,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements" }, "id": "56533eb9ac21ba0edf2244dd", "title": "Selecting from Many Options with Switch Statements" @@ -3807,8 +3490,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/shopping-list", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/shopping-list" }, "id": "56533eb9ac21ba0edf2244bc", "title": "Shopping List" @@ -3819,8 +3501,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/stand-in-line", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/stand-in-line" }, "id": "56533eb9ac21ba0edf2244c6", "title": "Stand in Line" @@ -3831,8 +3512,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/store-multiple-values-in-one-variable-using-javascript-arrays", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/store-multiple-values-in-one-variable-using-javascript-arrays" }, "id": "bd7993c9c69feddfaeb8bdef", "title": "Store Multiple Values in one Variable using JavaScript Arrays" @@ -3843,8 +3523,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/storing-values-with-the-assignment-operator", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/storing-values-with-the-assignment-operator" }, "id": "56533eb9ac21ba0edf2244a8", "title": "Storing Values with the Assignment Operator" @@ -3855,8 +3534,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/subtract-one-number-from-another-with-javascript", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/subtract-one-number-from-another-with-javascript" }, "id": "cf1111c1c11feddfaeb4bdef", "title": "Subtract One Number from Another with JavaScript" @@ -3867,8 +3545,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/testing-objects-for-properties", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/testing-objects-for-properties" }, "id": "567af2437cbaa8c51670a16c", "title": "Testing Objects for Properties" @@ -3879,8 +3556,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/understand-string-immutability", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/understand-string-immutability" }, "id": "56533eb9ac21ba0edf2244ba", "title": "Understand String Immutability" @@ -3891,8 +3567,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/understanding-boolean-values", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/understanding-boolean-values" }, "id": "bd7123c9c441eddfaeb5bdef", "title": "Understanding Boolean Values" @@ -3903,8 +3578,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/understanding-case-sensitivity-in-variables", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/understanding-case-sensitivity-in-variables" }, "id": "56533eb9ac21ba0edf2244ab", "title": "Understanding Case Sensitivity in Variables" @@ -3915,8 +3589,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/understanding-undefined-value-returned-from-a-function", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/understanding-undefined-value-returned-from-a-function" }, "id": "598e8944f009e646fc236146", "title": "Understanding Undefined Value returned from a Function" @@ -3927,8 +3600,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/understanding-uninitialized-variables", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/understanding-uninitialized-variables" }, "id": "56533eb9ac21ba0edf2244aa", "title": "Understanding Uninitialized Variables" @@ -3939,8 +3611,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/updating-object-properties", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/updating-object-properties" }, "id": "56bbb991ad1ed5201cd392d1", "title": "Updating Object Properties" @@ -3951,8 +3622,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-first-character-in-a-string", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-first-character-in-a-string" }, "id": "bd7123c9c549eddfaeb5bdef", "title": "Use Bracket Notation to Find the First Character in a String" @@ -3963,8 +3633,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-last-character-in-a-string", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-last-character-in-a-string" }, "id": "bd7123c9c451eddfaeb5bdef", "title": "Use Bracket Notation to Find the Last Character in a String" @@ -3975,8 +3644,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-nth-character-in-a-string", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-nth-character-in-a-string" }, "id": "bd7123c9c450eddfaeb5bdef", "title": "Use Bracket Notation to Find the Nth Character in a String" @@ -3987,8 +3655,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-nth-to-last-character-in-a-string", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-nth-to-last-character-in-a-string" }, "id": "bd7123c9c452eddfaeb5bdef", "title": "Use Bracket Notation to Find the Nth-to-Last Character in a String" @@ -3999,8 +3666,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/use-conditional-logic-with-if-statements", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/use-conditional-logic-with-if-statements" }, "id": "cf1111c1c12feddfaeb3bdef", "title": "Use Conditional Logic with If Statements" @@ -4011,8 +3677,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/use-multiple-conditional-ternary-operators", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/use-multiple-conditional-ternary-operators" }, "id": "587d7b7e367417b2b2512b21", "title": "Use Multiple Conditional (Ternary) Operators" @@ -4023,8 +3688,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/use-recursion-to-create-a-countdown", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/use-recursion-to-create-a-countdown" }, "id": "5cd9a70215d3c4e65518328f", "title": "Use Recursion to Create a Countdown" @@ -4035,8 +3699,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/use-recursion-to-create-a-range-of-numbers", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/use-recursion-to-create-a-range-of-numbers" }, "id": "5cc0bd7a49b71cb96132e54c", "title": "Use Recursion to Create a Range of Numbers" @@ -4047,8 +3710,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/use-the-conditional-ternary-operator", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/use-the-conditional-ternary-operator" }, "id": "587d7b7e367417b2b2512b24", "title": "Use the Conditional (Ternary) Operator" @@ -4059,8 +3721,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/use-the-parseint-function-with-a-radix", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/use-the-parseint-function-with-a-radix" }, "id": "587d7b7e367417b2b2512b22", "title": "Use the parseInt Function with a Radix" @@ -4071,8 +3732,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/use-the-parseint-function", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/use-the-parseint-function" }, "id": "587d7b7e367417b2b2512b23", "title": "Use the parseInt Function" @@ -4083,8 +3743,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/using-objects-for-lookups", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/using-objects-for-lookups" }, "id": "56533eb9ac21ba0edf2244ca", "title": "Using Objects for Lookups" @@ -4095,8 +3754,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/word-blanks", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/word-blanks" }, "id": "56533eb9ac21ba0edf2244bb", "title": "Word Blanks" @@ -4107,8 +3765,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/write-reusable-javascript-with-functions", - "blockName": "Basic JavaScript" + "slug": "/learn/javascript-algorithms-and-data-structures/basic-javascript/write-reusable-javascript-with-functions" }, "id": "56bbb991ad1ed5201cd392cf", "title": "Write Reusable JavaScript with Functions" @@ -4119,8 +3776,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/debugging/catch-arguments-passed-in-the-wrong-order-when-calling-a-function", - "blockName": "Debugging" + "slug": "/learn/javascript-algorithms-and-data-structures/debugging/catch-arguments-passed-in-the-wrong-order-when-calling-a-function" }, "id": "587d7b85367417b2b2512b3a", "title": "Catch Arguments Passed in the Wrong Order When Calling a Function" @@ -4131,8 +3787,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/debugging/catch-missing-open-and-closing-parenthesis-after-a-function-call", - "blockName": "Debugging" + "slug": "/learn/javascript-algorithms-and-data-structures/debugging/catch-missing-open-and-closing-parenthesis-after-a-function-call" }, "id": "587d7b85367417b2b2512b39", "title": "Catch Missing Open and Closing Parenthesis After a Function Call" @@ -4143,8 +3798,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/debugging/catch-misspelled-variable-and-function-names", - "blockName": "Debugging" + "slug": "/learn/javascript-algorithms-and-data-structures/debugging/catch-misspelled-variable-and-function-names" }, "id": "587d7b84367417b2b2512b35", "title": "Catch Misspelled Variable and Function Names" @@ -4155,8 +3809,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/debugging/catch-mixed-usage-of-single-and-double-quotes", - "blockName": "Debugging" + "slug": "/learn/javascript-algorithms-and-data-structures/debugging/catch-mixed-usage-of-single-and-double-quotes" }, "id": "587d7b84367417b2b2512b37", "title": "Catch Mixed Usage of Single and Double Quotes" @@ -4167,8 +3820,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/debugging/catch-off-by-one-errors-when-using-indexing", - "blockName": "Debugging" + "slug": "/learn/javascript-algorithms-and-data-structures/debugging/catch-off-by-one-errors-when-using-indexing" }, "id": "587d7b86367417b2b2512b3b", "title": "Catch Off By One Errors When Using Indexing" @@ -4179,8 +3831,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/debugging/catch-unclosed-parentheses-brackets-braces-and-quotes", - "blockName": "Debugging" + "slug": "/learn/javascript-algorithms-and-data-structures/debugging/catch-unclosed-parentheses-brackets-braces-and-quotes" }, "id": "587d7b84367417b2b2512b36", "title": "Catch Unclosed Parentheses, Brackets, Braces and Quotes" @@ -4191,8 +3842,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/debugging/catch-use-of-assignment-operator-instead-of-equality-operator", - "blockName": "Debugging" + "slug": "/learn/javascript-algorithms-and-data-structures/debugging/catch-use-of-assignment-operator-instead-of-equality-operator" }, "id": "587d7b85367417b2b2512b38", "title": "Catch Use of Assignment Operator Instead of Equality Operator" @@ -4203,8 +3853,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/debugging/prevent-infinite-loops-with-a-valid-terminal-condition", - "blockName": "Debugging" + "slug": "/learn/javascript-algorithms-and-data-structures/debugging/prevent-infinite-loops-with-a-valid-terminal-condition" }, "id": "587d7b86367417b2b2512b3d", "title": "Prevent Infinite Loops with a Valid Terminal Condition" @@ -4215,8 +3864,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/debugging/understanding-the-differences-between-the-freecodecamp-and-browser-console", - "blockName": "Debugging" + "slug": "/learn/javascript-algorithms-and-data-structures/debugging/understanding-the-differences-between-the-freecodecamp-and-browser-console" }, "id": "587d7b83367417b2b2512b37", "title": "Understanding the Differences between the freeCodeCamp and Browser Console" @@ -4227,8 +3875,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/debugging/use-caution-when-reinitializing-variables-inside-a-loop", - "blockName": "Debugging" + "slug": "/learn/javascript-algorithms-and-data-structures/debugging/use-caution-when-reinitializing-variables-inside-a-loop" }, "id": "587d7b86367417b2b2512b3c", "title": "Use Caution When Reinitializing Variables Inside a Loop" @@ -4239,8 +3886,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/debugging/use-the-javascript-console-to-check-the-value-of-a-variable", - "blockName": "Debugging" + "slug": "/learn/javascript-algorithms-and-data-structures/debugging/use-the-javascript-console-to-check-the-value-of-a-variable" }, "id": "587d7b83367417b2b2512b33", "title": "Use the JavaScript Console to Check the Value of a Variable" @@ -4251,8 +3897,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/debugging/use-typeof-to-check-the-type-of-a-variable", - "blockName": "Debugging" + "slug": "/learn/javascript-algorithms-and-data-structures/debugging/use-typeof-to-check-the-type-of-a-variable" }, "id": "587d7b84367417b2b2512b34", "title": "Use typeof to Check the Type of a Variable" @@ -4263,8 +3908,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/compare-scopes-of-the-var-and-let-keywords", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/compare-scopes-of-the-var-and-let-keywords" }, "id": "587d7b87367417b2b2512b40", "title": "Compare Scopes of the var and let Keywords" @@ -4275,8 +3919,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/complete-a-promise-with-resolve-and-reject", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/complete-a-promise-with-resolve-and-reject" }, "id": "5cdafbc32913098997531680", "title": "Complete a Promise with resolve and reject" @@ -4287,8 +3930,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/create-a-javascript-promise", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/create-a-javascript-promise" }, "id": "5cdafbb0291309899753167f", "title": "Create a JavaScript Promise" @@ -4299,8 +3941,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/create-a-module-script", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/create-a-module-script" }, "id": "5cddbfd622f1a59093ec611d", "title": "Create a Module Script" @@ -4311,8 +3952,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/create-an-export-fallback-with-export-default", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/create-an-export-fallback-with-export-default" }, "id": "587d7b8c367417b2b2512b58", "title": "Create an Export Fallback with export default" @@ -4323,8 +3963,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/create-strings-using-template-literals", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/create-strings-using-template-literals" }, "id": "587d7b8a367417b2b2512b4e", "title": "Create Strings using Template Literals" @@ -4335,8 +3974,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/handle-a-fulfilled-promise-with-then", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/handle-a-fulfilled-promise-with-then" }, "id": "5cdafbd72913098997531681", "title": "Handle a Fulfilled Promise with then" @@ -4347,8 +3985,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/handle-a-rejected-promise-with-catch", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/handle-a-rejected-promise-with-catch" }, "id": "5cdafbe72913098997531682", "title": "Handle a Rejected Promise with catch" @@ -4359,8 +3996,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/import-a-default-export", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/import-a-default-export" }, "id": "587d7b8d367417b2b2512b59", "title": "Import a Default Export" @@ -4371,8 +4007,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/mutate-an-array-declared-with-const", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/mutate-an-array-declared-with-const" }, "id": "587d7b87367417b2b2512b42", "title": "Mutate an Array Declared with const" @@ -4383,8 +4018,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/prevent-object-mutation", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/prevent-object-mutation" }, "id": "598f48a36c8c40764b4e52b3", "title": "Prevent Object Mutation" @@ -4395,8 +4029,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/reuse-javascript-code-using-import", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/reuse-javascript-code-using-import" }, "id": "587d7b8c367417b2b2512b55", "title": "Reuse JavaScript Code Using import" @@ -4407,8 +4040,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/set-default-parameters-for-your-functions", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/set-default-parameters-for-your-functions" }, "id": "587d7b88367417b2b2512b46", "title": "Set Default Parameters for Your Functions" @@ -4419,8 +4051,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/use--to-import-everything-from-a-file", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/use--to-import-everything-from-a-file" }, "id": "587d7b8c367417b2b2512b57", "title": "Use * to Import Everything from a File" @@ -4431,8 +4062,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/use-arrow-functions-to-write-concise-anonymous-functions", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/use-arrow-functions-to-write-concise-anonymous-functions" }, "id": "587d7b87367417b2b2512b43", "title": "Use Arrow Functions to Write Concise Anonymous Functions" @@ -4443,8 +4073,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/use-class-syntax-to-define-a-constructor-function", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/use-class-syntax-to-define-a-constructor-function" }, "id": "587d7b8b367417b2b2512b53", "title": "Use class Syntax to Define a Constructor Function" @@ -4455,8 +4084,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/use-destructuring-assignment-to-assign-variables-from-arrays", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/use-destructuring-assignment-to-assign-variables-from-arrays" }, "id": "587d7b89367417b2b2512b4b", "title": "Use Destructuring Assignment to Assign Variables from Arrays" @@ -4467,8 +4095,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/use-destructuring-assignment-to-assign-variables-from-nested-objects", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/use-destructuring-assignment-to-assign-variables-from-nested-objects" }, "id": "587d7b89367417b2b2512b4a", "title": "Use Destructuring Assignment to Assign Variables from Nested Objects" @@ -4479,8 +4106,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/use-destructuring-assignment-to-assign-variables-from-objects", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/use-destructuring-assignment-to-assign-variables-from-objects" }, "id": "587d7b89367417b2b2512b49", "title": "Use Destructuring Assignment to Assign Variables from Objects" @@ -4491,8 +4117,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/use-destructuring-assignment-to-extract-values-from-objects", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/use-destructuring-assignment-to-extract-values-from-objects" }, "id": "5cfa550e84205a357704ccb6", "title": "Use Destructuring Assignment to Extract Values from Objects" @@ -4503,8 +4128,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/use-destructuring-assignment-to-pass-an-object-as-a-functions-parameters", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/use-destructuring-assignment-to-pass-an-object-as-a-functions-parameters" }, "id": "587d7b8a367417b2b2512b4d", "title": "Use Destructuring Assignment to Pass an Object as a Function's Parameters" @@ -4515,8 +4139,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/use-destructuring-assignment-with-the-rest-parameter-to-reassign-array-elements", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/use-destructuring-assignment-with-the-rest-parameter-to-reassign-array-elements" }, "id": "587d7b8a367417b2b2512b4c", "title": "Use Destructuring Assignment with the Rest Parameter to Reassign Array Elements" @@ -4527,8 +4150,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/use-export-to-share-a-code-block", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/use-export-to-share-a-code-block" }, "id": "587d7b8c367417b2b2512b56", "title": "Use export to Share a Code Block" @@ -4539,8 +4161,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/use-getters-and-setters-to-control-access-to-an-object", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/use-getters-and-setters-to-control-access-to-an-object" }, "id": "587d7b8c367417b2b2512b54", "title": "Use getters and setters to Control Access to an Object" @@ -4551,8 +4172,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/use-the-rest-parameter-with-function-parameters", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/use-the-rest-parameter-with-function-parameters" }, "id": "587d7b88367417b2b2512b47", "title": "Use the Rest Parameter with Function Parameters" @@ -4563,8 +4183,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/use-the-spread-operator-to-evaluate-arrays-in-place", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/use-the-spread-operator-to-evaluate-arrays-in-place" }, "id": "587d7b89367417b2b2512b48", "title": "Use the Spread Operator to Evaluate Arrays In-Place" @@ -4575,8 +4194,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/write-arrow-functions-with-parameters", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/write-arrow-functions-with-parameters" }, "id": "587d7b88367417b2b2512b44", "title": "Write Arrow Functions with Parameters" @@ -4587,8 +4205,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/write-concise-declarative-functions-with-es6", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/write-concise-declarative-functions-with-es6" }, "id": "587d7b8b367417b2b2512b50", "title": "Write Concise Declarative Functions with ES6" @@ -4599,8 +4216,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/es6/write-concise-object-literal-declarations-using-object-property-shorthand", - "blockName": "ES6" + "slug": "/learn/javascript-algorithms-and-data-structures/es6/write-concise-object-literal-declarations-using-object-property-shorthand" }, "id": "587d7b8a367417b2b2512b4f", "title": "Write Concise Object Literal Declarations Using Object Property Shorthand" @@ -4611,8 +4227,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/add-elements-to-the-end-of-an-array-using-concat-instead-of-push", - "blockName": "Functional Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/add-elements-to-the-end-of-an-array-using-concat-instead-of-push" }, "id": "587d7da9367417b2b2512b67", "title": "Add Elements to the End of an Array Using concat Instead of push" @@ -4623,8 +4238,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/apply-functional-programming-to-convert-strings-to-url-slugs", - "blockName": "Functional Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/apply-functional-programming-to-convert-strings-to-url-slugs" }, "id": "587d7dab367417b2b2512b6d", "title": "Apply Functional Programming to Convert Strings to URL Slugs" @@ -4635,8 +4249,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/avoid-mutations-and-side-effects-using-functional-programming", - "blockName": "Functional Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/avoid-mutations-and-side-effects-using-functional-programming" }, "id": "587d7b8e367417b2b2512b5e", "title": "Avoid Mutations and Side Effects Using Functional Programming" @@ -4647,8 +4260,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/combine-an-array-into-a-string-using-the-join-method", - "blockName": "Functional Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/combine-an-array-into-a-string-using-the-join-method" }, "id": "587d7daa367417b2b2512b6c", "title": "Combine an Array into a String Using the join Method" @@ -4659,8 +4271,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/combine-two-arrays-using-the-concat-method", - "blockName": "Functional Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/combine-two-arrays-using-the-concat-method" }, "id": "587d7da9367417b2b2512b66", "title": "Combine Two Arrays Using the concat Method" @@ -4671,8 +4282,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/implement-map-on-a-prototype", - "blockName": "Functional Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/implement-map-on-a-prototype" }, "id": "587d7b8f367417b2b2512b62", "title": "Implement map on a Prototype" @@ -4683,8 +4293,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/implement-the-filter-method-on-a-prototype", - "blockName": "Functional Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/implement-the-filter-method-on-a-prototype" }, "id": "587d7b8f367417b2b2512b64", "title": "Implement the filter Method on a Prototype" @@ -4695,8 +4304,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/introduction-to-currying-and-partial-application", - "blockName": "Functional Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/introduction-to-currying-and-partial-application" }, "id": "587d7dab367417b2b2512b70", "title": "Introduction to Currying and Partial Application" @@ -4707,8 +4315,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/learn-about-functional-programming", - "blockName": "Functional Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/learn-about-functional-programming" }, "id": "587d7b8d367417b2b2512b5b", "title": "Learn About Functional Programming" @@ -4719,8 +4326,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/pass-arguments-to-avoid-external-dependence-in-a-function", - "blockName": "Functional Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/pass-arguments-to-avoid-external-dependence-in-a-function" }, "id": "587d7b8e367417b2b2512b5f", "title": "Pass Arguments to Avoid External Dependence in a Function" @@ -4731,8 +4337,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/refactor-global-variables-out-of-functions", - "blockName": "Functional Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/refactor-global-variables-out-of-functions" }, "id": "587d7b8f367417b2b2512b60", "title": "Refactor Global Variables Out of Functions" @@ -4743,8 +4348,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/remove-elements-from-an-array-using-slice-instead-of-splice", - "blockName": "Functional Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/remove-elements-from-an-array-using-slice-instead-of-splice" }, "id": "9d7123c8c441eeafaeb5bdef", "title": "Remove Elements from an Array Using slice Instead of splice" @@ -4755,8 +4359,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/return-a-sorted-array-without-changing-the-original-array", - "blockName": "Functional Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/return-a-sorted-array-without-changing-the-original-array" }, "id": "587d7da9367417b2b2512b6a", "title": "Return a Sorted Array Without Changing the Original Array" @@ -4767,8 +4370,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/return-part-of-an-array-using-the-slice-method", - "blockName": "Functional Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/return-part-of-an-array-using-the-slice-method" }, "id": "587d7b90367417b2b2512b65", "title": "Return Part of an Array Using the slice Method" @@ -4779,8 +4381,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/sort-an-array-alphabetically-using-the-sort-method", - "blockName": "Functional Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/sort-an-array-alphabetically-using-the-sort-method" }, "id": "587d7da9367417b2b2512b69", "title": "Sort an Array Alphabetically using the sort Method" @@ -4791,8 +4392,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/split-a-string-into-an-array-using-the-split-method", - "blockName": "Functional Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/split-a-string-into-an-array-using-the-split-method" }, "id": "587d7daa367417b2b2512b6b", "title": "Split a String into an Array Using the split Method" @@ -4803,8 +4403,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/understand-functional-programming-terminology", - "blockName": "Functional Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/understand-functional-programming-terminology" }, "id": "587d7b8e367417b2b2512b5c", "title": "Understand Functional Programming Terminology" @@ -4815,8 +4414,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/understand-the-hazards-of-using-imperative-code", - "blockName": "Functional Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/understand-the-hazards-of-using-imperative-code" }, "id": "587d7b8e367417b2b2512b5d", "title": "Understand the Hazards of Using Imperative Code" @@ -4827,8 +4425,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/use-higher-order-functions-map-filter-or-reduce-to-solve-a-complex-problem", - "blockName": "Functional Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/use-higher-order-functions-map-filter-or-reduce-to-solve-a-complex-problem" }, "id": "587d7b88367417b2b2512b45", "title": "Use Higher-Order Functions map, filter, or reduce to Solve a Complex Problem" @@ -4839,8 +4436,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/use-the-every-method-to-check-that-every-element-in-an-array-meets-a-criteria", - "blockName": "Functional Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/use-the-every-method-to-check-that-every-element-in-an-array-meets-a-criteria" }, "id": "587d7dab367417b2b2512b6e", "title": "Use the every Method to Check that Every Element in an Array Meets a Criteria" @@ -4851,8 +4447,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/use-the-filter-method-to-extract-data-from-an-array", - "blockName": "Functional Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/use-the-filter-method-to-extract-data-from-an-array" }, "id": "587d7b8f367417b2b2512b63", "title": "Use the filter Method to Extract Data from an Array" @@ -4863,8 +4458,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/use-the-map-method-to-extract-data-from-an-array", - "blockName": "Functional Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/use-the-map-method-to-extract-data-from-an-array" }, "id": "587d7b8f367417b2b2512b61", "title": "Use the map Method to Extract Data from an Array" @@ -4875,8 +4469,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/use-the-reduce-method-to-analyze-data", - "blockName": "Functional Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/use-the-reduce-method-to-analyze-data" }, "id": "587d7da9367417b2b2512b68", "title": "Use the reduce Method to Analyze Data" @@ -4887,8 +4480,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/use-the-some-method-to-check-that-any-elements-in-an-array-meet-a-criteria", - "blockName": "Functional Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/functional-programming/use-the-some-method-to-check-that-any-elements-in-an-array-meet-a-criteria" }, "id": "587d7dab367417b2b2512b6f", "title": "Use the some Method to Check that Any Elements in an Array Meet a Criteria" @@ -4899,8 +4491,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/arguments-optional", - "blockName": "Intermediate Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/arguments-optional" }, "id": "a97fd23d9b809dac9921074f", "title": "Arguments Optional" @@ -4911,8 +4502,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/binary-agents", - "blockName": "Intermediate Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/binary-agents" }, "id": "a8d97bd4c764e91f9d2bda01", "title": "Binary Agents" @@ -4923,8 +4513,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/convert-html-entities", - "blockName": "Intermediate Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/convert-html-entities" }, "id": "a6b0bb188d873cb2c8729495", "title": "Convert HTML Entities" @@ -4935,8 +4524,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/diff-two-arrays", - "blockName": "Intermediate Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/diff-two-arrays" }, "id": "a5de63ebea8dbee56860f4f2", "title": "Diff Two Arrays" @@ -4947,8 +4535,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/dna-pairing", - "blockName": "Intermediate Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/dna-pairing" }, "id": "afd15382cdfb22c9efe8b7de", "title": "DNA Pairing" @@ -4959,8 +4546,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/drop-it", - "blockName": "Intermediate Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/drop-it" }, "id": "a5deed1811a43193f9f1c841", "title": "Drop it" @@ -4971,8 +4557,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/everything-be-true", - "blockName": "Intermediate Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/everything-be-true" }, "id": "a10d2431ad0c6a099a4b8b52", "title": "Everything Be True" @@ -4983,8 +4568,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/make-a-person", - "blockName": "Intermediate Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/make-a-person" }, "id": "a2f1d72d9b908d0bd72bb9f6", "title": "Make a Person" @@ -4995,8 +4579,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/map-the-debris", - "blockName": "Intermediate Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/map-the-debris" }, "id": "af4afb223120f7348cdfc9fd", "title": "Map the Debris" @@ -5007,8 +4590,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/missing-letters", - "blockName": "Intermediate Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/missing-letters" }, "id": "af7588ade1100bde429baf20", "title": "Missing letters" @@ -5019,8 +4601,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/pig-latin", - "blockName": "Intermediate Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/pig-latin" }, "id": "aa7697ea2477d1316795783b", "title": "Pig Latin" @@ -5031,8 +4612,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/search-and-replace", - "blockName": "Intermediate Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/search-and-replace" }, "id": "a0b5010f579e69b815e7c5d6", "title": "Search and Replace" @@ -5043,8 +4623,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/seek-and-destroy", - "blockName": "Intermediate Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/seek-and-destroy" }, "id": "a39963a4c10bc8b4d4f06d7e", "title": "Seek and Destroy" @@ -5055,8 +4634,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/smallest-common-multiple", - "blockName": "Intermediate Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/smallest-common-multiple" }, "id": "ae9defd7acaf69703ab432ea", "title": "Smallest Common Multiple" @@ -5067,8 +4645,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/sorted-union", - "blockName": "Intermediate Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/sorted-union" }, "id": "a105e963526e7de52b219be9", "title": "Sorted Union" @@ -5079,8 +4656,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/spinal-tap-case", - "blockName": "Intermediate Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/spinal-tap-case" }, "id": "a103376db3ba46b2d50db289", "title": "Spinal Tap Case" @@ -5091,8 +4667,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/steamroller", - "blockName": "Intermediate Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/steamroller" }, "id": "ab306dbdcc907c7ddfc30830", "title": "Steamroller" @@ -5103,8 +4678,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/sum-all-numbers-in-a-range", - "blockName": "Intermediate Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/sum-all-numbers-in-a-range" }, "id": "a3566b1109230028080c9345", "title": "Sum All Numbers in a Range" @@ -5115,8 +4689,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/sum-all-odd-fibonacci-numbers", - "blockName": "Intermediate Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/sum-all-odd-fibonacci-numbers" }, "id": "a5229172f011153519423690", "title": "Sum All Odd Fibonacci Numbers" @@ -5127,8 +4700,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/sum-all-primes", - "blockName": "Intermediate Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/sum-all-primes" }, "id": "a3bfc1673c0526e06d3ac698", "title": "Sum All Primes" @@ -5139,8 +4711,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/wherefore-art-thou", - "blockName": "Intermediate Algorithm Scripting" + "slug": "/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/wherefore-art-thou" }, "id": "a8e512fbe388ac2f9198f0fa", "title": "Wherefore art thou" @@ -5151,8 +4722,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/javascript-algorithms-and-data-structures-projects/caesars-cipher", - "blockName": "JavaScript Algorithms and Data Structures Projects" + "slug": "/learn/javascript-algorithms-and-data-structures/javascript-algorithms-and-data-structures-projects/caesars-cipher" }, "id": "56533eb9ac21ba0edf2244e2", "title": "Caesars Cipher" @@ -5163,8 +4733,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/javascript-algorithms-and-data-structures-projects/cash-register", - "blockName": "JavaScript Algorithms and Data Structures Projects" + "slug": "/learn/javascript-algorithms-and-data-structures/javascript-algorithms-and-data-structures-projects/cash-register" }, "id": "aa2e6f85cab2ab736c9a9b24", "title": "Cash Register" @@ -5175,8 +4744,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/javascript-algorithms-and-data-structures-projects/palindrome-checker", - "blockName": "JavaScript Algorithms and Data Structures Projects" + "slug": "/learn/javascript-algorithms-and-data-structures/javascript-algorithms-and-data-structures-projects/palindrome-checker" }, "id": "aaa48de84e1ecc7c742e1124", "title": "Palindrome Checker" @@ -5187,8 +4755,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/javascript-algorithms-and-data-structures-projects/roman-numeral-converter", - "blockName": "JavaScript Algorithms and Data Structures Projects" + "slug": "/learn/javascript-algorithms-and-data-structures/javascript-algorithms-and-data-structures-projects/roman-numeral-converter" }, "id": "a7f4d8f2483413a6ce226cac", "title": "Roman Numeral Converter" @@ -5199,8 +4766,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/javascript-algorithms-and-data-structures-projects/telephone-number-validator", - "blockName": "JavaScript Algorithms and Data Structures Projects" + "slug": "/learn/javascript-algorithms-and-data-structures/javascript-algorithms-and-data-structures-projects/telephone-number-validator" }, "id": "aff0395860f5d3034dc0bfc9", "title": "Telephone Number Validator" @@ -5211,8 +4777,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/add-methods-after-inheritance", - "blockName": "Object Oriented Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/add-methods-after-inheritance" }, "id": "587d7db1367417b2b2512b87", "title": "Add Methods After Inheritance" @@ -5223,8 +4788,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/change-the-prototype-to-a-new-object", - "blockName": "Object Oriented Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/change-the-prototype-to-a-new-object" }, "id": "587d7daf367417b2b2512b7f", "title": "Change the Prototype to a New Object" @@ -5235,8 +4799,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/create-a-basic-javascript-object", - "blockName": "Object Oriented Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/create-a-basic-javascript-object" }, "id": "587d7dac367417b2b2512b73", "title": "Create a Basic JavaScript Object" @@ -5247,8 +4810,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/create-a-method-on-an-object", - "blockName": "Object Oriented Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/create-a-method-on-an-object" }, "id": "587d7dad367417b2b2512b75", "title": "Create a Method on an Object" @@ -5259,8 +4821,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/define-a-constructor-function", - "blockName": "Object Oriented Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/define-a-constructor-function" }, "id": "587d7dad367417b2b2512b77", "title": "Define a Constructor Function" @@ -5271,8 +4832,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/extend-constructors-to-receive-arguments", - "blockName": "Object Oriented Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/extend-constructors-to-receive-arguments" }, "id": "587d7dae367417b2b2512b79", "title": "Extend Constructors to Receive Arguments" @@ -5283,8 +4843,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/inherit-behaviors-from-a-supertype", - "blockName": "Object Oriented Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/inherit-behaviors-from-a-supertype" }, "id": "587d7db0367417b2b2512b84", "title": "Inherit Behaviors from a Supertype" @@ -5295,8 +4854,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/iterate-over-all-properties", - "blockName": "Object Oriented Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/iterate-over-all-properties" }, "id": "587d7daf367417b2b2512b7d", "title": "Iterate Over All Properties" @@ -5307,8 +4865,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/make-code-more-reusable-with-the-this-keyword", - "blockName": "Object Oriented Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/make-code-more-reusable-with-the-this-keyword" }, "id": "587d7dad367417b2b2512b76", "title": "Make Code More Reusable with the this Keyword" @@ -5319,8 +4876,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/override-inherited-methods", - "blockName": "Object Oriented Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/override-inherited-methods" }, "id": "587d7db1367417b2b2512b88", "title": "Override Inherited Methods" @@ -5331,8 +4887,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/remember-to-set-the-constructor-property-when-changing-the-prototype", - "blockName": "Object Oriented Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/remember-to-set-the-constructor-property-when-changing-the-prototype" }, "id": "587d7daf367417b2b2512b80", "title": "Remember to Set the Constructor Property when Changing the Prototype" @@ -5343,8 +4898,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/reset-an-inherited-constructor-property", - "blockName": "Object Oriented Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/reset-an-inherited-constructor-property" }, "id": "587d7db1367417b2b2512b86", "title": "Reset an Inherited Constructor Property" @@ -5355,8 +4909,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/set-the-childs-prototype-to-an-instance-of-the-parent", - "blockName": "Object Oriented Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/set-the-childs-prototype-to-an-instance-of-the-parent" }, "id": "587d7db1367417b2b2512b85", "title": "Set the Child's Prototype to an Instance of the Parent" @@ -5367,8 +4920,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/understand-own-properties", - "blockName": "Object Oriented Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/understand-own-properties" }, "id": "587d7dae367417b2b2512b7b", "title": "Understand Own Properties" @@ -5379,8 +4931,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/understand-the-constructor-property", - "blockName": "Object Oriented Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/understand-the-constructor-property" }, "id": "587d7daf367417b2b2512b7e", "title": "Understand the Constructor Property" @@ -5391,8 +4942,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/understand-the-immediately-invoked-function-expression-iife", - "blockName": "Object Oriented Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/understand-the-immediately-invoked-function-expression-iife" }, "id": "587d7db2367417b2b2512b8b", "title": "Understand the Immediately Invoked Function Expression (IIFE)" @@ -5403,8 +4953,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/understand-the-prototype-chain", - "blockName": "Object Oriented Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/understand-the-prototype-chain" }, "id": "587d7db0367417b2b2512b82", "title": "Understand the Prototype Chain" @@ -5415,8 +4964,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/understand-where-an-objects-prototype-comes-from", - "blockName": "Object Oriented Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/understand-where-an-objects-prototype-comes-from" }, "id": "587d7db0367417b2b2512b81", "title": "Understand Where an Object’s Prototype Comes From" @@ -5427,8 +4975,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/use-a-constructor-to-create-objects", - "blockName": "Object Oriented Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/use-a-constructor-to-create-objects" }, "id": "587d7dad367417b2b2512b78", "title": "Use a Constructor to Create Objects" @@ -5439,8 +4986,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/use-a-mixin-to-add-common-behavior-between-unrelated-objects", - "blockName": "Object Oriented Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/use-a-mixin-to-add-common-behavior-between-unrelated-objects" }, "id": "587d7db2367417b2b2512b89", "title": "Use a Mixin to Add Common Behavior Between Unrelated Objects" @@ -5451,8 +4997,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/use-an-iife-to-create-a-module", - "blockName": "Object Oriented Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/use-an-iife-to-create-a-module" }, "id": "587d7db2367417b2b2512b8c", "title": "Use an IIFE to Create a Module" @@ -5463,8 +5008,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/use-closure-to-protect-properties-within-an-object-from-being-modified-externally", - "blockName": "Object Oriented Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/use-closure-to-protect-properties-within-an-object-from-being-modified-externally" }, "id": "587d7db2367417b2b2512b8a", "title": "Use Closure to Protect Properties Within an Object from Being Modified Externally" @@ -5475,8 +5019,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/use-dot-notation-to-access-the-properties-of-an-object", - "blockName": "Object Oriented Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/use-dot-notation-to-access-the-properties-of-an-object" }, "id": "587d7dac367417b2b2512b74", "title": "Use Dot Notation to Access the Properties of an Object" @@ -5487,8 +5030,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/use-inheritance-so-you-dont-repeat-yourself", - "blockName": "Object Oriented Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/use-inheritance-so-you-dont-repeat-yourself" }, "id": "587d7db0367417b2b2512b83", "title": "Use Inheritance So You Don't Repeat Yourself" @@ -5499,8 +5041,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/use-prototype-properties-to-reduce-duplicate-code", - "blockName": "Object Oriented Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/use-prototype-properties-to-reduce-duplicate-code" }, "id": "587d7dae367417b2b2512b7c", "title": "Use Prototype Properties to Reduce Duplicate Code" @@ -5511,8 +5052,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/verify-an-objects-constructor-with-instanceof", - "blockName": "Object Oriented Programming" + "slug": "/learn/javascript-algorithms-and-data-structures/object-oriented-programming/verify-an-objects-constructor-with-instanceof" }, "id": "587d7dae367417b2b2512b7a", "title": "Verify an Object's Constructor with instanceof" @@ -5523,8 +5063,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/check-for-all-or-none", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/check-for-all-or-none" }, "id": "587d7dba367417b2b2512ba8", "title": "Check for All or None" @@ -5535,8 +5074,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/check-for-mixed-grouping-of-characters", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/check-for-mixed-grouping-of-characters" }, "id": "5c3dda8b4d8df89bea71600f", "title": "Check For Mixed Grouping of Characters" @@ -5547,8 +5085,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/extract-matches", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/extract-matches" }, "id": "587d7db4367417b2b2512b92", "title": "Extract Matches" @@ -5559,8 +5096,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/find-characters-with-lazy-matching", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/find-characters-with-lazy-matching" }, "id": "587d7db6367417b2b2512b9b", "title": "Find Characters with Lazy Matching" @@ -5571,8 +5107,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/find-more-than-the-first-match", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/find-more-than-the-first-match" }, "id": "587d7db4367417b2b2512b93", "title": "Find More Than the First Match" @@ -5583,8 +5118,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/find-one-or-more-criminals-in-a-hunt", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/find-one-or-more-criminals-in-a-hunt" }, "id": "587d7db7367417b2b2512b9c", "title": "Find One or More Criminals in a Hunt" @@ -5595,8 +5129,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/ignore-case-while-matching", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/ignore-case-while-matching" }, "id": "587d7db4367417b2b2512b91", "title": "Ignore Case While Matching" @@ -5607,8 +5140,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-a-literal-string-with-different-possibilities", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-a-literal-string-with-different-possibilities" }, "id": "587d7db4367417b2b2512b90", "title": "Match a Literal String with Different Possibilities" @@ -5619,8 +5151,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-all-letters-and-numbers", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-all-letters-and-numbers" }, "id": "587d7db7367417b2b2512b9f", "title": "Match All Letters and Numbers" @@ -5631,8 +5162,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-all-non-numbers", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-all-non-numbers" }, "id": "587d7db8367417b2b2512ba1", "title": "Match All Non-Numbers" @@ -5643,8 +5173,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-all-numbers", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-all-numbers" }, "id": "5d712346c441eddfaeb5bdef", "title": "Match All Numbers" @@ -5655,8 +5184,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-anything-with-wildcard-period", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-anything-with-wildcard-period" }, "id": "587d7db5367417b2b2512b94", "title": "Match Anything with Wildcard Period" @@ -5667,8 +5195,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-beginning-string-patterns", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-beginning-string-patterns" }, "id": "587d7db7367417b2b2512b9d", "title": "Match Beginning String Patterns" @@ -5679,8 +5206,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-characters-that-occur-one-or-more-times", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-characters-that-occur-one-or-more-times" }, "id": "587d7db6367417b2b2512b99", "title": "Match Characters that Occur One or More Times" @@ -5691,8 +5217,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-characters-that-occur-zero-or-more-times", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-characters-that-occur-zero-or-more-times" }, "id": "587d7db6367417b2b2512b9a", "title": "Match Characters that Occur Zero or More Times" @@ -5703,8 +5228,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-ending-string-patterns", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-ending-string-patterns" }, "id": "587d7db7367417b2b2512b9e", "title": "Match Ending String Patterns" @@ -5715,8 +5239,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-everything-but-letters-and-numbers", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-everything-but-letters-and-numbers" }, "id": "587d7db8367417b2b2512ba0", "title": "Match Everything But Letters and Numbers" @@ -5727,8 +5250,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-letters-of-the-alphabet", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-letters-of-the-alphabet" }, "id": "587d7db5367417b2b2512b96", "title": "Match Letters of the Alphabet" @@ -5739,8 +5261,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-literal-strings", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-literal-strings" }, "id": "587d7db3367417b2b2512b8f", "title": "Match Literal Strings" @@ -5751,8 +5272,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-non-whitespace-characters", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-non-whitespace-characters" }, "id": "587d7db9367417b2b2512ba4", "title": "Match Non-Whitespace Characters" @@ -5763,8 +5283,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-numbers-and-letters-of-the-alphabet", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-numbers-and-letters-of-the-alphabet" }, "id": "587d7db5367417b2b2512b97", "title": "Match Numbers and Letters of the Alphabet" @@ -5775,8 +5294,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-single-character-with-multiple-possibilities", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-single-character-with-multiple-possibilities" }, "id": "587d7db5367417b2b2512b95", "title": "Match Single Character with Multiple Possibilities" @@ -5787,8 +5305,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-single-characters-not-specified", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-single-characters-not-specified" }, "id": "587d7db6367417b2b2512b98", "title": "Match Single Characters Not Specified" @@ -5799,8 +5316,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-whitespace", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/match-whitespace" }, "id": "587d7db8367417b2b2512ba3", "title": "Match Whitespace" @@ -5811,8 +5327,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/positive-and-negative-lookahead", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/positive-and-negative-lookahead" }, "id": "587d7dba367417b2b2512ba9", "title": "Positive and Negative Lookahead" @@ -5823,8 +5338,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/remove-whitespace-from-start-and-end", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/remove-whitespace-from-start-and-end" }, "id": "587d7dbb367417b2b2512bac", "title": "Remove Whitespace from Start and End" @@ -5835,8 +5349,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/restrict-possible-usernames", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/restrict-possible-usernames" }, "id": "587d7db8367417b2b2512ba2", "title": "Restrict Possible Usernames" @@ -5847,8 +5360,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/reuse-patterns-using-capture-groups", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/reuse-patterns-using-capture-groups" }, "id": "587d7dbb367417b2b2512baa", "title": "Reuse Patterns Using Capture Groups" @@ -5859,8 +5371,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/specify-exact-number-of-matches", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/specify-exact-number-of-matches" }, "id": "587d7db9367417b2b2512ba7", "title": "Specify Exact Number of Matches" @@ -5871,8 +5382,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/specify-only-the-lower-number-of-matches", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/specify-only-the-lower-number-of-matches" }, "id": "587d7db9367417b2b2512ba6", "title": "Specify Only the Lower Number of Matches" @@ -5883,8 +5393,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/specify-upper-and-lower-number-of-matches", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/specify-upper-and-lower-number-of-matches" }, "id": "587d7db9367417b2b2512ba5", "title": "Specify Upper and Lower Number of Matches" @@ -5895,8 +5404,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/use-capture-groups-to-search-and-replace", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/use-capture-groups-to-search-and-replace" }, "id": "587d7dbb367417b2b2512bab", "title": "Use Capture Groups to Search and Replace" @@ -5907,8 +5415,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/using-the-test-method", - "blockName": "Regular Expressions" + "slug": "/learn/javascript-algorithms-and-data-structures/regular-expressions/using-the-test-method" }, "id": "587d7db3367417b2b2512b8e", "title": "Using the Test Method" @@ -5919,8 +5426,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/add-elements-within-your-bootstrap-wells", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/add-elements-within-your-bootstrap-wells" }, "id": "bad87fee1348bd9aec908849", "title": "Add Elements within Your Bootstrap Wells" @@ -5931,8 +5437,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/add-font-awesome-icons-to-all-of-our-buttons", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/add-font-awesome-icons-to-all-of-our-buttons" }, "id": "bad87fee1348bd9aedc08845", "title": "Add Font Awesome Icons to all of our Buttons" @@ -5943,8 +5448,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/add-font-awesome-icons-to-our-buttons", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/add-font-awesome-icons-to-our-buttons" }, "id": "bad87fee1348bd9aedd08845", "title": "Add Font Awesome Icons to our Buttons" @@ -5955,8 +5459,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/add-id-attributes-to-bootstrap-elements", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/add-id-attributes-to-bootstrap-elements" }, "id": "bad87fee1348bd9aec908853", "title": "Add id Attributes to Bootstrap Elements" @@ -5967,8 +5470,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/apply-the-default-bootstrap-button-style", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/apply-the-default-bootstrap-button-style" }, "id": "bad87fee1348bd9aec908850", "title": "Apply the Default Bootstrap Button Style" @@ -5979,8 +5481,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/call-out-optional-actions-with-btn-info", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/call-out-optional-actions-with-btn-info" }, "id": "bad87fee1348cd8acef08813", "title": "Call out Optional Actions with btn-info" @@ -5991,8 +5492,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/center-text-with-bootstrap", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/center-text-with-bootstrap" }, "id": "bad87fee1348bd8acde08812", "title": "Center Text with Bootstrap" @@ -6003,8 +5503,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/create-a-block-element-bootstrap-button", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/create-a-block-element-bootstrap-button" }, "id": "bad87fee1348cd8acef08812", "title": "Create a Block Element Bootstrap Button" @@ -6015,8 +5514,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/create-a-bootstrap-button", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/create-a-bootstrap-button" }, "id": "bad87fee1348cd8acdf08812", "title": "Create a Bootstrap Button" @@ -6027,8 +5525,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/create-a-bootstrap-headline", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/create-a-bootstrap-headline" }, "id": "bad87fee1348bd9aec908846", "title": "Create a Bootstrap Headline" @@ -6039,8 +5536,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/create-a-bootstrap-row", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/create-a-bootstrap-row" }, "id": "bad87fee1348bd9bec908846", "title": "Create a Bootstrap Row" @@ -6051,8 +5547,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/create-a-class-to-target-with-jquery-selectors", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/create-a-class-to-target-with-jquery-selectors" }, "id": "bad87fee1348bd9aec908852", "title": "Create a Class to Target with jQuery Selectors" @@ -6063,8 +5558,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/create-a-custom-heading", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/create-a-custom-heading" }, "id": "bad87fee1348bd9aede08845", "title": "Create a Custom Heading" @@ -6075,8 +5569,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/create-bootstrap-wells", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/create-bootstrap-wells" }, "id": "bad87fee1348bd9aec908848", "title": "Create Bootstrap Wells" @@ -6087,8 +5580,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/ditch-custom-css-for-bootstrap", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/ditch-custom-css-for-bootstrap" }, "id": "bad87fee1347bd9aedf08845", "title": "Ditch Custom CSS for Bootstrap" @@ -6099,8 +5591,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/give-each-element-a-unique-id", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/give-each-element-a-unique-id" }, "id": "bad87fee1348bd9aec908855", "title": "Give Each Element a Unique id" @@ -6111,8 +5602,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/house-our-page-within-a-bootstrap-container-fluid-div", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/house-our-page-within-a-bootstrap-container-fluid-div" }, "id": "bad87fee1348bd9aec908746", "title": "House our page within a Bootstrap container-fluid div" @@ -6123,8 +5613,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/label-bootstrap-buttons", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/label-bootstrap-buttons" }, "id": "bad87fee1348bd9aec908856", "title": "Label Bootstrap Buttons" @@ -6135,8 +5624,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/label-bootstrap-wells", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/label-bootstrap-wells" }, "id": "bad87fee1348bd9aec908854", "title": "Label Bootstrap Wells" @@ -6147,8 +5635,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/line-up-form-elements-responsively-with-bootstrap", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/line-up-form-elements-responsively-with-bootstrap" }, "id": "bad87fee1348bd9aec908845", "title": "Line up Form Elements Responsively with Bootstrap" @@ -6159,8 +5646,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/make-images-mobile-responsive", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/make-images-mobile-responsive" }, "id": "bad87fee1348bd9acde08812", "title": "Make Images Mobile Responsive" @@ -6171,8 +5657,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/responsively-style-checkboxes", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/responsively-style-checkboxes" }, "id": "bad87fee1348bd9aeda08845", "title": "Responsively Style Checkboxes" @@ -6183,8 +5668,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/responsively-style-radio-buttons", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/responsively-style-radio-buttons" }, "id": "bad87fee1348bd9aedb08845", "title": "Responsively Style Radio Buttons" @@ -6195,8 +5679,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/split-your-bootstrap-row", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/split-your-bootstrap-row" }, "id": "bad87fee1348bd9aec908847", "title": "Split Your Bootstrap Row" @@ -6207,8 +5690,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/style-text-inputs-as-form-controls", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/style-text-inputs-as-form-controls" }, "id": "bad87fee1348bd9aed908845", "title": "Style Text Inputs as Form Controls" @@ -6219,8 +5701,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/taste-the-bootstrap-button-color-rainbow", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/taste-the-bootstrap-button-color-rainbow" }, "id": "bad87fee1348cd8acef08811", "title": "Taste the Bootstrap Button Color Rainbow" @@ -6231,8 +5712,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/use-a-span-to-target-inline-elements", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/use-a-span-to-target-inline-elements" }, "id": "bad87fee1348bd9aedf08845", "title": "Use a span to Target Inline Elements" @@ -6243,8 +5723,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/use-comments-to-clarify-code", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/use-comments-to-clarify-code" }, "id": "bad87fee1348bd9aec908857", "title": "Use Comments to Clarify Code" @@ -6255,8 +5734,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/use-responsive-design-with-bootstrap-fluid-containers", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/use-responsive-design-with-bootstrap-fluid-containers" }, "id": "bad87fee1348bd9acde08712", "title": "Use Responsive Design with Bootstrap Fluid Containers" @@ -6267,8 +5745,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/use-the-bootstrap-grid-to-put-elements-side-by-side", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/use-the-bootstrap-grid-to-put-elements-side-by-side" }, "id": "bad88fee1348ce8acef08815", "title": "Use the Bootstrap Grid to Put Elements Side By Side" @@ -6279,8 +5756,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/bootstrap/warn-your-users-of-a-dangerous-action-with-btn-danger", - "blockName": "Bootstrap" + "slug": "/learn/front-end-development-libraries/bootstrap/warn-your-users-of-a-dangerous-action-with-btn-danger" }, "id": "bad87fee1348ce8acef08814", "title": "Warn Your Users of a Dangerous Action with btn-danger" @@ -6291,8 +5767,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/front-end-development-libraries-projects/build-a-25--5-clock", - "blockName": "Front End Development Libraries Projects" + "slug": "/learn/front-end-development-libraries/front-end-development-libraries-projects/build-a-25--5-clock" }, "id": "bd7158d8c442eddfaeb5bd0f", "title": "Build a 25 + 5 Clock" @@ -6303,8 +5778,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/front-end-development-libraries-projects/build-a-drum-machine", - "blockName": "Front End Development Libraries Projects" + "slug": "/learn/front-end-development-libraries/front-end-development-libraries-projects/build-a-drum-machine" }, "id": "587d7dbc367417b2b2512bae", "title": "Build a Drum Machine" @@ -6315,8 +5789,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/front-end-development-libraries-projects/build-a-javascript-calculator", - "blockName": "Front End Development Libraries Projects" + "slug": "/learn/front-end-development-libraries/front-end-development-libraries-projects/build-a-javascript-calculator" }, "id": "bd7158d8c442eddfaeb5bd17", "title": "Build a JavaScript Calculator" @@ -6327,8 +5800,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/front-end-development-libraries-projects/build-a-markdown-previewer", - "blockName": "Front End Development Libraries Projects" + "slug": "/learn/front-end-development-libraries/front-end-development-libraries-projects/build-a-markdown-previewer" }, "id": "bd7157d8c242eddfaeb5bd13", "title": "Build a Markdown Previewer" @@ -6339,8 +5811,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/front-end-development-libraries-projects/build-a-random-quote-machine", - "blockName": "Front End Development Libraries Projects" + "slug": "/learn/front-end-development-libraries/front-end-development-libraries-projects/build-a-random-quote-machine" }, "id": "bd7158d8c442eddfaeb5bd13", "title": "Build a Random Quote Machine" @@ -6351,8 +5822,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/jquery/change-text-inside-an-element-using-jquery", - "blockName": "jQuery" + "slug": "/learn/front-end-development-libraries/jquery/change-text-inside-an-element-using-jquery" }, "id": "564944c91be2204b269d51e3", "title": "Change Text Inside an Element Using jQuery" @@ -6363,8 +5833,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/jquery/change-the-css-of-an-element-using-jquery", - "blockName": "jQuery" + "slug": "/learn/front-end-development-libraries/jquery/change-the-css-of-an-element-using-jquery" }, "id": "bad87fee1348bd9aed908826", "title": "Change the CSS of an Element Using jQuery" @@ -6375,8 +5844,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/jquery/clone-an-element-using-jquery", - "blockName": "jQuery" + "slug": "/learn/front-end-development-libraries/jquery/clone-an-element-using-jquery" }, "id": "bad87fee1348bd9aed508826", "title": "Clone an Element Using jQuery" @@ -6387,8 +5855,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/jquery/delete-your-jquery-functions", - "blockName": "jQuery" + "slug": "/learn/front-end-development-libraries/jquery/delete-your-jquery-functions" }, "id": "bad87fee1348bd9aeda08726", "title": "Delete Your jQuery Functions" @@ -6399,8 +5866,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/jquery/disable-an-element-using-jquery", - "blockName": "jQuery" + "slug": "/learn/front-end-development-libraries/jquery/disable-an-element-using-jquery" }, "id": "bad87fee1348bd9aed808826", "title": "Disable an Element Using jQuery" @@ -6411,8 +5877,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/jquery/learn-how-script-tags-and-document-ready-work", - "blockName": "jQuery" + "slug": "/learn/front-end-development-libraries/jquery/learn-how-script-tags-and-document-ready-work" }, "id": "bad87fee1348bd9acdd08826", "title": "Learn How Script Tags and Document Ready Work" @@ -6423,8 +5888,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/jquery/remove-an-element-using-jquery", - "blockName": "jQuery" + "slug": "/learn/front-end-development-libraries/jquery/remove-an-element-using-jquery" }, "id": "bad87fee1348bd9aed708826", "title": "Remove an Element Using jQuery" @@ -6435,8 +5899,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/jquery/remove-classes-from-an-element-with-jquery", - "blockName": "jQuery" + "slug": "/learn/front-end-development-libraries/jquery/remove-classes-from-an-element-with-jquery" }, "id": "bad87fee1348bd9aed918626", "title": "Remove Classes from an Element with jQuery" @@ -6447,8 +5910,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/jquery/target-a-specific-child-of-an-element-using-jquery", - "blockName": "jQuery" + "slug": "/learn/front-end-development-libraries/jquery/target-a-specific-child-of-an-element-using-jquery" }, "id": "bad87fee1348bd9aed108826", "title": "Target a Specific Child of an Element Using jQuery" @@ -6459,8 +5921,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/jquery/target-elements-by-class-using-jquery", - "blockName": "jQuery" + "slug": "/learn/front-end-development-libraries/jquery/target-elements-by-class-using-jquery" }, "id": "bad87fee1348bd9aedc08826", "title": "Target Elements by Class Using jQuery" @@ -6471,8 +5932,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/jquery/target-elements-by-id-using-jquery", - "blockName": "jQuery" + "slug": "/learn/front-end-development-libraries/jquery/target-elements-by-id-using-jquery" }, "id": "bad87fee1348bd9aeda08826", "title": "Target Elements by id Using jQuery" @@ -6483,8 +5943,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/jquery/target-even-elements-using-jquery", - "blockName": "jQuery" + "slug": "/learn/front-end-development-libraries/jquery/target-even-elements-using-jquery" }, "id": "bad87fee1348bd9aed008826", "title": "Target Even Elements Using jQuery" @@ -6495,8 +5954,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/jquery/target-html-elements-with-selectors-using-jquery", - "blockName": "jQuery" + "slug": "/learn/front-end-development-libraries/jquery/target-html-elements-with-selectors-using-jquery" }, "id": "bad87fee1348bd9bedc08826", "title": "Target HTML Elements with Selectors Using jQuery" @@ -6507,8 +5965,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/jquery/target-the-children-of-an-element-using-jquery", - "blockName": "jQuery" + "slug": "/learn/front-end-development-libraries/jquery/target-the-children-of-an-element-using-jquery" }, "id": "bad87fee1348bd9aed208826", "title": "Target the Children of an Element Using jQuery" @@ -6519,8 +5976,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/jquery/target-the-parent-of-an-element-using-jquery", - "blockName": "jQuery" + "slug": "/learn/front-end-development-libraries/jquery/target-the-parent-of-an-element-using-jquery" }, "id": "bad87fee1348bd9aed308826", "title": "Target the Parent of an Element Using jQuery" @@ -6531,8 +5987,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/jquery/target-the-same-element-with-multiple-jquery-selectors", - "blockName": "jQuery" + "slug": "/learn/front-end-development-libraries/jquery/target-the-same-element-with-multiple-jquery-selectors" }, "id": "bad87fee1348bd9aed908626", "title": "Target the Same Element with Multiple jQuery Selectors" @@ -6543,8 +5998,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/jquery/use-appendto-to-move-elements-with-jquery", - "blockName": "jQuery" + "slug": "/learn/front-end-development-libraries/jquery/use-appendto-to-move-elements-with-jquery" }, "id": "bad87fee1348bd9aed608826", "title": "Use appendTo to Move Elements with jQuery" @@ -6555,8 +6009,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/jquery/use-jquery-to-modify-the-entire-page", - "blockName": "jQuery" + "slug": "/learn/front-end-development-libraries/jquery/use-jquery-to-modify-the-entire-page" }, "id": "bad87fee1348bd9aecb08826", "title": "Use jQuery to Modify the Entire Page" @@ -6567,8 +6020,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/access-props-using-this-props", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/access-props-using-this-props" }, "id": "5a24c314108439a4d403616e", "title": "Access Props Using this.props" @@ -6579,8 +6031,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/add-comments-in-jsx", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/add-comments-in-jsx" }, "id": "5a24bbe0dba28a8d3cbd4c5e", "title": "Add Comments in JSX" @@ -6591,8 +6042,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/add-event-listeners", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/add-event-listeners" }, "id": "5a24c314108439a4d403617e", "title": "Add Event Listeners" @@ -6603,8 +6053,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/add-inline-styles-in-react", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/add-inline-styles-in-react" }, "id": "5a24c314108439a4d4036182", "title": "Add Inline Styles in React" @@ -6615,8 +6064,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/bind-this-to-a-class-method", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/bind-this-to-a-class-method" }, "id": "5a24c314108439a4d4036174", "title": "Bind 'this' to a Class Method" @@ -6627,8 +6075,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/change-inline-css-conditionally-based-on-component-state", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/change-inline-css-conditionally-based-on-component-state" }, "id": "5a24c314108439a4d4036189", "title": "Change Inline CSS Conditionally Based on Component State" @@ -6639,8 +6086,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/compose-react-components", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/compose-react-components" }, "id": "5a24c314108439a4d4036166", "title": "Compose React Components" @@ -6651,8 +6097,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/create-a-complex-jsx-element", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/create-a-complex-jsx-element" }, "id": "5a24bbe0dba28a8d3cbd4c5d", "title": "Create a Complex JSX Element" @@ -6663,8 +6108,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/create-a-component-with-composition", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/create-a-component-with-composition" }, "id": "5a24c314108439a4d4036164", "title": "Create a Component with Composition" @@ -6675,8 +6119,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/create-a-controlled-form", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/create-a-controlled-form" }, "id": "5a24c314108439a4d4036179", "title": "Create a Controlled Form" @@ -6687,8 +6130,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/create-a-controlled-input", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/create-a-controlled-input" }, "id": "5a24c314108439a4d4036178", "title": "Create a Controlled Input" @@ -6699,8 +6141,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/create-a-react-component", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/create-a-react-component" }, "id": "5a24c314108439a4d4036163", "title": "Create a React Component" @@ -6711,8 +6152,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/create-a-simple-jsx-element", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/create-a-simple-jsx-element" }, "id": "587d7dbc367417b2b2512bb1", "title": "Create a Simple JSX Element" @@ -6723,8 +6163,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/create-a-stateful-component", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/create-a-stateful-component" }, "id": "5a24c314108439a4d4036170", "title": "Create a Stateful Component" @@ -6735,8 +6174,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/create-a-stateless-functional-component", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/create-a-stateless-functional-component" }, "id": "5a24c314108439a4d4036162", "title": "Create a Stateless Functional Component" @@ -6747,8 +6185,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/define-an-html-class-in-jsx", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/define-an-html-class-in-jsx" }, "id": "5a24c314108439a4d4036160", "title": "Define an HTML Class in JSX" @@ -6759,8 +6196,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/give-sibling-elements-a-unique-key-attribute", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/give-sibling-elements-a-unique-key-attribute" }, "id": "5a24c314108439a4d403618b", "title": "Give Sibling Elements a Unique Key Attribute" @@ -6771,8 +6207,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/introducing-inline-styles", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/introducing-inline-styles" }, "id": "5a24c314108439a4d4036181", "title": "Introducing Inline Styles" @@ -6783,8 +6218,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/learn-about-self-closing-jsx-tags", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/learn-about-self-closing-jsx-tags" }, "id": "5a24c314108439a4d4036161", "title": "Learn About Self-Closing JSX Tags" @@ -6795,8 +6229,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/optimize-re-renders-with-shouldcomponentupdate", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/optimize-re-renders-with-shouldcomponentupdate" }, "id": "5a24c314108439a4d4036180", "title": "Optimize Re-Renders with shouldComponentUpdate" @@ -6807,8 +6240,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/override-default-props", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/override-default-props" }, "id": "5a24c314108439a4d403616c", "title": "Override Default Props" @@ -6819,8 +6251,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/pass-a-callback-as-props", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/pass-a-callback-as-props" }, "id": "5a24c314108439a4d403617b", "title": "Pass a Callback as Props" @@ -6831,8 +6262,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/pass-an-array-as-props", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/pass-an-array-as-props" }, "id": "5a24c314108439a4d403616a", "title": "Pass an Array as Props" @@ -6843,8 +6273,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/pass-props-to-a-stateless-functional-component", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/pass-props-to-a-stateless-functional-component" }, "id": "5a24c314108439a4d4036169", "title": "Pass Props to a Stateless Functional Component" @@ -6855,8 +6284,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/pass-state-as-props-to-child-components", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/pass-state-as-props-to-child-components" }, "id": "5a24c314108439a4d403617a", "title": "Pass State as Props to Child Components" @@ -6867,8 +6295,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/render-a-class-component-to-the-dom", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/render-a-class-component-to-the-dom" }, "id": "5a24c314108439a4d4036167", "title": "Render a Class Component to the DOM" @@ -6879,8 +6306,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/render-conditionally-from-props", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/render-conditionally-from-props" }, "id": "5a24c314108439a4d4036188", "title": "Render Conditionally from Props" @@ -6891,8 +6317,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/render-html-elements-to-the-dom", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/render-html-elements-to-the-dom" }, "id": "5a24bbe0dba28a8d3cbd4c5f", "title": "Render HTML Elements to the DOM" @@ -6903,8 +6328,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/render-react-on-the-server-with-rendertostring", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/render-react-on-the-server-with-rendertostring" }, "id": "5a24c314108439a4d403618d", "title": "Render React on the Server with renderToString" @@ -6915,8 +6339,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/render-state-in-the-user-interface-another-way", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/render-state-in-the-user-interface-another-way" }, "id": "5a24c314108439a4d4036172", "title": "Render State in the User Interface Another Way" @@ -6927,8 +6350,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/render-state-in-the-user-interface", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/render-state-in-the-user-interface" }, "id": "5a24c314108439a4d4036171", "title": "Render State in the User Interface" @@ -6939,8 +6361,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/render-with-an-if-else-condition", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/render-with-an-if-else-condition" }, "id": "5a24c314108439a4d4036184", "title": "Render with an If-Else Condition" @@ -6951,8 +6372,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/review-using-props-with-stateless-functional-components", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/review-using-props-with-stateless-functional-components" }, "id": "5a24c314108439a4d403616f", "title": "Review Using Props with Stateless Functional Components" @@ -6963,8 +6383,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/set-state-with-this-setstate", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/set-state-with-this-setstate" }, "id": "5a24c314108439a4d4036173", "title": "Set State with this.setState" @@ -6975,8 +6394,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/use--for-a-more-concise-conditional", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/use--for-a-more-concise-conditional" }, "id": "5a24c314108439a4d4036185", "title": "Use && for a More Concise Conditional" @@ -6987,8 +6405,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/use-a-ternary-expression-for-conditional-rendering", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/use-a-ternary-expression-for-conditional-rendering" }, "id": "5a24c314108439a4d4036187", "title": "Use a Ternary Expression for Conditional Rendering" @@ -6999,8 +6416,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/use-advanced-javascript-in-react-render-method", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/use-advanced-javascript-in-react-render-method" }, "id": "5a24c314108439a4d4036183", "title": "Use Advanced JavaScript in React Render Method" @@ -7011,8 +6427,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/use-array-filter-to-dynamically-filter-an-array", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/use-array-filter-to-dynamically-filter-an-array" }, "id": "5a24c314108439a4d403618c", "title": "Use Array.filter() to Dynamically Filter an Array" @@ -7023,8 +6438,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/use-array-map-to-dynamically-render-elements", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/use-array-map-to-dynamically-render-elements" }, "id": "5a24c314108439a4d403618a", "title": "Use Array.map() to Dynamically Render Elements" @@ -7035,8 +6449,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/use-default-props", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/use-default-props" }, "id": "5a24c314108439a4d403616b", "title": "Use Default Props" @@ -7047,8 +6460,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/use-proptypes-to-define-the-props-you-expect", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/use-proptypes-to-define-the-props-you-expect" }, "id": "5a24c314108439a4d403616d", "title": "Use PropTypes to Define the Props You Expect" @@ -7059,8 +6471,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/use-react-to-render-nested-components", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/use-react-to-render-nested-components" }, "id": "5a24c314108439a4d4036165", "title": "Use React to Render Nested Components" @@ -7071,8 +6482,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/use-state-to-toggle-an-element", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/use-state-to-toggle-an-element" }, "id": "5a24c314108439a4d4036176", "title": "Use State to Toggle an Element" @@ -7083,8 +6493,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/use-the-lifecycle-method-componentdidmount", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/use-the-lifecycle-method-componentdidmount" }, "id": "5a24c314108439a4d403617d", "title": "Use the Lifecycle Method componentDidMount" @@ -7095,8 +6504,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/use-the-lifecycle-method-componentwillmount", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/use-the-lifecycle-method-componentwillmount" }, "id": "5a24c314108439a4d403617c", "title": "Use the Lifecycle Method componentWillMount" @@ -7107,8 +6515,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/write-a-react-component-from-scratch", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/write-a-react-component-from-scratch" }, "id": "5a24c314108439a4d4036168", "title": "Write a React Component from Scratch" @@ -7119,8 +6526,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react/write-a-simple-counter", - "blockName": "React" + "slug": "/learn/front-end-development-libraries/react/write-a-simple-counter" }, "id": "5a24c314108439a4d4036177", "title": "Write a Simple Counter" @@ -7131,8 +6537,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react-and-redux/connect-redux-to-react", - "blockName": "React and Redux" + "slug": "/learn/front-end-development-libraries/react-and-redux/connect-redux-to-react" }, "id": "5a24c314108439a4d4036147", "title": "Connect Redux to React" @@ -7143,8 +6548,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react-and-redux/connect-redux-to-the-messages-app", - "blockName": "React and Redux" + "slug": "/learn/front-end-development-libraries/react-and-redux/connect-redux-to-the-messages-app" }, "id": "5a24c314108439a4d4036148", "title": "Connect Redux to the Messages App" @@ -7155,8 +6559,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react-and-redux/extract-local-state-into-redux", - "blockName": "React and Redux" + "slug": "/learn/front-end-development-libraries/react-and-redux/extract-local-state-into-redux" }, "id": "5a24c314108439a4d4036149", "title": "Extract Local State into Redux" @@ -7167,8 +6570,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react-and-redux/extract-state-logic-to-redux", - "blockName": "React and Redux" + "slug": "/learn/front-end-development-libraries/react-and-redux/extract-state-logic-to-redux" }, "id": "5a24c314108439a4d4036143", "title": "Extract State Logic to Redux" @@ -7179,8 +6581,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react-and-redux/getting-started-with-react-redux", - "blockName": "React and Redux" + "slug": "/learn/front-end-development-libraries/react-and-redux/getting-started-with-react-redux" }, "id": "5a24c314108439a4d4036141", "title": "Getting Started with React Redux" @@ -7191,8 +6592,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react-and-redux/manage-state-locally-first", - "blockName": "React and Redux" + "slug": "/learn/front-end-development-libraries/react-and-redux/manage-state-locally-first" }, "id": "5a24c314108439a4d4036142", "title": "Manage State Locally First" @@ -7203,8 +6603,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react-and-redux/map-dispatch-to-props", - "blockName": "React and Redux" + "slug": "/learn/front-end-development-libraries/react-and-redux/map-dispatch-to-props" }, "id": "5a24c314108439a4d4036146", "title": "Map Dispatch to Props" @@ -7215,8 +6614,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react-and-redux/map-state-to-props", - "blockName": "React and Redux" + "slug": "/learn/front-end-development-libraries/react-and-redux/map-state-to-props" }, "id": "5a24c314108439a4d4036145", "title": "Map State to Props" @@ -7227,8 +6625,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react-and-redux/moving-forward-from-here", - "blockName": "React and Redux" + "slug": "/learn/front-end-development-libraries/react-and-redux/moving-forward-from-here" }, "id": "5a24c314108439a4d403614a", "title": "Moving Forward From Here" @@ -7239,8 +6636,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/react-and-redux/use-provider-to-connect-redux-to-react", - "blockName": "React and Redux" + "slug": "/learn/front-end-development-libraries/react-and-redux/use-provider-to-connect-redux-to-react" }, "id": "5a24c314108439a4d4036144", "title": "Use Provider to Connect Redux to React" @@ -7251,8 +6647,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/redux/combine-multiple-reducers", - "blockName": "Redux" + "slug": "/learn/front-end-development-libraries/redux/combine-multiple-reducers" }, "id": "5a24c314108439a4d4036154", "title": "Combine Multiple Reducers" @@ -7263,8 +6658,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/redux/copy-an-object-with-object-assign", - "blockName": "Redux" + "slug": "/learn/front-end-development-libraries/redux/copy-an-object-with-object-assign" }, "id": "5a24c314108439a4d403615b", "title": "Copy an Object with Object.assign" @@ -7275,8 +6669,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/redux/create-a-redux-store", - "blockName": "Redux" + "slug": "/learn/front-end-development-libraries/redux/create-a-redux-store" }, "id": "5a24c314108439a4d403614b", "title": "Create a Redux Store" @@ -7287,8 +6680,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/redux/define-a-redux-action", - "blockName": "Redux" + "slug": "/learn/front-end-development-libraries/redux/define-a-redux-action" }, "id": "5a24c314108439a4d403614d", "title": "Define a Redux Action" @@ -7299,8 +6691,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/redux/define-an-action-creator", - "blockName": "Redux" + "slug": "/learn/front-end-development-libraries/redux/define-an-action-creator" }, "id": "5a24c314108439a4d403614e", "title": "Define an Action Creator" @@ -7311,8 +6702,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/redux/dispatch-an-action-event", - "blockName": "Redux" + "slug": "/learn/front-end-development-libraries/redux/dispatch-an-action-event" }, "id": "5a24c314108439a4d403614f", "title": "Dispatch an Action Event" @@ -7323,8 +6713,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/redux/get-state-from-the-redux-store", - "blockName": "Redux" + "slug": "/learn/front-end-development-libraries/redux/get-state-from-the-redux-store" }, "id": "5a24c314108439a4d403614c", "title": "Get State from the Redux Store" @@ -7335,8 +6724,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/redux/handle-an-action-in-the-store", - "blockName": "Redux" + "slug": "/learn/front-end-development-libraries/redux/handle-an-action-in-the-store" }, "id": "5a24c314108439a4d4036150", "title": "Handle an Action in the Store" @@ -7347,8 +6735,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/redux/never-mutate-state", - "blockName": "Redux" + "slug": "/learn/front-end-development-libraries/redux/never-mutate-state" }, "id": "5a24c314108439a4d4036158", "title": "Never Mutate State" @@ -7359,8 +6746,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/redux/register-a-store-listener", - "blockName": "Redux" + "slug": "/learn/front-end-development-libraries/redux/register-a-store-listener" }, "id": "5a24c314108439a4d4036153", "title": "Register a Store Listener" @@ -7371,8 +6757,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/redux/remove-an-item-from-an-array", - "blockName": "Redux" + "slug": "/learn/front-end-development-libraries/redux/remove-an-item-from-an-array" }, "id": "5a24c314108439a4d403615a", "title": "Remove an Item from an Array" @@ -7383,8 +6768,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/redux/send-action-data-to-the-store", - "blockName": "Redux" + "slug": "/learn/front-end-development-libraries/redux/send-action-data-to-the-store" }, "id": "5a24c314108439a4d4036155", "title": "Send Action Data to the Store" @@ -7395,8 +6779,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/redux/use-a-switch-statement-to-handle-multiple-actions", - "blockName": "Redux" + "slug": "/learn/front-end-development-libraries/redux/use-a-switch-statement-to-handle-multiple-actions" }, "id": "5a24c314108439a4d4036151", "title": "Use a Switch Statement to Handle Multiple Actions" @@ -7407,8 +6790,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/redux/use-const-for-action-types", - "blockName": "Redux" + "slug": "/learn/front-end-development-libraries/redux/use-const-for-action-types" }, "id": "5a24c314108439a4d4036152", "title": "Use const for Action Types" @@ -7419,8 +6801,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/redux/use-middleware-to-handle-asynchronous-actions", - "blockName": "Redux" + "slug": "/learn/front-end-development-libraries/redux/use-middleware-to-handle-asynchronous-actions" }, "id": "5a24c314108439a4d4036156", "title": "Use Middleware to Handle Asynchronous Actions" @@ -7431,8 +6812,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/redux/use-the-spread-operator-on-arrays", - "blockName": "Redux" + "slug": "/learn/front-end-development-libraries/redux/use-the-spread-operator-on-arrays" }, "id": "5a24c314108439a4d4036159", "title": "Use the Spread Operator on Arrays" @@ -7443,8 +6823,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/redux/write-a-counter-with-redux", - "blockName": "Redux" + "slug": "/learn/front-end-development-libraries/redux/write-a-counter-with-redux" }, "id": "5a24c314108439a4d4036157", "title": "Write a Counter with Redux" @@ -7455,8 +6834,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/sass/apply-a-style-until-a-condition-is-met-with-while", - "blockName": "Sass" + "slug": "/learn/front-end-development-libraries/sass/apply-a-style-until-a-condition-is-met-with-while" }, "id": "587d7dbf367417b2b2512bbb", "title": "Apply a Style Until a Condition is Met with @while" @@ -7467,8 +6845,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/sass/create-reusable-css-with-mixins", - "blockName": "Sass" + "slug": "/learn/front-end-development-libraries/sass/create-reusable-css-with-mixins" }, "id": "587d7dbd367417b2b2512bb6", "title": "Create Reusable CSS with Mixins" @@ -7479,8 +6856,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/sass/extend-one-set-of-css-styles-to-another-element", - "blockName": "Sass" + "slug": "/learn/front-end-development-libraries/sass/extend-one-set-of-css-styles-to-another-element" }, "id": "587d7fa5367417b2b2512bbd", "title": "Extend One Set of CSS Styles to Another Element" @@ -7491,8 +6867,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/sass/nest-css-with-sass", - "blockName": "Sass" + "slug": "/learn/front-end-development-libraries/sass/nest-css-with-sass" }, "id": "587d7dbd367417b2b2512bb5", "title": "Nest CSS with Sass" @@ -7503,8 +6878,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/sass/split-your-styles-into-smaller-chunks-with-partials", - "blockName": "Sass" + "slug": "/learn/front-end-development-libraries/sass/split-your-styles-into-smaller-chunks-with-partials" }, "id": "587d7dbf367417b2b2512bbc", "title": "Split Your Styles into Smaller Chunks with Partials" @@ -7515,8 +6889,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/sass/store-data-with-sass-variables", - "blockName": "Sass" + "slug": "/learn/front-end-development-libraries/sass/store-data-with-sass-variables" }, "id": "587d7dbd367417b2b2512bb4", "title": "Store Data with Sass Variables" @@ -7527,8 +6900,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/sass/use-each-to-map-over-items-in-a-list", - "blockName": "Sass" + "slug": "/learn/front-end-development-libraries/sass/use-each-to-map-over-items-in-a-list" }, "id": "587d7dbf367417b2b2512bba", "title": "Use @each to Map Over Items in a List" @@ -7539,8 +6911,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/sass/use-for-to-create-a-sass-loop", - "blockName": "Sass" + "slug": "/learn/front-end-development-libraries/sass/use-for-to-create-a-sass-loop" }, "id": "587d7dbe367417b2b2512bb9", "title": "Use @for to Create a Sass Loop" @@ -7551,8 +6922,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/front-end-development-libraries/sass/use-if-and-else-to-add-logic-to-your-styles", - "blockName": "Sass" + "slug": "/learn/front-end-development-libraries/sass/use-if-and-else-to-add-logic-to-your-styles" }, "id": "587d7dbe367417b2b2512bb8", "title": "Use @if and @else to Add Logic To Your Styles" @@ -7563,8 +6933,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-projects/visualize-data-with-a-bar-chart", - "blockName": "Data Visualization Projects" + "slug": "/learn/data-visualization/data-visualization-projects/visualize-data-with-a-bar-chart" }, "id": "bd7168d8c242eddfaeb5bd13", "title": "Visualize Data with a Bar Chart" @@ -7575,8 +6944,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-projects/visualize-data-with-a-choropleth-map", - "blockName": "Data Visualization Projects" + "slug": "/learn/data-visualization/data-visualization-projects/visualize-data-with-a-choropleth-map" }, "id": "587d7fa6367417b2b2512bbf", "title": "Visualize Data with a Choropleth Map" @@ -7587,8 +6955,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-projects/visualize-data-with-a-heat-map", - "blockName": "Data Visualization Projects" + "slug": "/learn/data-visualization/data-visualization-projects/visualize-data-with-a-heat-map" }, "id": "bd7188d8c242eddfaeb5bd13", "title": "Visualize Data with a Heat Map" @@ -7599,8 +6966,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-projects/visualize-data-with-a-scatterplot-graph", - "blockName": "Data Visualization Projects" + "slug": "/learn/data-visualization/data-visualization-projects/visualize-data-with-a-scatterplot-graph" }, "id": "bd7178d8c242eddfaeb5bd13", "title": "Visualize Data with a Scatterplot Graph" @@ -7611,8 +6977,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-projects/visualize-data-with-a-treemap-diagram", - "blockName": "Data Visualization Projects" + "slug": "/learn/data-visualization/data-visualization-projects/visualize-data-with-a-treemap-diagram" }, "id": "587d7fa6367417b2b2512bc0", "title": "Visualize Data with a Treemap Diagram" @@ -7623,8 +6988,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/add-a-hover-effect-to-a-d3-element", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/add-a-hover-effect-to-a-d3-element" }, "id": "587d7faa367417b2b2512bd4", "title": "Add a Hover Effect to a D3 Element" @@ -7635,8 +6999,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/add-a-tooltip-to-a-d3-element", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/add-a-tooltip-to-a-d3-element" }, "id": "587d7faa367417b2b2512bd6", "title": "Add a Tooltip to a D3 Element" @@ -7647,8 +7010,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/add-attributes-to-the-circle-elements", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/add-attributes-to-the-circle-elements" }, "id": "587d7fab367417b2b2512bd8", "title": "Add Attributes to the Circle Elements" @@ -7659,8 +7021,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/add-axes-to-a-visualization", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/add-axes-to-a-visualization" }, "id": "587d7fad367417b2b2512bdf", "title": "Add Axes to a Visualization" @@ -7671,8 +7032,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/add-classes-with-d3", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/add-classes-with-d3" }, "id": "587d7fa7367417b2b2512bc8", "title": "Add Classes with D3" @@ -7683,8 +7043,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/add-document-elements-with-d3", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/add-document-elements-with-d3" }, "id": "587d7fa6367417b2b2512bc2", "title": "Add Document Elements with D3" @@ -7695,8 +7054,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/add-inline-styling-to-elements", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/add-inline-styling-to-elements" }, "id": "587d7fa7367417b2b2512bc6", "title": "Add Inline Styling to Elements" @@ -7707,8 +7065,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/add-labels-to-d3-elements", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/add-labels-to-d3-elements" }, "id": "587d7faa367417b2b2512bd2", "title": "Add Labels to D3 Elements" @@ -7719,8 +7076,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/add-labels-to-scatter-plot-circles", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/add-labels-to-scatter-plot-circles" }, "id": "587d7fab367417b2b2512bd9", "title": "Add Labels to Scatter Plot Circles" @@ -7731,8 +7087,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/change-styles-based-on-data", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/change-styles-based-on-data" }, "id": "587d7fa7367417b2b2512bc7", "title": "Change Styles Based on Data" @@ -7743,8 +7098,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/change-the-color-of-an-svg-element", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/change-the-color-of-an-svg-element" }, "id": "587d7fa9367417b2b2512bd1", "title": "Change the Color of an SVG Element" @@ -7755,8 +7109,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/change-the-presentation-of-a-bar-chart", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/change-the-presentation-of-a-bar-chart" }, "id": "587d7fa8367417b2b2512bca", "title": "Change the Presentation of a Bar Chart" @@ -7767,8 +7120,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/create-a-bar-for-each-data-point-in-the-set", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/create-a-bar-for-each-data-point-in-the-set" }, "id": "587d7fa8367417b2b2512bcd", "title": "Create a Bar for Each Data Point in the Set" @@ -7779,8 +7131,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/create-a-linear-scale-with-d3", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/create-a-linear-scale-with-d3" }, "id": "587d7fab367417b2b2512bda", "title": "Create a Linear Scale with D3" @@ -7791,8 +7142,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/create-a-scatterplot-with-svg-circles", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/create-a-scatterplot-with-svg-circles" }, "id": "587d7fab367417b2b2512bd7", "title": "Create a Scatterplot with SVG Circles" @@ -7803,8 +7153,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/display-shapes-with-svg", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/display-shapes-with-svg" }, "id": "587d7fa8367417b2b2512bcc", "title": "Display Shapes with SVG" @@ -7815,8 +7164,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/dynamically-change-the-height-of-each-bar", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/dynamically-change-the-height-of-each-bar" }, "id": "587d7fa9367417b2b2512bcf", "title": "Dynamically Change the Height of Each Bar" @@ -7827,8 +7175,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/dynamically-set-the-coordinates-for-each-bar", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/dynamically-set-the-coordinates-for-each-bar" }, "id": "587d7fa9367417b2b2512bce", "title": "Dynamically Set the Coordinates for Each Bar" @@ -7839,8 +7186,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/invert-svg-elements", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/invert-svg-elements" }, "id": "587d7fa9367417b2b2512bd0", "title": "Invert SVG Elements" @@ -7851,8 +7197,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/learn-about-svg-in-d3", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/learn-about-svg-in-d3" }, "id": "587d7fa8367417b2b2512bcb", "title": "Learn About SVG in D3" @@ -7863,8 +7208,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/select-a-group-of-elements-with-d3", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/select-a-group-of-elements-with-d3" }, "id": "587d7fa6367417b2b2512bc3", "title": "Select a Group of Elements with D3" @@ -7875,8 +7219,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/set-a-domain-and-a-range-on-a-scale", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/set-a-domain-and-a-range-on-a-scale" }, "id": "587d7fac367417b2b2512bdb", "title": "Set a Domain and a Range on a Scale" @@ -7887,8 +7230,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/style-d3-labels", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/style-d3-labels" }, "id": "587d7faa367417b2b2512bd3", "title": "Style D3 Labels" @@ -7899,8 +7241,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/update-the-height-of-an-element-dynamically", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/update-the-height-of-an-element-dynamically" }, "id": "587d7fa8367417b2b2512bc9", "title": "Update the Height of an Element Dynamically" @@ -7911,8 +7252,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/use-a-pre-defined-scale-to-place-elements", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/use-a-pre-defined-scale-to-place-elements" }, "id": "587d7fac367417b2b2512bde", "title": "Use a Pre-Defined Scale to Place Elements" @@ -7923,8 +7263,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/use-dynamic-scales", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/use-dynamic-scales" }, "id": "587d7fac367417b2b2512bdd", "title": "Use Dynamic Scales" @@ -7935,8 +7274,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/use-the-d3-max-and-d3-min-functions-to-find-minimum-and-maximum-values-in-a-dataset", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/use-the-d3-max-and-d3-min-functions-to-find-minimum-and-maximum-values-in-a-dataset" }, "id": "587d7fac367417b2b2512bdc", "title": "Use the d3.max and d3.min Functions to Find Minimum and Maximum Values in a Dataset" @@ -7947,8 +7285,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/work-with-data-in-d3", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/work-with-data-in-d3" }, "id": "587d7fa7367417b2b2512bc4", "title": "Work with Data in D3" @@ -7959,8 +7296,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/data-visualization-with-d3/work-with-dynamic-data-in-d3", - "blockName": "Data Visualization with D3" + "slug": "/learn/data-visualization/data-visualization-with-d3/work-with-dynamic-data-in-d3" }, "id": "587d7fa7367417b2b2512bc5", "title": "Work with Dynamic Data in D3" @@ -7971,8 +7307,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/json-apis-and-ajax/access-the-json-data-from-an-api", - "blockName": "JSON APIs and Ajax" + "slug": "/learn/data-visualization/json-apis-and-ajax/access-the-json-data-from-an-api" }, "id": "587d7fae367417b2b2512be4", "title": "Access the JSON Data from an API" @@ -7983,8 +7318,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/json-apis-and-ajax/change-text-with-click-events", - "blockName": "JSON APIs and Ajax" + "slug": "/learn/data-visualization/json-apis-and-ajax/change-text-with-click-events" }, "id": "587d7fad367417b2b2512be2", "title": "Change Text with click Events" @@ -7995,8 +7329,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/json-apis-and-ajax/convert-json-data-to-html", - "blockName": "JSON APIs and Ajax" + "slug": "/learn/data-visualization/json-apis-and-ajax/convert-json-data-to-html" }, "id": "587d7fae367417b2b2512be5", "title": "Convert JSON Data to HTML" @@ -8007,8 +7340,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/json-apis-and-ajax/get-geolocation-data-to-find-a-users-gps-coordinates", - "blockName": "JSON APIs and Ajax" + "slug": "/learn/data-visualization/json-apis-and-ajax/get-geolocation-data-to-find-a-users-gps-coordinates" }, "id": "587d7faf367417b2b2512be8", "title": "Get Geolocation Data to Find A User's GPS Coordinates" @@ -8019,8 +7351,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/json-apis-and-ajax/get-json-with-the-javascript-fetch-method", - "blockName": "JSON APIs and Ajax" + "slug": "/learn/data-visualization/json-apis-and-ajax/get-json-with-the-javascript-fetch-method" }, "id": "5ccfad82bb2dc6c965a848e5", "title": "Get JSON with the JavaScript fetch method" @@ -8031,8 +7362,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/json-apis-and-ajax/get-json-with-the-javascript-xmlhttprequest-method", - "blockName": "JSON APIs and Ajax" + "slug": "/learn/data-visualization/json-apis-and-ajax/get-json-with-the-javascript-xmlhttprequest-method" }, "id": "587d7fae367417b2b2512be3", "title": "Get JSON with the JavaScript XMLHttpRequest Method" @@ -8043,8 +7373,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/json-apis-and-ajax/handle-click-events-with-javascript-using-the-onclick-property", - "blockName": "JSON APIs and Ajax" + "slug": "/learn/data-visualization/json-apis-and-ajax/handle-click-events-with-javascript-using-the-onclick-property" }, "id": "587d7fad367417b2b2512be1", "title": "Handle Click Events with JavaScript using the onclick property" @@ -8055,8 +7384,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/json-apis-and-ajax/post-data-with-the-javascript-xmlhttprequest-method", - "blockName": "JSON APIs and Ajax" + "slug": "/learn/data-visualization/json-apis-and-ajax/post-data-with-the-javascript-xmlhttprequest-method" }, "id": "587d7faf367417b2b2512be9", "title": "Post Data with the JavaScript XMLHttpRequest Method" @@ -8067,8 +7395,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/json-apis-and-ajax/pre-filter-json-to-get-the-data-you-need", - "blockName": "JSON APIs and Ajax" + "slug": "/learn/data-visualization/json-apis-and-ajax/pre-filter-json-to-get-the-data-you-need" }, "id": "587d7fae367417b2b2512be7", "title": "Pre-filter JSON to Get the Data You Need" @@ -8079,8 +7406,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-visualization/json-apis-and-ajax/render-images-from-data-sources", - "blockName": "JSON APIs and Ajax" + "slug": "/learn/data-visualization/json-apis-and-ajax/render-images-from-data-sources" }, "id": "587d7fae367417b2b2512be6", "title": "Render Images from Data Sources" @@ -8091,8 +7417,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/back-end-development-and-apis-projects/exercise-tracker", - "blockName": "Back End Development and APIs Projects" + "slug": "/learn/back-end-development-and-apis/back-end-development-and-apis-projects/exercise-tracker" }, "id": "5a8b073d06fa14fcfde687aa", "title": "Exercise Tracker" @@ -8103,8 +7428,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/back-end-development-and-apis-projects/file-metadata-microservice", - "blockName": "Back End Development and APIs Projects" + "slug": "/learn/back-end-development-and-apis/back-end-development-and-apis-projects/file-metadata-microservice" }, "id": "bd7158d8c443edefaeb5bd0f", "title": "File Metadata Microservice" @@ -8115,8 +7439,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/back-end-development-and-apis-projects/request-header-parser-microservice", - "blockName": "Back End Development and APIs Projects" + "slug": "/learn/back-end-development-and-apis/back-end-development-and-apis-projects/request-header-parser-microservice" }, "id": "bd7158d8c443edefaeb5bdff", "title": "Request Header Parser Microservice" @@ -8127,8 +7450,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/back-end-development-and-apis-projects/timestamp-microservice", - "blockName": "Back End Development and APIs Projects" + "slug": "/learn/back-end-development-and-apis/back-end-development-and-apis-projects/timestamp-microservice" }, "id": "bd7158d8c443edefaeb5bdef", "title": "Timestamp Microservice" @@ -8139,8 +7461,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/back-end-development-and-apis-projects/url-shortener-microservice", - "blockName": "Back End Development and APIs Projects" + "slug": "/learn/back-end-development-and-apis/back-end-development-and-apis-projects/url-shortener-microservice" }, "id": "bd7158d8c443edefaeb5bd0e", "title": "URL Shortener Microservice" @@ -8151,8 +7472,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/basic-node-and-express/chain-middleware-to-create-a-time-server", - "blockName": "Basic Node and Express" + "slug": "/learn/back-end-development-and-apis/basic-node-and-express/chain-middleware-to-create-a-time-server" }, "id": "587d7fb1367417b2b2512bf4", "title": "Chain Middleware to Create a Time Server" @@ -8163,8 +7483,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/basic-node-and-express/get-data-from-post-requests", - "blockName": "Basic Node and Express" + "slug": "/learn/back-end-development-and-apis/basic-node-and-express/get-data-from-post-requests" }, "id": "587d7fb2367417b2b2512bf8", "title": "Get Data from POST Requests" @@ -8175,8 +7494,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/basic-node-and-express/get-query-parameter-input-from-the-client", - "blockName": "Basic Node and Express" + "slug": "/learn/back-end-development-and-apis/basic-node-and-express/get-query-parameter-input-from-the-client" }, "id": "587d7fb2367417b2b2512bf6", "title": "Get Query Parameter Input from the Client" @@ -8187,8 +7505,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/basic-node-and-express/get-route-parameter-input-from-the-client", - "blockName": "Basic Node and Express" + "slug": "/learn/back-end-development-and-apis/basic-node-and-express/get-route-parameter-input-from-the-client" }, "id": "587d7fb2367417b2b2512bf5", "title": "Get Route Parameter Input from the Client" @@ -8199,8 +7516,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/basic-node-and-express/implement-a-root-level-request-logger-middleware", - "blockName": "Basic Node and Express" + "slug": "/learn/back-end-development-and-apis/basic-node-and-express/implement-a-root-level-request-logger-middleware" }, "id": "587d7fb1367417b2b2512bf3", "title": "Implement a Root-Level Request Logger Middleware" @@ -8211,8 +7527,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/basic-node-and-express/meet-the-node-console", - "blockName": "Basic Node and Express" + "slug": "/learn/back-end-development-and-apis/basic-node-and-express/meet-the-node-console" }, "id": "587d7fb0367417b2b2512bed", "title": "Meet the Node console" @@ -8223,8 +7538,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/basic-node-and-express/serve-an-html-file", - "blockName": "Basic Node and Express" + "slug": "/learn/back-end-development-and-apis/basic-node-and-express/serve-an-html-file" }, "id": "587d7fb0367417b2b2512bef", "title": "Serve an HTML File" @@ -8235,8 +7549,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/basic-node-and-express/serve-json-on-a-specific-route", - "blockName": "Basic Node and Express" + "slug": "/learn/back-end-development-and-apis/basic-node-and-express/serve-json-on-a-specific-route" }, "id": "587d7fb1367417b2b2512bf1", "title": "Serve JSON on a Specific Route" @@ -8247,8 +7560,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/basic-node-and-express/serve-static-assets", - "blockName": "Basic Node and Express" + "slug": "/learn/back-end-development-and-apis/basic-node-and-express/serve-static-assets" }, "id": "587d7fb0367417b2b2512bf0", "title": "Serve Static Assets" @@ -8259,8 +7571,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/basic-node-and-express/start-a-working-express-server", - "blockName": "Basic Node and Express" + "slug": "/learn/back-end-development-and-apis/basic-node-and-express/start-a-working-express-server" }, "id": "587d7fb0367417b2b2512bee", "title": "Start a Working Express Server" @@ -8271,8 +7582,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/basic-node-and-express/use-body-parser-to-parse-post-requests", - "blockName": "Basic Node and Express" + "slug": "/learn/back-end-development-and-apis/basic-node-and-express/use-body-parser-to-parse-post-requests" }, "id": "587d7fb2367417b2b2512bf7", "title": "Use body-parser to Parse POST Requests" @@ -8283,8 +7593,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/basic-node-and-express/use-the--env-file", - "blockName": "Basic Node and Express" + "slug": "/learn/back-end-development-and-apis/basic-node-and-express/use-the--env-file" }, "id": "587d7fb1367417b2b2512bf2", "title": "Use the .env File" @@ -8295,8 +7604,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/managing-packages-with-npm/add-a-description-to-your-package-json", - "blockName": "Managing Packages with Npm" + "slug": "/learn/back-end-development-and-apis/managing-packages-with-npm/add-a-description-to-your-package-json" }, "id": "587d7fb3367417b2b2512bfc", "title": "Add a Description to Your package.json" @@ -8307,8 +7615,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/managing-packages-with-npm/add-a-license-to-your-package-json", - "blockName": "Managing Packages with Npm" + "slug": "/learn/back-end-development-and-apis/managing-packages-with-npm/add-a-license-to-your-package-json" }, "id": "587d7fb4367417b2b2512bfe", "title": "Add a License to Your package.json" @@ -8319,8 +7626,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/managing-packages-with-npm/add-a-version-to-your-package-json", - "blockName": "Managing Packages with Npm" + "slug": "/learn/back-end-development-and-apis/managing-packages-with-npm/add-a-version-to-your-package-json" }, "id": "587d7fb4367417b2b2512bff", "title": "Add a Version to Your package.json" @@ -8331,8 +7637,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/managing-packages-with-npm/add-keywords-to-your-package-json", - "blockName": "Managing Packages with Npm" + "slug": "/learn/back-end-development-and-apis/managing-packages-with-npm/add-keywords-to-your-package-json" }, "id": "587d7fb4367417b2b2512bfd", "title": "Add Keywords to Your package.json" @@ -8343,8 +7648,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/managing-packages-with-npm/expand-your-project-with-external-packages-from-npm", - "blockName": "Managing Packages with Npm" + "slug": "/learn/back-end-development-and-apis/managing-packages-with-npm/expand-your-project-with-external-packages-from-npm" }, "id": "587d7fb4367417b2b2512c00", "title": "Expand Your Project with External Packages from npm" @@ -8355,8 +7659,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/managing-packages-with-npm/how-to-use-package-json-the-core-of-any-node-js-project-or-npm-package", - "blockName": "Managing Packages with Npm" + "slug": "/learn/back-end-development-and-apis/managing-packages-with-npm/how-to-use-package-json-the-core-of-any-node-js-project-or-npm-package" }, "id": "587d7fb3367417b2b2512bfb", "title": "How to Use package.json, the Core of Any Node.js Project or npm Package" @@ -8367,8 +7670,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/managing-packages-with-npm/manage-npm-dependencies-by-understanding-semantic-versioning", - "blockName": "Managing Packages with Npm" + "slug": "/learn/back-end-development-and-apis/managing-packages-with-npm/manage-npm-dependencies-by-understanding-semantic-versioning" }, "id": "587d7fb5367417b2b2512c01", "title": "Manage npm Dependencies By Understanding Semantic Versioning" @@ -8379,8 +7681,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/managing-packages-with-npm/remove-a-package-from-your-dependencies", - "blockName": "Managing Packages with Npm" + "slug": "/learn/back-end-development-and-apis/managing-packages-with-npm/remove-a-package-from-your-dependencies" }, "id": "587d7fb5367417b2b2512c04", "title": "Remove a Package from Your Dependencies" @@ -8391,8 +7692,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/managing-packages-with-npm/use-the-caret-character-to-use-the-latest-minor-version-of-a-dependency", - "blockName": "Managing Packages with Npm" + "slug": "/learn/back-end-development-and-apis/managing-packages-with-npm/use-the-caret-character-to-use-the-latest-minor-version-of-a-dependency" }, "id": "587d7fb5367417b2b2512c03", "title": "Use the Caret-Character to Use the Latest Minor Version of a Dependency" @@ -8403,8 +7703,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/managing-packages-with-npm/use-the-tilde-character-to-always-use-the-latest-patch-version-of-a-dependency", - "blockName": "Managing Packages with Npm" + "slug": "/learn/back-end-development-and-apis/managing-packages-with-npm/use-the-tilde-character-to-always-use-the-latest-patch-version-of-a-dependency" }, "id": "587d7fb5367417b2b2512c02", "title": "Use the Tilde-Character to Always Use the Latest Patch Version of a Dependency" @@ -8415,8 +7714,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/mongodb-and-mongoose/chain-search-query-helpers-to-narrow-search-results", - "blockName": "MongoDB and Mongoose" + "slug": "/learn/back-end-development-and-apis/mongodb-and-mongoose/chain-search-query-helpers-to-narrow-search-results" }, "id": "587d7fb9367417b2b2512c12", "title": "Chain Search Query Helpers to Narrow Search Results" @@ -8427,8 +7725,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/mongodb-and-mongoose/create-a-model", - "blockName": "MongoDB and Mongoose" + "slug": "/learn/back-end-development-and-apis/mongodb-and-mongoose/create-a-model" }, "id": "587d7fb6367417b2b2512c07", "title": "Create a Model" @@ -8439,8 +7736,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/mongodb-and-mongoose/create-and-save-a-record-of-a-model", - "blockName": "MongoDB and Mongoose" + "slug": "/learn/back-end-development-and-apis/mongodb-and-mongoose/create-and-save-a-record-of-a-model" }, "id": "587d7fb6367417b2b2512c09", "title": "Create and Save a Record of a Model" @@ -8451,8 +7747,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/mongodb-and-mongoose/create-many-records-with-model-create", - "blockName": "MongoDB and Mongoose" + "slug": "/learn/back-end-development-and-apis/mongodb-and-mongoose/create-many-records-with-model-create" }, "id": "587d7fb7367417b2b2512c0a", "title": "Create Many Records with model.create()" @@ -8463,8 +7758,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/mongodb-and-mongoose/delete-many-documents-with-model-remove", - "blockName": "MongoDB and Mongoose" + "slug": "/learn/back-end-development-and-apis/mongodb-and-mongoose/delete-many-documents-with-model-remove" }, "id": "587d7fb8367417b2b2512c11", "title": "Delete Many Documents with model.remove()" @@ -8475,8 +7769,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/mongodb-and-mongoose/delete-one-document-using-model-findbyidandremove", - "blockName": "MongoDB and Mongoose" + "slug": "/learn/back-end-development-and-apis/mongodb-and-mongoose/delete-one-document-using-model-findbyidandremove" }, "id": "587d7fb8367417b2b2512c10", "title": "Delete One Document Using model.findByIdAndRemove" @@ -8487,8 +7780,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/mongodb-and-mongoose/install-and-set-up-mongoose", - "blockName": "MongoDB and Mongoose" + "slug": "/learn/back-end-development-and-apis/mongodb-and-mongoose/install-and-set-up-mongoose" }, "id": "587d7fb6367417b2b2512c06", "title": "Install and Set Up Mongoose" @@ -8499,8 +7791,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/mongodb-and-mongoose/perform-classic-updates-by-running-find-edit-then-save", - "blockName": "MongoDB and Mongoose" + "slug": "/learn/back-end-development-and-apis/mongodb-and-mongoose/perform-classic-updates-by-running-find-edit-then-save" }, "id": "587d7fb8367417b2b2512c0e", "title": "Perform Classic Updates by Running Find, Edit, then Save" @@ -8511,8 +7802,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/mongodb-and-mongoose/perform-new-updates-on-a-document-using-model-findoneandupdate", - "blockName": "MongoDB and Mongoose" + "slug": "/learn/back-end-development-and-apis/mongodb-and-mongoose/perform-new-updates-on-a-document-using-model-findoneandupdate" }, "id": "587d7fb8367417b2b2512c0f", "title": "Perform New Updates on a Document Using model.findOneAndUpdate()" @@ -8523,8 +7813,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/mongodb-and-mongoose/use-model-find-to-search-your-database", - "blockName": "MongoDB and Mongoose" + "slug": "/learn/back-end-development-and-apis/mongodb-and-mongoose/use-model-find-to-search-your-database" }, "id": "587d7fb7367417b2b2512c0b", "title": "Use model.find() to Search Your Database" @@ -8535,8 +7824,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/mongodb-and-mongoose/use-model-findbyid-to-search-your-database-by-id", - "blockName": "MongoDB and Mongoose" + "slug": "/learn/back-end-development-and-apis/mongodb-and-mongoose/use-model-findbyid-to-search-your-database-by-id" }, "id": "587d7fb7367417b2b2512c0d", "title": "Use model.findById() to Search Your Database By _id" @@ -8547,8 +7835,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/back-end-development-and-apis/mongodb-and-mongoose/use-model-findone-to-return-a-single-matching-document-from-your-database", - "blockName": "MongoDB and Mongoose" + "slug": "/learn/back-end-development-and-apis/mongodb-and-mongoose/use-model-findone-to-return-a-single-matching-document-from-your-database" }, "id": "587d7fb7367417b2b2512c0c", "title": "Use model.findOne() to Return a Single Matching Document from Your Database" @@ -8559,8 +7846,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/advanced-node-and-express/announce-new-users", - "blockName": "Advanced Node and Express" + "slug": "/learn/quality-assurance/advanced-node-and-express/announce-new-users" }, "id": "589fc832f9fc0f352b528e78", "title": "Announce New Users" @@ -8571,8 +7857,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/advanced-node-and-express/authentication-strategies", - "blockName": "Advanced Node and Express" + "slug": "/learn/quality-assurance/advanced-node-and-express/authentication-strategies" }, "id": "5895f70df9fc0f352b528e68", "title": "Authentication Strategies" @@ -8583,8 +7868,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/advanced-node-and-express/authentication-with-socket-io", - "blockName": "Advanced Node and Express" + "slug": "/learn/quality-assurance/advanced-node-and-express/authentication-with-socket-io" }, "id": "589fc831f9fc0f352b528e77", "title": "Authentication with Socket.IO" @@ -8595,8 +7879,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/advanced-node-and-express/clean-up-your-project-with-modules", - "blockName": "Advanced Node and Express" + "slug": "/learn/quality-assurance/advanced-node-and-express/clean-up-your-project-with-modules" }, "id": "589690e6f9fc0f352b528e6e", "title": "Clean Up Your Project with Modules" @@ -8607,8 +7890,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/advanced-node-and-express/communicate-by-emitting", - "blockName": "Advanced Node and Express" + "slug": "/learn/quality-assurance/advanced-node-and-express/communicate-by-emitting" }, "id": "589fc831f9fc0f352b528e75", "title": "Communicate by Emitting" @@ -8619,8 +7901,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/advanced-node-and-express/create-new-middleware", - "blockName": "Advanced Node and Express" + "slug": "/learn/quality-assurance/advanced-node-and-express/create-new-middleware" }, "id": "5895f70df9fc0f352b528e6a", "title": "Create New Middleware" @@ -8631,8 +7912,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/advanced-node-and-express/handle-a-disconnect", - "blockName": "Advanced Node and Express" + "slug": "/learn/quality-assurance/advanced-node-and-express/handle-a-disconnect" }, "id": "589fc831f9fc0f352b528e76", "title": "Handle a Disconnect" @@ -8643,8 +7923,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/advanced-node-and-express/hashing-your-passwords", - "blockName": "Advanced Node and Express" + "slug": "/learn/quality-assurance/advanced-node-and-express/hashing-your-passwords" }, "id": "58a25c98f9fc0f352b528e7f", "title": "Hashing Your Passwords" @@ -8655,8 +7934,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/advanced-node-and-express/how-to-put-a-profile-together", - "blockName": "Advanced Node and Express" + "slug": "/learn/quality-assurance/advanced-node-and-express/how-to-put-a-profile-together" }, "id": "5895f70ef9fc0f352b528e6b", "title": "How to Put a Profile Together" @@ -8667,8 +7945,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/advanced-node-and-express/how-to-use-passport-strategies", - "blockName": "Advanced Node and Express" + "slug": "/learn/quality-assurance/advanced-node-and-express/how-to-use-passport-strategies" }, "id": "5895f70df9fc0f352b528e69", "title": "How to Use Passport Strategies" @@ -8679,8 +7956,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/advanced-node-and-express/implement-the-serialization-of-a-passport-user", - "blockName": "Advanced Node and Express" + "slug": "/learn/quality-assurance/advanced-node-and-express/implement-the-serialization-of-a-passport-user" }, "id": "5895f70cf9fc0f352b528e67", "title": "Implement the Serialization of a Passport User" @@ -8691,8 +7967,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/advanced-node-and-express/implementation-of-social-authentication-ii", - "blockName": "Advanced Node and Express" + "slug": "/learn/quality-assurance/advanced-node-and-express/implementation-of-social-authentication-ii" }, "id": "589a69f5f9fc0f352b528e71", "title": "Implementation of Social Authentication II" @@ -8703,8 +7978,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/advanced-node-and-express/implementation-of-social-authentication-iii", - "blockName": "Advanced Node and Express" + "slug": "/learn/quality-assurance/advanced-node-and-express/implementation-of-social-authentication-iii" }, "id": "589a8eb3f9fc0f352b528e72", "title": "Implementation of Social Authentication III" @@ -8715,8 +7989,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/advanced-node-and-express/implementation-of-social-authentication", - "blockName": "Advanced Node and Express" + "slug": "/learn/quality-assurance/advanced-node-and-express/implementation-of-social-authentication" }, "id": "589a69f5f9fc0f352b528e70", "title": "Implementation of Social Authentication" @@ -8727,8 +8000,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/advanced-node-and-express/logging-a-user-out", - "blockName": "Advanced Node and Express" + "slug": "/learn/quality-assurance/advanced-node-and-express/logging-a-user-out" }, "id": "58965611f9fc0f352b528e6c", "title": "Logging a User Out" @@ -8739,8 +8011,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/advanced-node-and-express/registration-of-new-users", - "blockName": "Advanced Node and Express" + "slug": "/learn/quality-assurance/advanced-node-and-express/registration-of-new-users" }, "id": "58966a17f9fc0f352b528e6d", "title": "Registration of New Users" @@ -8751,8 +8022,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/advanced-node-and-express/send-and-display-chat-messages", - "blockName": "Advanced Node and Express" + "slug": "/learn/quality-assurance/advanced-node-and-express/send-and-display-chat-messages" }, "id": "589fc832f9fc0f352b528e79", "title": "Send and Display Chat Messages" @@ -8763,8 +8033,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/advanced-node-and-express/serialization-of-a-user-object", - "blockName": "Advanced Node and Express" + "slug": "/learn/quality-assurance/advanced-node-and-express/serialization-of-a-user-object" }, "id": "5895f70cf9fc0f352b528e66", "title": "Serialization of a User Object" @@ -8775,8 +8044,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/advanced-node-and-express/set-up-a-template-engine", - "blockName": "Advanced Node and Express" + "slug": "/learn/quality-assurance/advanced-node-and-express/set-up-a-template-engine" }, "id": "5895f700f9fc0f352b528e63", "title": "Set up a Template Engine" @@ -8787,8 +8055,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/advanced-node-and-express/set-up-passport", - "blockName": "Advanced Node and Express" + "slug": "/learn/quality-assurance/advanced-node-and-express/set-up-passport" }, "id": "5895f70cf9fc0f352b528e65", "title": "Set up Passport" @@ -8799,8 +8066,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/advanced-node-and-express/set-up-the-environment", - "blockName": "Advanced Node and Express" + "slug": "/learn/quality-assurance/advanced-node-and-express/set-up-the-environment" }, "id": "589fc830f9fc0f352b528e74", "title": "Set up the Environment" @@ -8811,8 +8077,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/advanced-node-and-express/use-a-template-engines-powers", - "blockName": "Advanced Node and Express" + "slug": "/learn/quality-assurance/advanced-node-and-express/use-a-template-engines-powers" }, "id": "5895f70bf9fc0f352b528e64", "title": "Use a Template Engine's Powers" @@ -8823,8 +8088,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/assert-deep-equality-with--deepequal-and--notdeepequal", - "blockName": "Quality Assurance and Testing with Chai" + "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/assert-deep-equality-with--deepequal-and--notdeepequal" }, "id": "587d824c367417b2b2512c4c", "title": "Assert Deep Equality with .deepEqual and .notDeepEqual" @@ -8835,8 +8099,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/compare-the-properties-of-two-elements", - "blockName": "Quality Assurance and Testing with Chai" + "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/compare-the-properties-of-two-elements" }, "id": "587d824c367417b2b2512c4d", "title": "Compare the Properties of Two Elements" @@ -8847,8 +8110,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/learn-how-javascript-assertions-work", - "blockName": "Quality Assurance and Testing with Chai" + "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/learn-how-javascript-assertions-work" }, "id": "587d824a367417b2b2512c46", "title": "Learn How JavaScript Assertions Work" @@ -8859,8 +8121,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-an-api-response-using-chai-http-iii---put-method", - "blockName": "Quality Assurance and Testing with Chai" + "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-an-api-response-using-chai-http-iii---put-method" }, "id": "587d824f367417b2b2512c5a", "title": "Run Functional Tests on an API Response using Chai-HTTP III - PUT method" @@ -8871,8 +8132,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-an-api-response-using-chai-http-iv---put-method", - "blockName": "Quality Assurance and Testing with Chai" + "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-an-api-response-using-chai-http-iv---put-method" }, "id": "587d824f367417b2b2512c5b", "title": "Run Functional Tests on an API Response using Chai-HTTP IV - PUT method" @@ -8883,8 +8143,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-api-endpoints-using-chai-http-ii", - "blockName": "Quality Assurance and Testing with Chai" + "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-api-endpoints-using-chai-http-ii" }, "id": "587d824f367417b2b2512c59", "title": "Run Functional Tests on API Endpoints using Chai-HTTP II" @@ -8895,8 +8154,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-api-endpoints-using-chai-http", - "blockName": "Quality Assurance and Testing with Chai" + "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-api-endpoints-using-chai-http" }, "id": "587d824e367417b2b2512c58", "title": "Run Functional Tests on API Endpoints using Chai-HTTP" @@ -8907,8 +8165,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-using-a-headless-browser-ii", - "blockName": "Quality Assurance and Testing with Chai" + "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-using-a-headless-browser-ii" }, "id": "5f8884f4c46685731aabfc41", "title": "Run Functional Tests Using a Headless Browser II" @@ -8919,8 +8176,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-using-a-headless-browser", - "blockName": "Quality Assurance and Testing with Chai" + "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-using-a-headless-browser" }, "id": "587d8250367417b2b2512c5d", "title": "Run Functional Tests Using a Headless Browser" @@ -8931,8 +8187,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/simulate-actions-using-a-headless-browser", - "blockName": "Quality Assurance and Testing with Chai" + "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/simulate-actions-using-a-headless-browser" }, "id": "587d824f367417b2b2512c5c", "title": "Simulate Actions Using a Headless Browser" @@ -8943,8 +8198,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/test-for-truthiness", - "blockName": "Quality Assurance and Testing with Chai" + "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/test-for-truthiness" }, "id": "587d824b367417b2b2512c49", "title": "Test for Truthiness" @@ -8955,8 +8209,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-string-contains-a-substring", - "blockName": "Quality Assurance and Testing with Chai" + "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-string-contains-a-substring" }, "id": "587d824d367417b2b2512c53", "title": "Test if a String Contains a Substring" @@ -8967,8 +8220,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-falls-within-a-specific-range", - "blockName": "Quality Assurance and Testing with Chai" + "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-falls-within-a-specific-range" }, "id": "587d824c367417b2b2512c4f", "title": "Test if a Value Falls within a Specific Range" @@ -8979,8 +8231,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-a-string", - "blockName": "Quality Assurance and Testing with Chai" + "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-a-string" }, "id": "587d824d367417b2b2512c52", "title": "Test if a Value is a String" @@ -8991,8 +8242,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-an-array", - "blockName": "Quality Assurance and Testing with Chai" + "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-an-array" }, "id": "587d824d367417b2b2512c50", "title": "Test if a Value is an Array" @@ -9003,8 +8253,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-of-a-specific-data-structure-type", - "blockName": "Quality Assurance and Testing with Chai" + "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-of-a-specific-data-structure-type" }, "id": "587d824e367417b2b2512c56", "title": "Test if a Value is of a Specific Data Structure Type" @@ -9015,8 +8264,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-variable-or-function-is-defined", - "blockName": "Quality Assurance and Testing with Chai" + "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-variable-or-function-is-defined" }, "id": "587d824b367417b2b2512c47", "title": "Test if a Variable or Function is Defined" @@ -9027,8 +8275,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-array-contains-an-item", - "blockName": "Quality Assurance and Testing with Chai" + "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-array-contains-an-item" }, "id": "587d824d367417b2b2512c51", "title": "Test if an Array Contains an Item" @@ -9039,8 +8286,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-object-has-a-property", - "blockName": "Quality Assurance and Testing with Chai" + "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-object-has-a-property" }, "id": "587d824e367417b2b2512c55", "title": "Test if an Object has a Property" @@ -9051,8 +8297,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-object-is-an-instance-of-a-constructor", - "blockName": "Quality Assurance and Testing with Chai" + "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-object-is-an-instance-of-a-constructor" }, "id": "587d824e367417b2b2512c57", "title": "Test if an Object is an Instance of a Constructor" @@ -9063,8 +8308,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/test-if-one-value-is-below-or-at-least-as-large-as-another", - "blockName": "Quality Assurance and Testing with Chai" + "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/test-if-one-value-is-below-or-at-least-as-large-as-another" }, "id": "587d824c367417b2b2512c4e", "title": "Test if One Value is Below or At Least as Large as Another" @@ -9075,8 +8319,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/use-assert-isok-and-assert-isnotok", - "blockName": "Quality Assurance and Testing with Chai" + "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/use-assert-isok-and-assert-isnotok" }, "id": "587d824b367417b2b2512c48", "title": "Use Assert.isOK and Assert.isNotOK" @@ -9087,8 +8330,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/use-regular-expressions-to-test-a-string", - "blockName": "Quality Assurance and Testing with Chai" + "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/use-regular-expressions-to-test-a-string" }, "id": "587d824d367417b2b2512c54", "title": "Use Regular Expressions to Test a String" @@ -9099,8 +8341,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/use-the-double-equals-to-assert-equality", - "blockName": "Quality Assurance and Testing with Chai" + "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/use-the-double-equals-to-assert-equality" }, "id": "587d824b367417b2b2512c4a", "title": "Use the Double Equals to Assert Equality" @@ -9111,8 +8352,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/use-the-triple-equals-to-assert-strict-equality", - "blockName": "Quality Assurance and Testing with Chai" + "slug": "/learn/quality-assurance/quality-assurance-and-testing-with-chai/use-the-triple-equals-to-assert-strict-equality" }, "id": "587d824b367417b2b2512c4b", "title": "Use the Triple Equals to Assert Strict Equality" @@ -9123,8 +8363,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-projects/american-british-translator", - "blockName": "Quality Assurance Projects" + "slug": "/learn/quality-assurance/quality-assurance-projects/american-british-translator" }, "id": "5e601c0d5ac9d0ecd8b94afe", "title": "American British Translator" @@ -9135,8 +8374,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-projects/issue-tracker", - "blockName": "Quality Assurance Projects" + "slug": "/learn/quality-assurance/quality-assurance-projects/issue-tracker" }, "id": "587d8249367417b2b2512c42", "title": "Issue Tracker" @@ -9147,8 +8385,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-projects/metric-imperial-converter", - "blockName": "Quality Assurance Projects" + "slug": "/learn/quality-assurance/quality-assurance-projects/metric-imperial-converter" }, "id": "587d8249367417b2b2512c41", "title": "Metric-Imperial Converter" @@ -9159,8 +8396,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-projects/personal-library", - "blockName": "Quality Assurance Projects" + "slug": "/learn/quality-assurance/quality-assurance-projects/personal-library" }, "id": "587d824a367417b2b2512c43", "title": "Personal Library" @@ -9171,8 +8407,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/quality-assurance/quality-assurance-projects/sudoku-solver", - "blockName": "Quality Assurance Projects" + "slug": "/learn/quality-assurance/quality-assurance-projects/sudoku-solver" }, "id": "5e601bf95ac9d0ecd8b94afd", "title": "Sudoku Solver" @@ -9183,8 +8418,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/build-your-own-functions", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/build-your-own-functions" }, "id": "5e7b9f060b6c005b0e76f05b", "title": "Build your own Functions" @@ -9195,8 +8429,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/comparing-and-sorting-tuples", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/comparing-and-sorting-tuples" }, "id": "5e7b9f0b0b6c005b0e76f06d", "title": "Comparing and Sorting Tuples" @@ -9207,8 +8440,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/conditional-execution", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/conditional-execution" }, "id": "5e7b9f050b6c005b0e76f058", "title": "Conditional Execution" @@ -9219,8 +8451,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/data-visualization-mailing-lists", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/data-visualization-mailing-lists" }, "id": "5e7b9f6a0b6c005b0e76f097", "title": "Data Visualization: Mailing Lists" @@ -9231,8 +8462,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/data-visualization-page-rank", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/data-visualization-page-rank" }, "id": "5e7b9f6a0b6c005b0e76f096", "title": "Data Visualization: Page Rank" @@ -9243,8 +8473,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/dictionaries-and-loops", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/dictionaries-and-loops" }, "id": "5e7b9f0a0b6c005b0e76f069", "title": "Dictionaries and Loops" @@ -9255,8 +8484,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/dictionaries-common-applications", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/dictionaries-common-applications" }, "id": "5e7b9f090b6c005b0e76f068", "title": "Dictionaries: Common Applications" @@ -9267,8 +8495,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/files-as-a-sequence", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/files-as-a-sequence" }, "id": "5e7b9f080b6c005b0e76f063", "title": "Files as a Sequence" @@ -9279,8 +8506,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/intermediate-expressions", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/intermediate-expressions" }, "id": "5e7b9f050b6c005b0e76f057", "title": "Intermediate Expressions" @@ -9291,8 +8517,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/intermediate-strings", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/intermediate-strings" }, "id": "5e7b9f070b6c005b0e76f061", "title": "Intermediate Strings" @@ -9303,8 +8528,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/introduction-elements-of-python", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/introduction-elements-of-python" }, "id": "5e6a54c358d3af90110a60a3", "title": "Introduction: Elements of Python" @@ -9315,8 +8539,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/introduction-hardware-architecture", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/introduction-hardware-architecture" }, "id": "5e6a54af58d3af90110a60a1", "title": "Introduction: Hardware Architecture" @@ -9327,8 +8550,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/introduction-python-as-a-language", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/introduction-python-as-a-language" }, "id": "5e6a54ba58d3af90110a60a2", "title": "Introduction: Python as a Language" @@ -9339,8 +8561,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/introduction-why-program", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/introduction-why-program" }, "id": "5e6a54a558d3af90110a60a0", "title": "Introduction: Why Program?" @@ -9351,8 +8572,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/iterations-definite-loops", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/iterations-definite-loops" }, "id": "5e7b9f070b6c005b0e76f05d", "title": "Iterations: Definite Loops" @@ -9363,8 +8583,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/iterations-loop-idioms", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/iterations-loop-idioms" }, "id": "5e7b9f070b6c005b0e76f05e", "title": "Iterations: Loop Idioms" @@ -9375,8 +8594,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/iterations-more-patterns", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/iterations-more-patterns" }, "id": "5e7b9f070b6c005b0e76f05f", "title": "Iterations: More Patterns" @@ -9387,8 +8605,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/loops-and-iterations", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/loops-and-iterations" }, "id": "5e7b9f060b6c005b0e76f05c", "title": "Loops and Iterations" @@ -9399,8 +8616,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/make-a-relational-database", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/make-a-relational-database" }, "id": "5e7b9f170b6c005b0e76f08b", "title": "Make a Relational Database" @@ -9411,8 +8627,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/more-conditional-structures", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/more-conditional-structures" }, "id": "5e7b9f060b6c005b0e76f059", "title": "More Conditional Structures" @@ -9423,8 +8638,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/networking-protocol", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/networking-protocol" }, "id": "5e7b9f0c0b6c005b0e76f072", "title": "Networking Protocol" @@ -9435,8 +8649,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/networking-text-processing", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/networking-text-processing" }, "id": "5e7b9f0c0b6c005b0e76f074", "title": "Networking: Text Processing" @@ -9447,8 +8660,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/networking-using-urllib-in-python", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/networking-using-urllib-in-python" }, "id": "5e7b9f0d0b6c005b0e76f075", "title": "Networking: Using urllib in Python" @@ -9459,8 +8671,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/networking-web-scraping-with-python", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/networking-web-scraping-with-python" }, "id": "5e7b9f0d0b6c005b0e76f076", "title": "Networking: Web Scraping with Python" @@ -9471,8 +8682,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/networking-with-python", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/networking-with-python" }, "id": "5e7b9f0c0b6c005b0e76f071", "title": "Networking with Python" @@ -9483,8 +8693,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/networking-write-a-web-browser", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/networking-write-a-web-browser" }, "id": "5e7b9f0c0b6c005b0e76f073", "title": "Networking: Write a Web Browser" @@ -9495,8 +8704,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/object-lifecycle", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/object-lifecycle" }, "id": "5e7b9f170b6c005b0e76f087", "title": "Object Lifecycle" @@ -9507,8 +8715,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/objects-a-sample-class", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/objects-a-sample-class" }, "id": "5e7b9f160b6c005b0e76f086", "title": "Objects: A Sample Class" @@ -9519,8 +8726,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/objects-inheritance", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/objects-inheritance" }, "id": "5e7b9f170b6c005b0e76f088", "title": "Objects: Inheritance" @@ -9531,8 +8737,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/python-dictionaries", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/python-dictionaries" }, "id": "5e7b9f090b6c005b0e76f067", "title": "Python Dictionaries" @@ -9543,8 +8748,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/python-functions", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/python-functions" }, "id": "5e7b9f060b6c005b0e76f05a", "title": "Python Functions" @@ -9555,8 +8759,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/python-lists", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/python-lists" }, "id": "5e7b9f080b6c005b0e76f064", "title": "Python Lists" @@ -9567,8 +8770,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/python-objects", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/python-objects" }, "id": "5e7b9f160b6c005b0e76f085", "title": "Python Objects" @@ -9579,8 +8781,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/reading-files", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/reading-files" }, "id": "5e7b9f080b6c005b0e76f062", "title": "Reading Files" @@ -9591,8 +8792,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/regular-expressions-matching-and-extracting-data", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/regular-expressions-matching-and-extracting-data" }, "id": "5e7b9f0b0b6c005b0e76f06f", "title": "Regular Expressions: Matching and Extracting Data" @@ -9603,8 +8803,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/regular-expressions-practical-applications", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/regular-expressions-practical-applications" }, "id": "5e7b9f0b0b6c005b0e76f070", "title": "Regular Expressions: Practical Applications" @@ -9615,8 +8814,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/regular-expressions", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/regular-expressions" }, "id": "5e7b9f0b0b6c005b0e76f06e", "title": "Regular Expressions" @@ -9627,8 +8825,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/relational-database-design", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/relational-database-design" }, "id": "5e7b9f180b6c005b0e76f08c", "title": "Relational Database Design" @@ -9639,8 +8836,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/relational-databases-and-sqlite", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/relational-databases-and-sqlite" }, "id": "5e7b9f170b6c005b0e76f08a", "title": "Relational Databases and SQLite" @@ -9651,8 +8847,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/relational-databases-join-operation", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/relational-databases-join-operation" }, "id": "5e7b9f180b6c005b0e76f08f", "title": "Relational Databases: Join Operation" @@ -9663,8 +8858,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/relational-databases-many-to-many-relationships", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/relational-databases-many-to-many-relationships" }, "id": "5e7b9f190b6c005b0e76f090", "title": "Relational Databases: Many-to-many Relationships" @@ -9675,8 +8869,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/relational-databases-relationship-building", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/relational-databases-relationship-building" }, "id": "5e7b9f180b6c005b0e76f08e", "title": "Relational Databases: Relationship Building" @@ -9687,8 +8880,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/representing-relationships-in-a-relational-database", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/representing-relationships-in-a-relational-database" }, "id": "5e7b9f180b6c005b0e76f08d", "title": "Representing Relationships in a Relational Database" @@ -9699,8 +8891,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/strings-and-lists", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/strings-and-lists" }, "id": "5e7b9f090b6c005b0e76f066", "title": "Strings and Lists" @@ -9711,8 +8902,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/strings-in-python", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/strings-in-python" }, "id": "5e7b9f070b6c005b0e76f060", "title": "Strings in Python" @@ -9723,8 +8913,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/the-tuples-collection", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/the-tuples-collection" }, "id": "5e7b9f0a0b6c005b0e76f06c", "title": "The Tuples Collection" @@ -9735,8 +8924,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/using-web-services", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/using-web-services" }, "id": "5e7b9f0e0b6c005b0e76f07a", "title": "Using Web Services" @@ -9747,8 +8935,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/variables-expressions-and-statements", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/variables-expressions-and-statements" }, "id": "5e7b9f050b6c005b0e76f056", "title": "Variables, Expressions, and Statements" @@ -9759,8 +8946,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/visualizing-data-with-python", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/visualizing-data-with-python" }, "id": "5e7b9f690b6c005b0e76f095", "title": "Visualizing Data with Python" @@ -9771,8 +8957,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/web-services-api-rate-limiting-and-security", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/web-services-api-rate-limiting-and-security" }, "id": "5e7b9f150b6c005b0e76f080", "title": "Web Services: API Rate Limiting and Security" @@ -9783,8 +8968,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/web-services-apis", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/web-services-apis" }, "id": "5e7b9f150b6c005b0e76f07f", "title": "Web Services: APIs" @@ -9795,8 +8979,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/web-services-json", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/web-services-json" }, "id": "5e7b9f140b6c005b0e76f07d", "title": "Web Services: JSON" @@ -9807,8 +8990,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/web-services-service-oriented-approach", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/web-services-service-oriented-approach" }, "id": "5e7b9f140b6c005b0e76f07e", "title": "Web Services: Service Oriented Approach" @@ -9819,8 +9001,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/web-services-xml-schema", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/web-services-xml-schema" }, "id": "5e7b9f0e0b6c005b0e76f07c", "title": "Web Services: XML Schema" @@ -9831,8 +9012,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/web-services-xml", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/web-services-xml" }, "id": "5e7b9f0e0b6c005b0e76f07b", "title": "Web Services: XML" @@ -9843,8 +9023,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/python-for-everybody/working-with-lists", - "blockName": "Python for Everybody" + "slug": "/learn/scientific-computing-with-python/python-for-everybody/working-with-lists" }, "id": "5e7b9f090b6c005b0e76f065", "title": "Working with Lists" @@ -9855,8 +9034,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/scientific-computing-with-python-projects/arithmetic-formatter", - "blockName": "Scientific Computing with Python Projects" + "slug": "/learn/scientific-computing-with-python/scientific-computing-with-python-projects/arithmetic-formatter" }, "id": "5e44412c903586ffb414c94c", "title": "Arithmetic Formatter" @@ -9867,8 +9045,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/scientific-computing-with-python-projects/budget-app", - "blockName": "Scientific Computing with Python Projects" + "slug": "/learn/scientific-computing-with-python/scientific-computing-with-python-projects/budget-app" }, "id": "5e44413e903586ffb414c94e", "title": "Budget App" @@ -9879,8 +9056,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/scientific-computing-with-python-projects/polygon-area-calculator", - "blockName": "Scientific Computing with Python Projects" + "slug": "/learn/scientific-computing-with-python/scientific-computing-with-python-projects/polygon-area-calculator" }, "id": "5e444147903586ffb414c94f", "title": "Polygon Area Calculator" @@ -9891,8 +9067,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/scientific-computing-with-python-projects/probability-calculator", - "blockName": "Scientific Computing with Python Projects" + "slug": "/learn/scientific-computing-with-python/scientific-computing-with-python-projects/probability-calculator" }, "id": "5e44414f903586ffb414c950", "title": "Probability Calculator" @@ -9903,8 +9078,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/scientific-computing-with-python/scientific-computing-with-python-projects/time-calculator", - "blockName": "Scientific Computing with Python Projects" + "slug": "/learn/scientific-computing-with-python/scientific-computing-with-python-projects/time-calculator" }, "id": "5e444136903586ffb414c94d", "title": "Time Calculator" @@ -9915,8 +9089,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/data-analysis-example-a", - "blockName": "Data Analysis with Python Course" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/data-analysis-example-a" }, "id": "5e9a093a74c4063ca6f7c14d", "title": "Data Analysis Example A" @@ -9927,8 +9100,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/data-analysis-example-b", - "blockName": "Data Analysis with Python Course" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/data-analysis-example-b" }, "id": "5e9a093a74c4063ca6f7c14e", "title": "Data Analysis Example B" @@ -9939,8 +9111,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/data-cleaning-and-visualizations", - "blockName": "Data Analysis with Python Course" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/data-cleaning-and-visualizations" }, "id": "5e9a093a74c4063ca6f7c160", "title": "Data Cleaning and Visualizations" @@ -9951,8 +9122,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/data-cleaning-duplicates", - "blockName": "Data Analysis with Python Course" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/data-cleaning-duplicates" }, "id": "5e9a093a74c4063ca6f7c15f", "title": "Data Cleaning Duplicates" @@ -9963,8 +9133,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/data-cleaning-introduction", - "blockName": "Data Analysis with Python Course" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/data-cleaning-introduction" }, "id": "5e9a093a74c4063ca6f7c15d", "title": "Data Cleaning Introduction" @@ -9975,8 +9144,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/data-cleaning-with-dataframes", - "blockName": "Data Analysis with Python Course" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/data-cleaning-with-dataframes" }, "id": "5e9a093a74c4063ca6f7c15e", "title": "Data Cleaning with DataFrames" @@ -9987,8 +9155,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/how-to-use-jupyter-notebooks-intro", - "blockName": "Data Analysis with Python Course" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/how-to-use-jupyter-notebooks-intro" }, "id": "5e9a093a74c4063ca6f7c14f", "title": "How to use Jupyter Notebooks Intro" @@ -9999,8 +9166,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/introduction-to-data-analysis", - "blockName": "Data Analysis with Python Course" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/introduction-to-data-analysis" }, "id": "5e9a093a74c4063ca6f7c14c", "title": "Introduction to Data Analysis" @@ -10011,8 +9177,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/jupyter-notebooks-cells", - "blockName": "Data Analysis with Python Course" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/jupyter-notebooks-cells" }, "id": "5e9a093a74c4063ca6f7c150", "title": "Jupyter Notebooks Cells" @@ -10023,8 +9188,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/jupyter-notebooks-importing-and-exporting-data", - "blockName": "Data Analysis with Python Course" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/jupyter-notebooks-importing-and-exporting-data" }, "id": "5e9a093a74c4063ca6f7c151", "title": "Jupyter Notebooks Importing and Exporting Data" @@ -10035,8 +9199,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/numpy-algebra-and-size", - "blockName": "Data Analysis with Python Course" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/numpy-algebra-and-size" }, "id": "5e9a093a74c4063ca6f7c157", "title": "Numpy Algebra and Size" @@ -10047,8 +9210,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/numpy-arrays", - "blockName": "Data Analysis with Python Course" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/numpy-arrays" }, "id": "5e9a093a74c4063ca6f7c154", "title": "Numpy Arrays" @@ -10059,8 +9221,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/numpy-boolean-arrays", - "blockName": "Data Analysis with Python Course" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/numpy-boolean-arrays" }, "id": "5e9a093a74c4063ca6f7c156", "title": "Numpy Boolean Arrays" @@ -10071,8 +9232,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/numpy-introduction-a", - "blockName": "Data Analysis with Python Course" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/numpy-introduction-a" }, "id": "5e9a093a74c4063ca6f7c152", "title": "Numpy Introduction A" @@ -10083,8 +9243,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/numpy-introduction-b", - "blockName": "Data Analysis with Python Course" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/numpy-introduction-b" }, "id": "5e9a093a74c4063ca6f7c153", "title": "Numpy Introduction B" @@ -10095,8 +9254,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/numpy-operations", - "blockName": "Data Analysis with Python Course" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/numpy-operations" }, "id": "5e9a093a74c4063ca6f7c155", "title": "Numpy Operations" @@ -10107,8 +9265,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/pandas-conditional-selection-and-modifying-dataframes", - "blockName": "Data Analysis with Python Course" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/pandas-conditional-selection-and-modifying-dataframes" }, "id": "5e9a093a74c4063ca6f7c15b", "title": "Pandas Conditional Selection and Modifying DataFrames" @@ -10119,8 +9276,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/pandas-creating-columns", - "blockName": "Data Analysis with Python Course" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/pandas-creating-columns" }, "id": "5e9a093a74c4063ca6f7c15c", "title": "Pandas Creating Columns" @@ -10131,8 +9287,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/pandas-dataframes", - "blockName": "Data Analysis with Python Course" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/pandas-dataframes" }, "id": "5e9a093a74c4063ca6f7c15a", "title": "Pandas DataFrames" @@ -10143,8 +9298,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/pandas-indexing-and-conditional-selection", - "blockName": "Data Analysis with Python Course" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/pandas-indexing-and-conditional-selection" }, "id": "5e9a093a74c4063ca6f7c159", "title": "Pandas Indexing and Conditional Selection" @@ -10155,8 +9309,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/pandas-introduction", - "blockName": "Data Analysis with Python Course" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/pandas-introduction" }, "id": "5e9a093a74c4063ca6f7c158", "title": "Pandas Introduction" @@ -10167,8 +9320,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/parsing-html-and-saving-data", - "blockName": "Data Analysis with Python Course" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/parsing-html-and-saving-data" }, "id": "5e9a093a74c4063ca6f7c164", "title": "Parsing HTML and Saving Data" @@ -10179,8 +9331,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/python-functions-and-collections", - "blockName": "Data Analysis with Python Course" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/python-functions-and-collections" }, "id": "5e9a093a74c4063ca6f7c166", "title": "Python Functions and Collections" @@ -10191,8 +9342,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/python-introduction", - "blockName": "Data Analysis with Python Course" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/python-introduction" }, "id": "5e9a093a74c4063ca6f7c165", "title": "Python Introduction" @@ -10203,8 +9353,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/python-iteration-and-modules", - "blockName": "Data Analysis with Python Course" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/python-iteration-and-modules" }, "id": "5e9a093a74c4063ca6f7c167", "title": "Python Iteration and Modules" @@ -10215,8 +9364,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/reading-data-csv-and-txt", - "blockName": "Data Analysis with Python Course" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/reading-data-csv-and-txt" }, "id": "5e9a093a74c4063ca6f7c162", "title": "Reading Data CSV and TXT" @@ -10227,8 +9375,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/reading-data-from-databases", - "blockName": "Data Analysis with Python Course" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/reading-data-from-databases" }, "id": "5e9a093a74c4063ca6f7c163", "title": "Reading Data from Databases" @@ -10239,8 +9386,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/reading-data-introduction", - "blockName": "Data Analysis with Python Course" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-course/reading-data-introduction" }, "id": "5e9a093a74c4063ca6f7c161", "title": "Reading Data Introduction" @@ -10251,8 +9397,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-projects/demographic-data-analyzer", - "blockName": "Data Analysis with Python Projects" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-projects/demographic-data-analyzer" }, "id": "5e46f7e5ac417301a38fb929", "title": "Demographic Data Analyzer" @@ -10263,8 +9408,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-projects/mean-variance-standard-deviation-calculator", - "blockName": "Data Analysis with Python Projects" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-projects/mean-variance-standard-deviation-calculator" }, "id": "5e46f7e5ac417301a38fb928", "title": "Mean-Variance-Standard Deviation Calculator" @@ -10275,8 +9419,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-projects/medical-data-visualizer", - "blockName": "Data Analysis with Python Projects" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-projects/medical-data-visualizer" }, "id": "5e46f7f8ac417301a38fb92a", "title": "Medical Data Visualizer" @@ -10287,8 +9430,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-projects/page-view-time-series-visualizer", - "blockName": "Data Analysis with Python Projects" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-projects/page-view-time-series-visualizer" }, "id": "5e46f802ac417301a38fb92b", "title": "Page View Time Series Visualizer" @@ -10299,8 +9441,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/data-analysis-with-python-projects/sea-level-predictor", - "blockName": "Data Analysis with Python Projects" + "slug": "/learn/data-analysis-with-python/data-analysis-with-python-projects/sea-level-predictor" }, "id": "5e4f5c4b570f7e3a4949899f", "title": "Sea Level Predictor" @@ -10311,8 +9452,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/numpy/accessing-and-changing-elements-rows-columns", - "blockName": "Numpy" + "slug": "/learn/data-analysis-with-python/numpy/accessing-and-changing-elements-rows-columns" }, "id": "5e9a0a8e09c5df3cc3600ed4", "title": "Accessing and Changing Elements, Rows, Columns" @@ -10323,8 +9463,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/numpy/basics-of-numpy", - "blockName": "Numpy" + "slug": "/learn/data-analysis-with-python/numpy/basics-of-numpy" }, "id": "5e9a0a8e09c5df3cc3600ed3", "title": "Basics of Numpy" @@ -10335,8 +9474,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/numpy/copying-arrays-warning", - "blockName": "Numpy" + "slug": "/learn/data-analysis-with-python/numpy/copying-arrays-warning" }, "id": "5e9a0a8e09c5df3cc3600ed7", "title": "Copying Arrays Warning" @@ -10347,8 +9485,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/numpy/initialize-array-problem", - "blockName": "Numpy" + "slug": "/learn/data-analysis-with-python/numpy/initialize-array-problem" }, "id": "5e9a0a8e09c5df3cc3600ed6", "title": "Initialize Array Problem" @@ -10359,8 +9496,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/numpy/initializing-different-arrays", - "blockName": "Numpy" + "slug": "/learn/data-analysis-with-python/numpy/initializing-different-arrays" }, "id": "5e9a0a8e09c5df3cc3600ed5", "title": "Initializing Different Arrays" @@ -10371,8 +9507,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/numpy/loading-data-and-advanced-indexing", - "blockName": "Numpy" + "slug": "/learn/data-analysis-with-python/numpy/loading-data-and-advanced-indexing" }, "id": "5e9a0a8e09c5df3cc3600eda", "title": "Loading Data and Advanced Indexing" @@ -10383,8 +9518,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/numpy/mathematics", - "blockName": "Numpy" + "slug": "/learn/data-analysis-with-python/numpy/mathematics" }, "id": "5e9a0a8e09c5df3cc3600ed8", "title": "Mathematics" @@ -10395,8 +9529,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/numpy/reorganizing-arrays", - "blockName": "Numpy" + "slug": "/learn/data-analysis-with-python/numpy/reorganizing-arrays" }, "id": "5e9a0a8e09c5df3cc3600ed9", "title": "Reorganizing Arrays" @@ -10407,8 +9540,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/data-analysis-with-python/numpy/what-is-numpy", - "blockName": "Numpy" + "slug": "/learn/data-analysis-with-python/numpy/what-is-numpy" }, "id": "5e9a0a8e09c5df3cc3600ed2", "title": "What is NumPy" @@ -10419,8 +9551,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/information-security/information-security-projects/anonymous-message-board", - "blockName": "Information Security Projects" + "slug": "/learn/information-security/information-security-projects/anonymous-message-board" }, "id": "587d824a367417b2b2512c45", "title": "Anonymous Message Board" @@ -10431,8 +9562,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/information-security/information-security-projects/port-scanner", - "blockName": "Information Security Projects" + "slug": "/learn/information-security/information-security-projects/port-scanner" }, "id": "5e46f979ac417301a38fb932", "title": "Port Scanner" @@ -10443,8 +9573,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/information-security/information-security-projects/secure-real-time-multiplayer-game", - "blockName": "Information Security Projects" + "slug": "/learn/information-security/information-security-projects/secure-real-time-multiplayer-game" }, "id": "5e601c775ac9d0ecd8b94aff", "title": "Secure Real Time Multiplayer Game" @@ -10455,8 +9584,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/information-security/information-security-projects/sha-1-password-cracker", - "blockName": "Information Security Projects" + "slug": "/learn/information-security/information-security-projects/sha-1-password-cracker" }, "id": "5e46f983ac417301a38fb933", "title": "SHA-1 Password Cracker" @@ -10467,8 +9595,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/information-security/information-security-projects/stock-price-checker", - "blockName": "Information Security Projects" + "slug": "/learn/information-security/information-security-projects/stock-price-checker" }, "id": "587d824a367417b2b2512c44", "title": "Stock Price Checker" @@ -10479,8 +9606,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/information-security/information-security-with-helmetjs/ask-browsers-to-access-your-site-via-https-only-with-helmet-hsts", - "blockName": "Information Security with HelmetJS" + "slug": "/learn/information-security/information-security-with-helmetjs/ask-browsers-to-access-your-site-via-https-only-with-helmet-hsts" }, "id": "587d8248367417b2b2512c3c", "title": "Ask Browsers to Access Your Site via HTTPS Only with helmet.hsts()" @@ -10491,8 +9617,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/information-security/information-security-with-helmetjs/avoid-inferring-the-response-mime-type-with-helmet-nosniff", - "blockName": "Information Security with HelmetJS" + "slug": "/learn/information-security/information-security-with-helmetjs/avoid-inferring-the-response-mime-type-with-helmet-nosniff" }, "id": "587d8248367417b2b2512c3a", "title": "Avoid Inferring the Response MIME Type with helmet.noSniff()" @@ -10503,8 +9628,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/information-security/information-security-with-helmetjs/configure-helmet-using-the-parent-helmet-middleware", - "blockName": "Information Security with HelmetJS" + "slug": "/learn/information-security/information-security-with-helmetjs/configure-helmet-using-the-parent-helmet-middleware" }, "id": "587d8249367417b2b2512c40", "title": "Configure Helmet Using the ‘parent’ helmet() Middleware" @@ -10515,8 +9639,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/information-security/information-security-with-helmetjs/disable-client-side-caching-with-helmet-nocache", - "blockName": "Information Security with HelmetJS" + "slug": "/learn/information-security/information-security-with-helmetjs/disable-client-side-caching-with-helmet-nocache" }, "id": "587d8249367417b2b2512c3e", "title": "Disable Client-Side Caching with helmet.noCache()" @@ -10527,8 +9650,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/information-security/information-security-with-helmetjs/disable-dns-prefetching-with-helmet-dnsprefetchcontrol", - "blockName": "Information Security with HelmetJS" + "slug": "/learn/information-security/information-security-with-helmetjs/disable-dns-prefetching-with-helmet-dnsprefetchcontrol" }, "id": "587d8248367417b2b2512c3d", "title": "Disable DNS Prefetching with helmet.dnsPrefetchControl()" @@ -10539,8 +9661,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/information-security/information-security-with-helmetjs/hash-and-compare-passwords-asynchronously", - "blockName": "Information Security with HelmetJS" + "slug": "/learn/information-security/information-security-with-helmetjs/hash-and-compare-passwords-asynchronously" }, "id": "58a25bcff9fc0f352b528e7d", "title": "Hash and Compare Passwords Asynchronously" @@ -10551,8 +9672,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/information-security/information-security-with-helmetjs/hash-and-compare-passwords-synchronously", - "blockName": "Information Security with HelmetJS" + "slug": "/learn/information-security/information-security-with-helmetjs/hash-and-compare-passwords-synchronously" }, "id": "58a25bcff9fc0f352b528e7e", "title": "Hash and Compare Passwords Synchronously" @@ -10563,8 +9683,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/information-security/information-security-with-helmetjs/hide-potentially-dangerous-information-using-helmet-hidepoweredby", - "blockName": "Information Security with HelmetJS" + "slug": "/learn/information-security/information-security-with-helmetjs/hide-potentially-dangerous-information-using-helmet-hidepoweredby" }, "id": "587d8247367417b2b2512c37", "title": "Hide Potentially Dangerous Information Using helmet.hidePoweredBy()" @@ -10575,8 +9694,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/information-security/information-security-with-helmetjs/install-and-require-helmet", - "blockName": "Information Security with HelmetJS" + "slug": "/learn/information-security/information-security-with-helmetjs/install-and-require-helmet" }, "id": "587d8247367417b2b2512c36", "title": "Install and Require Helmet" @@ -10587,8 +9705,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/information-security/information-security-with-helmetjs/mitigate-the-risk-of-clickjacking-with-helmet-frameguard", - "blockName": "Information Security with HelmetJS" + "slug": "/learn/information-security/information-security-with-helmetjs/mitigate-the-risk-of-clickjacking-with-helmet-frameguard" }, "id": "587d8247367417b2b2512c38", "title": "Mitigate the Risk of Clickjacking with helmet.frameguard()" @@ -10599,8 +9716,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/information-security/information-security-with-helmetjs/mitigate-the-risk-of-cross-site-scripting-xss-attacks-with-helmet-xssfilter", - "blockName": "Information Security with HelmetJS" + "slug": "/learn/information-security/information-security-with-helmetjs/mitigate-the-risk-of-cross-site-scripting-xss-attacks-with-helmet-xssfilter" }, "id": "587d8247367417b2b2512c39", "title": "Mitigate the Risk of Cross Site Scripting (XSS) Attacks with helmet.xssFilter()" @@ -10611,8 +9727,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/information-security/information-security-with-helmetjs/prevent-ie-from-opening-untrusted-html-with-helmet-ienoopen", - "blockName": "Information Security with HelmetJS" + "slug": "/learn/information-security/information-security-with-helmetjs/prevent-ie-from-opening-untrusted-html-with-helmet-ienoopen" }, "id": "587d8248367417b2b2512c3b", "title": "Prevent IE from Opening Untrusted HTML with helmet.ieNoOpen()" @@ -10623,8 +9738,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/information-security/information-security-with-helmetjs/set-a-content-security-policy-with-helmet-contentsecuritypolicy", - "blockName": "Information Security with HelmetJS" + "slug": "/learn/information-security/information-security-with-helmetjs/set-a-content-security-policy-with-helmet-contentsecuritypolicy" }, "id": "587d8249367417b2b2512c3f", "title": "Set a Content Security Policy with helmet.contentSecurityPolicy()" @@ -10635,8 +9749,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/information-security/information-security-with-helmetjs/understand-bcrypt-hashes", - "blockName": "Information Security with HelmetJS" + "slug": "/learn/information-security/information-security-with-helmetjs/understand-bcrypt-hashes" }, "id": "58a25bcef9fc0f352b528e7c", "title": "Understand BCrypt Hashes" @@ -10647,8 +9760,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/information-security/python-for-penetration-testing/creating-a-tcp-client", - "blockName": "Python for Penetration Testing" + "slug": "/learn/information-security/python-for-penetration-testing/creating-a-tcp-client" }, "id": "5ea9997bbec2e9bc47e94db0", "title": "Creating a TCP Client" @@ -10659,8 +9771,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/information-security/python-for-penetration-testing/developing-a-banner-grabber", - "blockName": "Python for Penetration Testing" + "slug": "/learn/information-security/python-for-penetration-testing/developing-a-banner-grabber" }, "id": "5ea9997bbec2e9bc47e94db3", "title": "Developing a Banner Grabber" @@ -10671,8 +9782,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/information-security/python-for-penetration-testing/developing-a-port-scanner", - "blockName": "Python for Penetration Testing" + "slug": "/learn/information-security/python-for-penetration-testing/developing-a-port-scanner" }, "id": "5ea9997bbec2e9bc47e94db4", "title": "Developing a Port Scanner" @@ -10683,8 +9793,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/information-security/python-for-penetration-testing/developing-an-nmap-scanner-part-1", - "blockName": "Python for Penetration Testing" + "slug": "/learn/information-security/python-for-penetration-testing/developing-an-nmap-scanner-part-1" }, "id": "5ea9997bbec2e9bc47e94db1", "title": "Developing an Nmap Scanner part 1" @@ -10695,8 +9804,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/information-security/python-for-penetration-testing/developing-an-nmap-scanner-part-2", - "blockName": "Python for Penetration Testing" + "slug": "/learn/information-security/python-for-penetration-testing/developing-an-nmap-scanner-part-2" }, "id": "5ea9997bbec2e9bc47e94db2", "title": "Developing an Nmap Scanner part 2" @@ -10707,8 +9815,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/information-security/python-for-penetration-testing/introduction-and-setup", - "blockName": "Python for Penetration Testing" + "slug": "/learn/information-security/python-for-penetration-testing/introduction-and-setup" }, "id": "5ea9997bbec2e9bc47e94dae", "title": "Introduction and Setup" @@ -10719,8 +9826,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/information-security/python-for-penetration-testing/understanding-sockets-and-creating-a-tcp-server", - "blockName": "Python for Penetration Testing" + "slug": "/learn/information-security/python-for-penetration-testing/understanding-sockets-and-creating-a-tcp-server" }, "id": "5ea9997bbec2e9bc47e94daf", "title": "Understanding Sockets and Creating a TCP Server" @@ -10731,8 +9837,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/algorithms/find-the-symmetric-difference", - "blockName": "Algorithms" + "slug": "/learn/coding-interview-prep/algorithms/find-the-symmetric-difference" }, "id": "a3f503de51cf954ede28891d", "title": "Find the Symmetric Difference" @@ -10743,8 +9848,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/algorithms/implement-binary-search", - "blockName": "Algorithms" + "slug": "/learn/coding-interview-prep/algorithms/implement-binary-search" }, "id": "61abc7ebf3029b56226de5b6", "title": "Implement Binary Search" @@ -10755,8 +9859,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/algorithms/implement-bubble-sort", - "blockName": "Algorithms" + "slug": "/learn/coding-interview-prep/algorithms/implement-bubble-sort" }, "id": "8d5123c8c441eddfaeb5bdef", "title": "Implement Bubble Sort" @@ -10767,8 +9870,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/algorithms/implement-insertion-sort", - "blockName": "Algorithms" + "slug": "/learn/coding-interview-prep/algorithms/implement-insertion-sort" }, "id": "587d8259367417b2b2512c86", "title": "Implement Insertion Sort" @@ -10779,8 +9881,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/algorithms/implement-merge-sort", - "blockName": "Algorithms" + "slug": "/learn/coding-interview-prep/algorithms/implement-merge-sort" }, "id": "587d825c367417b2b2512c8f", "title": "Implement Merge Sort" @@ -10791,8 +9892,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/algorithms/implement-quick-sort", - "blockName": "Algorithms" + "slug": "/learn/coding-interview-prep/algorithms/implement-quick-sort" }, "id": "587d825a367417b2b2512c89", "title": "Implement Quick Sort" @@ -10803,8 +9903,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/algorithms/implement-selection-sort", - "blockName": "Algorithms" + "slug": "/learn/coding-interview-prep/algorithms/implement-selection-sort" }, "id": "587d8259367417b2b2512c85", "title": "Implement Selection Sort" @@ -10815,8 +9914,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/algorithms/inventory-update", - "blockName": "Algorithms" + "slug": "/learn/coding-interview-prep/algorithms/inventory-update" }, "id": "a56138aff60341a09ed6c480", "title": "Inventory Update" @@ -10827,8 +9925,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/algorithms/no-repeats-please", - "blockName": "Algorithms" + "slug": "/learn/coding-interview-prep/algorithms/no-repeats-please" }, "id": "a7bf700cd123b9a54eef01d5", "title": "No Repeats Please" @@ -10839,8 +9936,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/algorithms/pairwise", - "blockName": "Algorithms" + "slug": "/learn/coding-interview-prep/algorithms/pairwise" }, "id": "a3f503de51cfab748ff001aa", "title": "Pairwise" @@ -10851,8 +9947,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/add-a-new-element-to-a-binary-search-tree", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/add-a-new-element-to-a-binary-search-tree" }, "id": "587d8257367417b2b2512c7b", "title": "Add a New Element to a Binary Search Tree" @@ -10863,8 +9958,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/add-elements-at-a-specific-index-in-a-linked-list", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/add-elements-at-a-specific-index-in-a-linked-list" }, "id": "587d8252367417b2b2512c67", "title": "Add Elements at a Specific Index in a Linked List" @@ -10875,8 +9969,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/adjacency-list", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/adjacency-list" }, "id": "587d8256367417b2b2512c77", "title": "Adjacency List" @@ -10887,8 +9980,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/adjacency-matrix", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/adjacency-matrix" }, "id": "587d8256367417b2b2512c78", "title": "Adjacency Matrix" @@ -10899,8 +9991,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/breadth-first-search", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/breadth-first-search" }, "id": "587d825c367417b2b2512c90", "title": "Breadth-First Search" @@ -10911,8 +10002,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/check-if-an-element-is-present-in-a-binary-search-tree", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/check-if-an-element-is-present-in-a-binary-search-tree" }, "id": "587d8257367417b2b2512c7c", "title": "Check if an Element is Present in a Binary Search Tree" @@ -10923,8 +10013,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/check-if-tree-is-binary-search-tree", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/check-if-tree-is-binary-search-tree" }, "id": "5cc0c1b32479e176caf3b422", "title": "Check if Tree is Binary Search Tree" @@ -10935,8 +10024,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/create-a-circular-queue", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/create-a-circular-queue" }, "id": "587d8255367417b2b2512c75", "title": "Create a Circular Queue" @@ -10947,8 +10035,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/create-a-doubly-linked-list", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/create-a-doubly-linked-list" }, "id": "587d825a367417b2b2512c87", "title": "Create a Doubly Linked List" @@ -10959,8 +10046,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/create-a-hash-table", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/create-a-hash-table" }, "id": "587d825b367417b2b2512c8e", "title": "Create a Hash Table" @@ -10971,8 +10057,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/create-a-linked-list-class", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/create-a-linked-list-class" }, "id": "587d8251367417b2b2512c62", "title": "Create a Linked List Class" @@ -10983,8 +10068,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/create-a-map-data-structure", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/create-a-map-data-structure" }, "id": "8d5823c8c441eddfaeb5bdef", "title": "Create a Map Data Structure" @@ -10995,8 +10079,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/create-a-priority-queue-class", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/create-a-priority-queue-class" }, "id": "587d8255367417b2b2512c74", "title": "Create a Priority Queue Class" @@ -11007,8 +10090,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/create-a-queue-class", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/create-a-queue-class" }, "id": "587d8250367417b2b2512c60", "title": "Create a Queue Class" @@ -11019,8 +10101,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/create-a-set-class", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/create-a-set-class" }, "id": "8d1323c8c441eddfaeb5bdef", "title": "Create a Set Class" @@ -11031,8 +10112,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/create-a-stack-class", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/create-a-stack-class" }, "id": "587d8250367417b2b2512c5f", "title": "Create a Stack Class" @@ -11043,8 +10123,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/create-a-trie-search-tree", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/create-a-trie-search-tree" }, "id": "587d8259367417b2b2512c84", "title": "Create a Trie Search Tree" @@ -11055,8 +10134,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/create-an-es6-javascript-map", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/create-an-es6-javascript-map" }, "id": "587d825b367417b2b2512c8d", "title": "Create an ES6 JavaScript Map" @@ -11067,8 +10145,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/create-and-add-to-sets-in-es6", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/create-and-add-to-sets-in-es6" }, "id": "587d8254367417b2b2512c70", "title": "Create and Add to Sets in ES6" @@ -11079,8 +10156,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/delete-a-leaf-node-in-a-binary-search-tree", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/delete-a-leaf-node-in-a-binary-search-tree" }, "id": "587d8258367417b2b2512c80", "title": "Delete a Leaf Node in a Binary Search Tree" @@ -11091,8 +10167,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/delete-a-node-with-one-child-in-a-binary-search-tree", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/delete-a-node-with-one-child-in-a-binary-search-tree" }, "id": "587d8258367417b2b2512c81", "title": "Delete a Node with One Child in a Binary Search Tree" @@ -11103,8 +10178,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/delete-a-node-with-two-children-in-a-binary-search-tree", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/delete-a-node-with-two-children-in-a-binary-search-tree" }, "id": "587d8258367417b2b2512c82", "title": "Delete a Node with Two Children in a Binary Search Tree" @@ -11115,8 +10189,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/depth-first-search", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/depth-first-search" }, "id": "587d825d367417b2b2512c96", "title": "Depth-First Search" @@ -11127,8 +10200,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/find-the-minimum-and-maximum-height-of-a-binary-search-tree", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/find-the-minimum-and-maximum-height-of-a-binary-search-tree" }, "id": "587d8257367417b2b2512c7d", "title": "Find the Minimum and Maximum Height of a Binary Search Tree" @@ -11139,8 +10211,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/find-the-minimum-and-maximum-value-in-a-binary-search-tree", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/find-the-minimum-and-maximum-value-in-a-binary-search-tree" }, "id": "587d8256367417b2b2512c7a", "title": "Find the Minimum and Maximum Value in a Binary Search Tree" @@ -11151,8 +10222,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/implement-heap-sort-with-a-min-heap", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/implement-heap-sort-with-a-min-heap" }, "id": "587d825b367417b2b2512c8c", "title": "Implement Heap Sort with a Min Heap" @@ -11163,8 +10233,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/incidence-matrix", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/incidence-matrix" }, "id": "587d8256367417b2b2512c79", "title": "Incidence Matrix" @@ -11175,8 +10244,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/insert-an-element-into-a-max-heap", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/insert-an-element-into-a-max-heap" }, "id": "587d825a367417b2b2512c8a", "title": "Insert an Element into a Max Heap" @@ -11187,8 +10255,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/invert-a-binary-tree", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/invert-a-binary-tree" }, "id": "587d8259367417b2b2512c83", "title": "Invert a Binary Tree" @@ -11199,8 +10266,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/learn-how-a-stack-works", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/learn-how-a-stack-works" }, "id": "587d8250367417b2b2512c5e", "title": "Learn how a Stack Works" @@ -11211,8 +10277,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/perform-a-difference-on-two-sets-of-data", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/perform-a-difference-on-two-sets-of-data" }, "id": "587d8254367417b2b2512c6e", "title": "Perform a Difference on Two Sets of Data" @@ -11223,8 +10288,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/perform-a-subset-check-on-two-sets-of-data", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/perform-a-subset-check-on-two-sets-of-data" }, "id": "587d8254367417b2b2512c6f", "title": "Perform a Subset Check on Two Sets of Data" @@ -11235,8 +10299,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/perform-a-union-on-two-sets", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/perform-a-union-on-two-sets" }, "id": "587d8253367417b2b2512c6c", "title": "Perform a Union on Two Sets" @@ -11247,8 +10310,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/perform-an-intersection-on-two-sets-of-data", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/perform-an-intersection-on-two-sets-of-data" }, "id": "587d8253367417b2b2512c6d", "title": "Perform an Intersection on Two Sets of Data" @@ -11259,8 +10321,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/remove-an-element-from-a-max-heap", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/remove-an-element-from-a-max-heap" }, "id": "587d825b367417b2b2512c8b", "title": "Remove an Element from a Max Heap" @@ -11271,8 +10332,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/remove-elements-from-a-linked-list-by-index", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/remove-elements-from-a-linked-list-by-index" }, "id": "587d8251367417b2b2512c65", "title": "Remove Elements from a Linked List by Index" @@ -11283,8 +10343,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/remove-elements-from-a-linked-list", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/remove-elements-from-a-linked-list" }, "id": "587d8251367417b2b2512c63", "title": "Remove Elements from a Linked List" @@ -11295,8 +10354,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/remove-items-from-a-set-in-es6", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/remove-items-from-a-set-in-es6" }, "id": "587d8254367417b2b2512c71", "title": "Remove items from a set in ES6" @@ -11307,8 +10365,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/reverse-a-doubly-linked-list", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/reverse-a-doubly-linked-list" }, "id": "587d825a367417b2b2512c88", "title": "Reverse a Doubly Linked List" @@ -11319,8 +10376,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/search-within-a-linked-list", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/search-within-a-linked-list" }, "id": "587d8251367417b2b2512c64", "title": "Search within a Linked List" @@ -11331,8 +10387,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/typed-arrays", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/typed-arrays" }, "id": "587d8253367417b2b2512c6a", "title": "Typed Arrays" @@ -11343,8 +10398,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/use--has-and--size-on-an-es6-set", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/use--has-and--size-on-an-es6-set" }, "id": "587d8255367417b2b2512c72", "title": "Use .has and .size on an ES6 Set" @@ -11355,8 +10409,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/use-breadth-first-search-in-a-binary-search-tree", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/use-breadth-first-search-in-a-binary-search-tree" }, "id": "587d8258367417b2b2512c7f", "title": "Use Breadth First Search in a Binary Search Tree" @@ -11367,8 +10420,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/use-depth-first-search-in-a-binary-search-tree", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/use-depth-first-search-in-a-binary-search-tree" }, "id": "587d8257367417b2b2512c7e", "title": "Use Depth First Search in a Binary Search Tree" @@ -11379,8 +10431,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/use-spread-and-notes-for-es5-set-integration", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/use-spread-and-notes-for-es5-set-integration" }, "id": "587d8255367417b2b2512c73", "title": "Use Spread and Notes for ES5 Set() Integration" @@ -11391,8 +10442,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/data-structures/work-with-nodes-in-a-linked-list", - "blockName": "Data Structures" + "slug": "/learn/coding-interview-prep/data-structures/work-with-nodes-in-a-linked-list" }, "id": "587d8251367417b2b2512c61", "title": "Work with Nodes in a Linked List" @@ -11403,8 +10453,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-1-multiples-of-3-and-5", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-1-multiples-of-3-and-5" }, "id": "5900f36e1000cf542c50fe80", "title": "Problem 1: Multiples of 3 and 5" @@ -11415,8 +10464,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-10-summation-of-primes", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-10-summation-of-primes" }, "id": "5900f3761000cf542c50fe89", "title": "Problem 10: Summation of primes" @@ -11427,8 +10475,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-100-arranged-probability", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-100-arranged-probability" }, "id": "5900f3d01000cf542c50fee3", "title": "Problem 100: Arranged probability" @@ -11439,8 +10486,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-101-optimum-polynomial", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-101-optimum-polynomial" }, "id": "5900f3d21000cf542c50fee4", "title": "Problem 101: Optimum polynomial" @@ -11451,8 +10497,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-102-triangle-containment", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-102-triangle-containment" }, "id": "5900f3d21000cf542c50fee5", "title": "Problem 102: Triangle containment" @@ -11463,8 +10508,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-103-special-subset-sums-optimum", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-103-special-subset-sums-optimum" }, "id": "5900f3d61000cf542c50fee7", "title": "Problem 103: Special subset sums: optimum" @@ -11475,8 +10519,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-104-pandigital-fibonacci-ends", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-104-pandigital-fibonacci-ends" }, "id": "5900f3d51000cf542c50fee6", "title": "Problem 104: Pandigital Fibonacci ends" @@ -11487,8 +10530,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-105-special-subset-sums-testing", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-105-special-subset-sums-testing" }, "id": "5900f3d61000cf542c50fee8", "title": "Problem 105: Special subset sums: testing" @@ -11499,8 +10541,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-106-special-subset-sums-meta-testing", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-106-special-subset-sums-meta-testing" }, "id": "5900f3d71000cf542c50fee9", "title": "Problem 106: Special subset sums: meta-testing" @@ -11511,8 +10552,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-107-minimal-network", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-107-minimal-network" }, "id": "5900f3d91000cf542c50feea", "title": "Problem 107: Minimal network" @@ -11523,8 +10563,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-108-diophantine-reciprocals-i", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-108-diophantine-reciprocals-i" }, "id": "5900f3d91000cf542c50feeb", "title": "Problem 108: Diophantine Reciprocals I" @@ -11535,8 +10574,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-109-darts", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-109-darts" }, "id": "5900f3db1000cf542c50feec", "title": "Problem 109: Darts" @@ -11547,8 +10585,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-11-largest-product-in-a-grid", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-11-largest-product-in-a-grid" }, "id": "5900f3781000cf542c50fe8a", "title": "Problem 11: Largest product in a grid" @@ -11559,8 +10596,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-110-diophantine-reciprocals-ii", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-110-diophantine-reciprocals-ii" }, "id": "5900f3db1000cf542c50feed", "title": "Problem 110: Diophantine Reciprocals II" @@ -11571,8 +10607,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-111-primes-with-runs", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-111-primes-with-runs" }, "id": "5900f3db1000cf542c50feee", "title": "Problem 111: Primes with runs" @@ -11583,8 +10618,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-112-bouncy-numbers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-112-bouncy-numbers" }, "id": "5900f3dd1000cf542c50feef", "title": "Problem 112: Bouncy numbers" @@ -11595,8 +10629,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-113-non-bouncy-numbers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-113-non-bouncy-numbers" }, "id": "5900f3dd1000cf542c50fef0", "title": "Problem 113: Non-bouncy numbers" @@ -11607,8 +10640,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-114-counting-block-combinations-i", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-114-counting-block-combinations-i" }, "id": "5900f3e01000cf542c50fef2", "title": "Problem 114: Counting block combinations I" @@ -11619,8 +10651,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-115-counting-block-combinations-ii", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-115-counting-block-combinations-ii" }, "id": "5900f3df1000cf542c50fef1", "title": "Problem 115: Counting block combinations II" @@ -11631,8 +10662,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-116-red-green-or-blue-tiles", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-116-red-green-or-blue-tiles" }, "id": "5900f3e01000cf542c50fef3", "title": "Problem 116: Red, green or blue tiles" @@ -11643,8 +10673,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-117-red-green-and-blue-tiles", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-117-red-green-and-blue-tiles" }, "id": "5900f3e21000cf542c50fef4", "title": "Problem 117: Red, green, and blue tiles" @@ -11655,8 +10684,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-118-pandigital-prime-sets", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-118-pandigital-prime-sets" }, "id": "5900f3e21000cf542c50fef5", "title": "Problem 118: Pandigital prime sets" @@ -11667,8 +10695,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-119-digit-power-sum", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-119-digit-power-sum" }, "id": "5900f3e41000cf542c50fef6", "title": "Problem 119: Digit power sum" @@ -11679,8 +10706,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-12-highly-divisible-triangular-number", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-12-highly-divisible-triangular-number" }, "id": "5900f3781000cf542c50fe8b", "title": "Problem 12: Highly divisible triangular number" @@ -11691,8 +10717,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-120-square-remainders", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-120-square-remainders" }, "id": "5900f3e41000cf542c50fef7", "title": "Problem 120: Square remainders" @@ -11703,8 +10728,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-121-disc-game-prize-fund", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-121-disc-game-prize-fund" }, "id": "5900f3e51000cf542c50fef8", "title": "Problem 121: Disc game prize fund" @@ -11715,8 +10739,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-122-efficient-exponentiation", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-122-efficient-exponentiation" }, "id": "5900f3e61000cf542c50fef9", "title": "Problem 122: Efficient exponentiation" @@ -11727,8 +10750,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-123-prime-square-remainders", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-123-prime-square-remainders" }, "id": "5900f3e71000cf542c50fefa", "title": "Problem 123: Prime square remainders" @@ -11739,8 +10761,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-124-ordered-radicals", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-124-ordered-radicals" }, "id": "5900f3e81000cf542c50fefb", "title": "Problem 124: Ordered radicals" @@ -11751,8 +10772,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-125-palindromic-sums", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-125-palindromic-sums" }, "id": "5900f3e91000cf542c50fefc", "title": "Problem 125: Palindromic sums" @@ -11763,8 +10783,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-126-cuboid-layers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-126-cuboid-layers" }, "id": "5900f3ea1000cf542c50fefd", "title": "Problem 126: Cuboid layers" @@ -11775,8 +10794,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-127-abc-hits", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-127-abc-hits" }, "id": "5900f3ec1000cf542c50fefe", "title": "Problem 127: abc-hits" @@ -11787,8 +10805,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-128-hexagonal-tile-differences", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-128-hexagonal-tile-differences" }, "id": "5900f3ec1000cf542c50feff", "title": "Problem 128: Hexagonal tile differences" @@ -11799,8 +10816,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-129-repunit-divisibility", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-129-repunit-divisibility" }, "id": "5900f3ef1000cf542c50ff01", "title": "Problem 129: Repunit divisibility" @@ -11811,8 +10827,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-13-large-sum", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-13-large-sum" }, "id": "5900f37a1000cf542c50fe8c", "title": "Problem 13: Large sum" @@ -11823,8 +10838,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-130-composites-with-prime-repunit-property", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-130-composites-with-prime-repunit-property" }, "id": "5900f3ee1000cf542c50ff00", "title": "Problem 130: Composites with prime repunit property" @@ -11835,8 +10849,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-131-prime-cube-partnership", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-131-prime-cube-partnership" }, "id": "5900f3ef1000cf542c50ff02", "title": "Problem 131: Prime cube partnership" @@ -11847,8 +10860,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-132-large-repunit-factors", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-132-large-repunit-factors" }, "id": "5900f3f11000cf542c50ff03", "title": "Problem 132: Large repunit factors" @@ -11859,8 +10871,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-133-repunit-nonfactors", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-133-repunit-nonfactors" }, "id": "5900f3f21000cf542c50ff04", "title": "Problem 133: Repunit nonfactors" @@ -11871,8 +10882,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-134-prime-pair-connection", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-134-prime-pair-connection" }, "id": "5900f3f21000cf542c50ff05", "title": "Problem 134: Prime pair connection" @@ -11883,8 +10893,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-135-same-differences", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-135-same-differences" }, "id": "5900f3f31000cf542c50ff06", "title": "Problem 135: Same differences" @@ -11895,8 +10904,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-136-singleton-difference", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-136-singleton-difference" }, "id": "5900f3f51000cf542c50ff07", "title": "Problem 136: Singleton difference" @@ -11907,8 +10915,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-137-fibonacci-golden-nuggets", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-137-fibonacci-golden-nuggets" }, "id": "5900f3f51000cf542c50ff08", "title": "Problem 137: Fibonacci golden nuggets" @@ -11919,8 +10926,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-138-special-isosceles-triangles", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-138-special-isosceles-triangles" }, "id": "5900f3f61000cf542c50ff09", "title": "Problem 138: Special isosceles triangles" @@ -11931,8 +10937,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-139-pythagorean-tiles", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-139-pythagorean-tiles" }, "id": "5900f3f71000cf542c50ff0a", "title": "Problem 139: Pythagorean tiles" @@ -11943,8 +10948,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-14-longest-collatz-sequence", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-14-longest-collatz-sequence" }, "id": "5900f37a1000cf542c50fe8d", "title": "Problem 14: Longest Collatz sequence" @@ -11955,8 +10959,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-140-modified-fibonacci-golden-nuggets", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-140-modified-fibonacci-golden-nuggets" }, "id": "5900f3fa1000cf542c50ff0c", "title": "Problem 140: Modified Fibonacci golden nuggets" @@ -11967,8 +10970,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-141-investigating-progressive-numbers-n-which-are-also-square", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-141-investigating-progressive-numbers-n-which-are-also-square" }, "id": "5900f3f91000cf542c50ff0b", "title": "Problem 141: Investigating progressive numbers, n, which are also square" @@ -11979,8 +10981,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-142-perfect-square-collection", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-142-perfect-square-collection" }, "id": "5900f3fa1000cf542c50ff0d", "title": "Problem 142: Perfect Square Collection" @@ -11991,8 +10992,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-143-investigating-the-torricelli-point-of-a-triangle", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-143-investigating-the-torricelli-point-of-a-triangle" }, "id": "5900f3fc1000cf542c50ff0e", "title": "Problem 143: Investigating the Torricelli point of a triangle" @@ -12003,8 +11003,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-144-investigating-multiple-reflections-of-a-laser-beam", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-144-investigating-multiple-reflections-of-a-laser-beam" }, "id": "5900f3fc1000cf542c50ff0f", "title": "Problem 144: Investigating multiple reflections of a laser beam" @@ -12015,8 +11014,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-145-how-many-reversible-numbers-are-there-below-one-billion", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-145-how-many-reversible-numbers-are-there-below-one-billion" }, "id": "5900f3fd1000cf542c50ff10", "title": "Problem 145: How many reversible numbers are there below one-billion?" @@ -12027,8 +11025,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-146-investigating-a-prime-pattern", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-146-investigating-a-prime-pattern" }, "id": "5900f3fe1000cf542c50ff11", "title": "Problem 146: Investigating a Prime Pattern" @@ -12039,8 +11036,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-147-rectangles-in-cross-hatched-grids", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-147-rectangles-in-cross-hatched-grids" }, "id": "5900f3ff1000cf542c50ff12", "title": "Problem 147: Rectangles in cross-hatched grids" @@ -12051,8 +11047,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-148-exploring-pascals-triangle", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-148-exploring-pascals-triangle" }, "id": "5900f4021000cf542c50ff14", "title": "Problem 148: Exploring Pascal's triangle" @@ -12063,8 +11058,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-149-searching-for-a-maximum-sum-subsequence", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-149-searching-for-a-maximum-sum-subsequence" }, "id": "5900f4021000cf542c50ff13", "title": "Problem 149: Searching for a maximum-sum subsequence" @@ -12075,8 +11069,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-15-lattice-paths", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-15-lattice-paths" }, "id": "5900f37b1000cf542c50fe8e", "title": "Problem 15: Lattice paths" @@ -12087,8 +11080,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-150-searching-a-triangular-array-for-a-sub-triangle-having-minimum-sum", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-150-searching-a-triangular-array-for-a-sub-triangle-having-minimum-sum" }, "id": "5900f4031000cf542c50ff15", "title": "Problem 150: Searching a triangular array for a sub-triangle having minimum-sum" @@ -12099,8 +11091,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-151-paper-sheets-of-standard-sizes-an-expected-value-problem", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-151-paper-sheets-of-standard-sizes-an-expected-value-problem" }, "id": "5900f4031000cf542c50ff16", "title": "Problem 151: Paper sheets of standard sizes: an expected-value problem" @@ -12111,8 +11102,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-152-writing-one-half-as-a-sum-of-inverse-squares", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-152-writing-one-half-as-a-sum-of-inverse-squares" }, "id": "5900f4041000cf542c50ff17", "title": "Problem 152: Writing one half as a sum of inverse squares" @@ -12123,8 +11113,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-153-investigating-gaussian-integers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-153-investigating-gaussian-integers" }, "id": "5900f4051000cf542c50ff18", "title": "Problem 153: Investigating Gaussian Integers" @@ -12135,8 +11124,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-154-exploring-pascals-pyramid", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-154-exploring-pascals-pyramid" }, "id": "5900f4071000cf542c50ff19", "title": "Problem 154: Exploring Pascal's pyramid" @@ -12147,8 +11135,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-155-counting-capacitor-circuits", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-155-counting-capacitor-circuits" }, "id": "5900f4081000cf542c50ff1a", "title": "Problem 155: Counting Capacitor Circuits" @@ -12159,8 +11146,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-156-counting-digits", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-156-counting-digits" }, "id": "5900f4091000cf542c50ff1b", "title": "Problem 156: Counting Digits" @@ -12171,8 +11157,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-157-solving-the-diophantine-equation", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-157-solving-the-diophantine-equation" }, "id": "5900f4091000cf542c50ff1c", "title": "Problem 157: Solving the diophantine equation" @@ -12183,8 +11168,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-158-exploring-strings-for-which-only-one-character-comes-lexicographically-after-its-neighbour-to-the-left", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-158-exploring-strings-for-which-only-one-character-comes-lexicographically-after-its-neighbour-to-the-left" }, "id": "5900f40a1000cf542c50ff1d", "title": "Problem 158: Exploring strings for which only one character comes lexicographically after its neighbour to the left" @@ -12195,8 +11179,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-159-digital-root-sums-of-factorisations", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-159-digital-root-sums-of-factorisations" }, "id": "5900f40c1000cf542c50ff1e", "title": "Problem 159: Digital root sums of factorisations" @@ -12207,8 +11190,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-16-power-digit-sum", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-16-power-digit-sum" }, "id": "5900f37d1000cf542c50fe8f", "title": "Problem 16: Power digit sum" @@ -12219,8 +11201,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-160-factorial-trailing-digits", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-160-factorial-trailing-digits" }, "id": "5900f40d1000cf542c50ff1f", "title": "Problem 160: Factorial trailing digits" @@ -12231,8 +11212,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-161-triominoes", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-161-triominoes" }, "id": "5900f40d1000cf542c50ff20", "title": "Problem 161: Triominoes" @@ -12243,8 +11223,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-162-hexadecimal-numbers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-162-hexadecimal-numbers" }, "id": "5900f40e1000cf542c50ff21", "title": "Problem 162: Hexadecimal numbers" @@ -12255,8 +11234,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-163-cross-hatched-triangles", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-163-cross-hatched-triangles" }, "id": "5900f40f1000cf542c50ff22", "title": "Problem 163: Cross-hatched triangles" @@ -12267,8 +11245,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-164-numbers-for-which-no-three-consecutive-digits-have-a-sum-greater-than-a-given-value", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-164-numbers-for-which-no-three-consecutive-digits-have-a-sum-greater-than-a-given-value" }, "id": "5900f4111000cf542c50ff23", "title": "Problem 164: Numbers for which no three consecutive digits have a sum greater than a given value" @@ -12279,8 +11256,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-165-intersections", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-165-intersections" }, "id": "5900f4111000cf542c50ff24", "title": "Problem 165: Intersections" @@ -12291,8 +11267,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-166-criss-cross", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-166-criss-cross" }, "id": "5900f4131000cf542c50ff25", "title": "Problem 166: Criss Cross" @@ -12303,8 +11278,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-167-investigating-ulam-sequences", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-167-investigating-ulam-sequences" }, "id": "5900f4141000cf542c50ff26", "title": "Problem 167: Investigating Ulam sequences" @@ -12315,8 +11289,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-168-number-rotations", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-168-number-rotations" }, "id": "5900f4151000cf542c50ff27", "title": "Problem 168: Number Rotations" @@ -12327,8 +11300,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-169-exploring-the-number-of-different-ways-a-number-can-be-expressed-as-a-sum-of-powers-of-2", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-169-exploring-the-number-of-different-ways-a-number-can-be-expressed-as-a-sum-of-powers-of-2" }, "id": "5900f4151000cf542c50ff28", "title": "Problem 169: Exploring the number of different ways a number can be expressed as a sum of powers of 2" @@ -12339,8 +11311,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-17-number-letter-counts", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-17-number-letter-counts" }, "id": "5900f37d1000cf542c50fe90", "title": "Problem 17: Number letter counts" @@ -12351,8 +11322,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-170-find-the-largest-0-to-9-pandigital-that-can-be-formed-by-concatenating-products", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-170-find-the-largest-0-to-9-pandigital-that-can-be-formed-by-concatenating-products" }, "id": "5900f4161000cf542c50ff29", "title": "Problem 170: Find the largest 0 to 9 pandigital that can be formed by concatenating products" @@ -12363,8 +11333,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-171-finding-numbers-for-which-the-sum-of-the-squares-of-the-digits-is-a-square", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-171-finding-numbers-for-which-the-sum-of-the-squares-of-the-digits-is-a-square" }, "id": "5900f4181000cf542c50ff2a", "title": "Problem 171: Finding numbers for which the sum of the squares of the digits is a square" @@ -12375,8 +11344,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-172-investigating-numbers-with-few-repeated-digits", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-172-investigating-numbers-with-few-repeated-digits" }, "id": "5900f4181000cf542c50ff2b", "title": "Problem 172: Investigating numbers with few repeated digits" @@ -12387,8 +11355,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-173-using-up-to-one-million-tiles-how-many-different-hollow-square-laminae-can-be-formed", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-173-using-up-to-one-million-tiles-how-many-different-hollow-square-laminae-can-be-formed" }, "id": "5900f41a1000cf542c50ff2c", "title": "Problem 173: Using up to one million tiles how many different \"hollow\" square laminae can be formed?" @@ -12399,8 +11366,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-174-counting-the-number-of-hollow-square-laminae-that-can-form-one-two-three-----distinct-arrangements", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-174-counting-the-number-of-hollow-square-laminae-that-can-form-one-two-three-----distinct-arrangements" }, "id": "5900f41a1000cf542c50ff2d", "title": "Problem 174: Counting the number of \"hollow\" square laminae that can form one, two, three, ... distinct arrangements" @@ -12411,8 +11377,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-175-fractions-involving-the-number-of-different-ways-a-number-can-be-expressed-as-a-sum-of-powers-of-2", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-175-fractions-involving-the-number-of-different-ways-a-number-can-be-expressed-as-a-sum-of-powers-of-2" }, "id": "5900f41c1000cf542c50ff2e", "title": "Problem 175: Fractions involving the number of different ways a number can be expressed as a sum of powers of 2" @@ -12423,8 +11388,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-176-right-angled-triangles-that-share-a-cathetus", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-176-right-angled-triangles-that-share-a-cathetus" }, "id": "5900f41c1000cf542c50ff2f", "title": "Problem 176: Right-angled triangles that share a cathetus" @@ -12435,8 +11399,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-177-integer-angled-quadrilaterals", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-177-integer-angled-quadrilaterals" }, "id": "5900f41e1000cf542c50ff30", "title": "Problem 177: Integer angled Quadrilaterals" @@ -12447,8 +11410,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-178-step-numbers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-178-step-numbers" }, "id": "5900f41e1000cf542c50ff31", "title": "Problem 178: Step Numbers" @@ -12459,8 +11421,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-179-consecutive-positive-divisors", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-179-consecutive-positive-divisors" }, "id": "5900f41f1000cf542c50ff32", "title": "Problem 179: Consecutive positive divisors" @@ -12471,8 +11432,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-18-maximum-path-sum-i", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-18-maximum-path-sum-i" }, "id": "5900f37e1000cf542c50fe91", "title": "Problem 18: Maximum path sum I" @@ -12483,8 +11443,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-180-rational-zeros-of-a-function-of-three-variables", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-180-rational-zeros-of-a-function-of-three-variables" }, "id": "5900f4201000cf542c50ff33", "title": "Problem 180: Rational zeros of a function of three variables" @@ -12495,8 +11454,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-181-investigating-in-how-many-ways-objects-of-two-different-colours-can-be-grouped", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-181-investigating-in-how-many-ways-objects-of-two-different-colours-can-be-grouped" }, "id": "5900f4231000cf542c50ff34", "title": "Problem 181: Investigating in how many ways objects of two different colours can be grouped" @@ -12507,8 +11465,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-182-rsa-encryption", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-182-rsa-encryption" }, "id": "5900f4231000cf542c50ff35", "title": "Problem 182: RSA encryption" @@ -12519,8 +11476,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-183-maximum-product-of-parts", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-183-maximum-product-of-parts" }, "id": "5900f4231000cf542c50ff36", "title": "Problem 183: Maximum product of parts" @@ -12531,8 +11487,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-184-triangles-containing-the-origin", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-184-triangles-containing-the-origin" }, "id": "5900f4241000cf542c50ff37", "title": "Problem 184: Triangles containing the origin" @@ -12543,8 +11498,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-185-number-mind", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-185-number-mind" }, "id": "5900f4251000cf542c50ff38", "title": "Problem 185: Number Mind" @@ -12555,8 +11509,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-186-connectedness-of-a-network", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-186-connectedness-of-a-network" }, "id": "5900f4281000cf542c50ff39", "title": "Problem 186: Connectedness of a network" @@ -12567,8 +11520,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-187-semiprimes", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-187-semiprimes" }, "id": "5900f4291000cf542c50ff3a", "title": "Problem 187: Semiprimes" @@ -12579,8 +11531,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-188-the-hyperexponentiation-of-a-number", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-188-the-hyperexponentiation-of-a-number" }, "id": "5900f4291000cf542c50ff3b", "title": "Problem 188: The hyperexponentiation of a number" @@ -12591,8 +11542,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-189-tri-colouring-a-triangular-grid", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-189-tri-colouring-a-triangular-grid" }, "id": "5900f4291000cf542c50ff3c", "title": "Problem 189: Tri-colouring a triangular grid" @@ -12603,8 +11553,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-19-counting-sundays", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-19-counting-sundays" }, "id": "5900f37f1000cf542c50fe92", "title": "Problem 19: Counting Sundays" @@ -12615,8 +11564,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-190-maximising-a-weighted-product", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-190-maximising-a-weighted-product" }, "id": "5900f42b1000cf542c50ff3d", "title": "Problem 190: Maximising a weighted product" @@ -12627,8 +11575,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-191-prize-strings", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-191-prize-strings" }, "id": "5900f42b1000cf542c50ff3e", "title": "Problem 191: Prize Strings" @@ -12639,8 +11586,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-192-best-approximations", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-192-best-approximations" }, "id": "5900f42c1000cf542c50ff3f", "title": "Problem 192: Best Approximations" @@ -12651,8 +11597,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-193-squarefree-numbers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-193-squarefree-numbers" }, "id": "5900f42f1000cf542c50ff41", "title": "Problem 193: Squarefree Numbers" @@ -12663,8 +11608,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-194-coloured-configurations", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-194-coloured-configurations" }, "id": "5900f42f1000cf542c50ff40", "title": "Problem 194: Coloured Configurations" @@ -12675,8 +11619,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-195-inscribed-circles-of-triangles-with-one-angle-of-60-degrees", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-195-inscribed-circles-of-triangles-with-one-angle-of-60-degrees" }, "id": "5900f4311000cf542c50ff43", "title": "Problem 195: Inscribed circles of triangles with one angle of 60 degrees" @@ -12687,8 +11630,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-196-prime-triplets", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-196-prime-triplets" }, "id": "5900f4301000cf542c50ff42", "title": "Problem 196: Prime triplets" @@ -12699,8 +11641,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-197-investigating-the-behaviour-of-a-recursively-defined-sequence", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-197-investigating-the-behaviour-of-a-recursively-defined-sequence" }, "id": "5900f4311000cf542c50ff44", "title": "Problem 197: Investigating the behaviour of a recursively defined sequence" @@ -12711,8 +11652,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-198-ambiguous-numbers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-198-ambiguous-numbers" }, "id": "5900f4331000cf542c50ff45", "title": "Problem 198: Ambiguous Numbers" @@ -12723,8 +11663,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-199-iterative-circle-packing", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-199-iterative-circle-packing" }, "id": "5900f4341000cf542c50ff46", "title": "Problem 199: Iterative Circle Packing" @@ -12735,8 +11674,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-2-even-fibonacci-numbers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-2-even-fibonacci-numbers" }, "id": "5900f36e1000cf542c50fe81", "title": "Problem 2: Even Fibonacci Numbers" @@ -12747,8 +11685,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-20-factorial-digit-sum", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-20-factorial-digit-sum" }, "id": "5900f3801000cf542c50fe93", "title": "Problem 20: Factorial digit sum" @@ -12759,8 +11696,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-200-find-the-200th-prime-proof-sqube-containing-the-contiguous-sub-string-200", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-200-find-the-200th-prime-proof-sqube-containing-the-contiguous-sub-string-200" }, "id": "5900f4351000cf542c50ff47", "title": "Problem 200: Find the 200th prime-proof sqube containing the contiguous sub-string \"200\"" @@ -12771,8 +11707,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-201-subsets-with-a-unique-sum", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-201-subsets-with-a-unique-sum" }, "id": "5900f4361000cf542c50ff48", "title": "Problem 201: Subsets with a unique sum" @@ -12783,8 +11718,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-202-laserbeam", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-202-laserbeam" }, "id": "5900f4371000cf542c50ff49", "title": "Problem 202: Laserbeam" @@ -12795,8 +11729,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-203-squarefree-binomial-coefficients", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-203-squarefree-binomial-coefficients" }, "id": "5900f4381000cf542c50ff4a", "title": "Problem 203: Squarefree Binomial Coefficients" @@ -12807,8 +11740,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-204-generalised-hamming-numbers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-204-generalised-hamming-numbers" }, "id": "5900f4381000cf542c50ff4b", "title": "Problem 204: Generalised Hamming Numbers" @@ -12819,8 +11751,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-205-dice-game", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-205-dice-game" }, "id": "5900f4391000cf542c50ff4c", "title": "Problem 205: Dice Game" @@ -12831,8 +11762,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-206-concealed-square", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-206-concealed-square" }, "id": "5900f43a1000cf542c50ff4d", "title": "Problem 206: Concealed Square" @@ -12843,8 +11773,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-207-integer-partition-equations", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-207-integer-partition-equations" }, "id": "5900f43c1000cf542c50ff4e", "title": "Problem 207: Integer partition equations" @@ -12855,8 +11784,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-208-robot-walks", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-208-robot-walks" }, "id": "5900f43f1000cf542c50ff51", "title": "Problem 208: Robot Walks" @@ -12867,8 +11795,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-209-circular-logic", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-209-circular-logic" }, "id": "5900f43e1000cf542c50ff4f", "title": "Problem 209: Circular Logic" @@ -12879,8 +11806,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-21-amicable-numbers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-21-amicable-numbers" }, "id": "5900f3811000cf542c50fe94", "title": "Problem 21: Amicable numbers" @@ -12891,8 +11817,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-210-obtuse-angled-triangles", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-210-obtuse-angled-triangles" }, "id": "5900f43e1000cf542c50ff50", "title": "Problem 210: Obtuse Angled Triangles" @@ -12903,8 +11828,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-211-divisor-square-sum", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-211-divisor-square-sum" }, "id": "5900f43f1000cf542c50ff52", "title": "Problem 211: Divisor Square Sum" @@ -12915,8 +11839,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-212-combined-volume-of-cuboids", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-212-combined-volume-of-cuboids" }, "id": "5900f4411000cf542c50ff53", "title": "Problem 212: Combined Volume of Cuboids" @@ -12927,8 +11850,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-213-flea-circus", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-213-flea-circus" }, "id": "5900f4411000cf542c50ff54", "title": "Problem 213: Flea Circus" @@ -12939,8 +11861,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-214-totient-chains", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-214-totient-chains" }, "id": "5900f4421000cf542c50ff55", "title": "Problem 214: Totient Chains" @@ -12951,8 +11872,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-215-crack-free-walls", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-215-crack-free-walls" }, "id": "5900f4431000cf542c50ff56", "title": "Problem 215: Crack-free Walls" @@ -12963,8 +11883,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-216-investigating-the-primality-of-numbers-of-the-form-2n2-1", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-216-investigating-the-primality-of-numbers-of-the-form-2n2-1" }, "id": "5900f4451000cf542c50ff57", "title": "Problem 216: Investigating the primality of numbers of the form 2n2-1" @@ -12975,8 +11894,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-217-balanced-numbers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-217-balanced-numbers" }, "id": "5900f4461000cf542c50ff58", "title": "Problem 217: Balanced Numbers" @@ -12987,8 +11905,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-218-perfect-right-angled-triangles", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-218-perfect-right-angled-triangles" }, "id": "5900f4461000cf542c50ff59", "title": "Problem 218: Perfect right-angled triangles" @@ -12999,8 +11916,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-219-skew-cost-coding", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-219-skew-cost-coding" }, "id": "5900f4481000cf542c50ff5a", "title": "Problem 219: Skew-cost coding" @@ -13011,8 +11927,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-22-names-scores", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-22-names-scores" }, "id": "5a51eabcad78bf416f316e2a", "title": "Problem 22: Names scores" @@ -13023,8 +11938,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-220-heighway-dragon", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-220-heighway-dragon" }, "id": "5900f4481000cf542c50ff5b", "title": "Problem 220: Heighway Dragon" @@ -13035,8 +11949,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-221-alexandrian-integers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-221-alexandrian-integers" }, "id": "5900f4491000cf542c50ff5c", "title": "Problem 221: Alexandrian Integers" @@ -13047,8 +11960,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-222-sphere-packing", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-222-sphere-packing" }, "id": "5900f44b1000cf542c50ff5d", "title": "Problem 222: Sphere Packing" @@ -13059,8 +11971,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-223-almost-right-angled-triangles-i", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-223-almost-right-angled-triangles-i" }, "id": "5900f44b1000cf542c50ff5e", "title": "Problem 223: Almost right-angled triangles I" @@ -13071,8 +11982,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-224-almost-right-angled-triangles-ii", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-224-almost-right-angled-triangles-ii" }, "id": "5900f44e1000cf542c50ff5f", "title": "Problem 224: Almost right-angled triangles II" @@ -13083,8 +11993,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-225-tribonacci-non-divisors", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-225-tribonacci-non-divisors" }, "id": "5900f44e1000cf542c50ff60", "title": "Problem 225: Tribonacci non-divisors" @@ -13095,8 +12004,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-226-a-scoop-of-blancmange", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-226-a-scoop-of-blancmange" }, "id": "5900f4511000cf542c50ff62", "title": "Problem 226: A Scoop of Blancmange" @@ -13107,8 +12015,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-227-the-chase", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-227-the-chase" }, "id": "5900f44f1000cf542c50ff61", "title": "Problem 227: The Chase" @@ -13119,8 +12026,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-228-minkowski-sums", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-228-minkowski-sums" }, "id": "5900f4511000cf542c50ff63", "title": "Problem 228: Minkowski Sums" @@ -13131,8 +12037,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-229-four-representations-using-squares", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-229-four-representations-using-squares" }, "id": "5900f4521000cf542c50ff64", "title": "Problem 229: Four Representations using Squares" @@ -13143,8 +12048,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-23-non-abundant-sums", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-23-non-abundant-sums" }, "id": "5900f3831000cf542c50fe96", "title": "Problem 23: Non-abundant sums" @@ -13155,8 +12059,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-230-fibonacci-words", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-230-fibonacci-words" }, "id": "5900f4531000cf542c50ff65", "title": "Problem 230: Fibonacci Words" @@ -13167,8 +12070,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-231-the-prime-factorisation-of-binomial-coefficients", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-231-the-prime-factorisation-of-binomial-coefficients" }, "id": "5900f4531000cf542c50ff66", "title": "Problem 231: The prime factorisation of binomial coefficients" @@ -13179,8 +12081,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-232-the-race", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-232-the-race" }, "id": "5900f4551000cf542c50ff67", "title": "Problem 232: The Race" @@ -13191,8 +12092,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-233-lattice-points-on-a-circle", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-233-lattice-points-on-a-circle" }, "id": "5900f4551000cf542c50ff68", "title": "Problem 233: Lattice points on a circle" @@ -13203,8 +12103,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-234-semidivisible-numbers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-234-semidivisible-numbers" }, "id": "5900f4571000cf542c50ff69", "title": "Problem 234: Semidivisible numbers" @@ -13215,8 +12114,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-235-an-arithmetic-geometric-sequence", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-235-an-arithmetic-geometric-sequence" }, "id": "5900f4571000cf542c50ff6a", "title": "Problem 235: An Arithmetic Geometric sequence" @@ -13227,8 +12125,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-236-luxury-hampers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-236-luxury-hampers" }, "id": "5900f4591000cf542c50ff6b", "title": "Problem 236: Luxury Hampers" @@ -13239,8 +12136,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-237-tours-on-a-4-x-n-playing-board", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-237-tours-on-a-4-x-n-playing-board" }, "id": "5900f4591000cf542c50ff6c", "title": "Problem 237: Tours on a 4 x n playing board" @@ -13251,8 +12147,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-238-infinite-string-tour", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-238-infinite-string-tour" }, "id": "5900f45b1000cf542c50ff6d", "title": "Problem 238: Infinite string tour" @@ -13263,8 +12158,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-239-twenty-two-foolish-primes", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-239-twenty-two-foolish-primes" }, "id": "5900f45c1000cf542c50ff6e", "title": "Problem 239: Twenty-two Foolish Primes" @@ -13275,8 +12169,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-24-lexicographic-permutations", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-24-lexicographic-permutations" }, "id": "5900f3841000cf542c50fe97", "title": "Problem 24: Lexicographic permutations" @@ -13287,8 +12180,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-240-top-dice", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-240-top-dice" }, "id": "5900f45d1000cf542c50ff6f", "title": "Problem 240: Top Dice" @@ -13299,8 +12191,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-241-perfection-quotients", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-241-perfection-quotients" }, "id": "5900f45d1000cf542c50ff70", "title": "Problem 241: Perfection Quotients" @@ -13311,8 +12202,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-242-odd-triplets", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-242-odd-triplets" }, "id": "5900f45f1000cf542c50ff71", "title": "Problem 242: Odd Triplets" @@ -13323,8 +12213,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-243-resilience", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-243-resilience" }, "id": "5900f4601000cf542c50ff73", "title": "Problem 243: Resilience" @@ -13335,8 +12224,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-244-sliders", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-244-sliders" }, "id": "5900f4601000cf542c50ff72", "title": "Problem 244: Sliders" @@ -13347,8 +12235,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-245-coresilience", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-245-coresilience" }, "id": "5900f4621000cf542c50ff74", "title": "Problem 245: Coresilience" @@ -13359,8 +12246,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-246-tangents-to-an-ellipse", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-246-tangents-to-an-ellipse" }, "id": "5900f4621000cf542c50ff75", "title": "Problem 246: Tangents to an ellipse" @@ -13371,8 +12257,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-247-squares-under-a-hyperbola", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-247-squares-under-a-hyperbola" }, "id": "5900f4641000cf542c50ff76", "title": "Problem 247: Squares under a hyperbola" @@ -13383,8 +12268,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-248-numbers-for-which-eulers-totient-function-equals-13", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-248-numbers-for-which-eulers-totient-function-equals-13" }, "id": "5900f4651000cf542c50ff77", "title": "Problem 248: Numbers for which Euler’s totient function equals 13!" @@ -13395,8 +12279,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-249-prime-subset-sums", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-249-prime-subset-sums" }, "id": "5900f4671000cf542c50ff79", "title": "Problem 249: Prime Subset Sums" @@ -13407,8 +12290,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-25-1000-digit-fibonacci-number", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-25-1000-digit-fibonacci-number" }, "id": "5900f3851000cf542c50fe98", "title": "Problem 25: 1000-digit Fibonacci number" @@ -13419,8 +12301,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-250-250250", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-250-250250" }, "id": "5900f4661000cf542c50ff78", "title": "Problem 250: 250250" @@ -13431,8 +12312,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-251-cardano-triplets", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-251-cardano-triplets" }, "id": "5900f4671000cf542c50ff7a", "title": "Problem 251: Cardano Triplets" @@ -13443,8 +12323,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-252-convex-holes", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-252-convex-holes" }, "id": "5900f4691000cf542c50ff7b", "title": "Problem 252: Convex Holes" @@ -13455,8 +12334,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-253-tidying-up", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-253-tidying-up" }, "id": "5900f4691000cf542c50ff7c", "title": "Problem 253: Tidying up" @@ -13467,8 +12345,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-254-sums-of-digit-factorials", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-254-sums-of-digit-factorials" }, "id": "5900f46b1000cf542c50ff7d", "title": "Problem 254: Sums of Digit Factorials" @@ -13479,8 +12356,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-255-rounded-square-roots", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-255-rounded-square-roots" }, "id": "5900f46d1000cf542c50ff7f", "title": "Problem 255: Rounded Square Roots" @@ -13491,8 +12367,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-256-tatami-free-rooms", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-256-tatami-free-rooms" }, "id": "5900f46c1000cf542c50ff7e", "title": "Problem 256: Tatami-Free Rooms" @@ -13503,8 +12378,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-257-angular-bisectors", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-257-angular-bisectors" }, "id": "5900f46e1000cf542c50ff80", "title": "Problem 257: Angular Bisectors" @@ -13515,8 +12389,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-258-a-lagged-fibonacci-sequence", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-258-a-lagged-fibonacci-sequence" }, "id": "5900f46e1000cf542c50ff81", "title": "Problem 258: A lagged Fibonacci sequence" @@ -13527,8 +12400,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-259-reachable-numbers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-259-reachable-numbers" }, "id": "5900f4701000cf542c50ff82", "title": "Problem 259: Reachable Numbers" @@ -13539,8 +12411,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-26-reciprocal-cycles", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-26-reciprocal-cycles" }, "id": "5900f3861000cf542c50fe99", "title": "Problem 26: Reciprocal cycles" @@ -13551,8 +12422,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-260-stone-game", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-260-stone-game" }, "id": "5900f4701000cf542c50ff83", "title": "Problem 260: Stone Game" @@ -13563,8 +12433,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-261-pivotal-square-sums", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-261-pivotal-square-sums" }, "id": "5900f4711000cf542c50ff84", "title": "Problem 261: Pivotal Square Sums" @@ -13575,8 +12444,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-262-mountain-range", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-262-mountain-range" }, "id": "5900f4731000cf542c50ff85", "title": "Problem 262: Mountain Range" @@ -13587,8 +12455,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-263-an-engineers-dream-come-true", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-263-an-engineers-dream-come-true" }, "id": "5900f4741000cf542c50ff86", "title": "Problem 263: An engineers' dream come true" @@ -13599,8 +12466,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-264-triangle-centres", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-264-triangle-centres" }, "id": "5900f4751000cf542c50ff87", "title": "Problem 264: Triangle Centres" @@ -13611,8 +12477,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-265-binary-circles", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-265-binary-circles" }, "id": "5900f4761000cf542c50ff88", "title": "Problem 265: Binary Circles" @@ -13623,8 +12488,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-266-pseudo-square-root", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-266-pseudo-square-root" }, "id": "5900f4771000cf542c50ff89", "title": "Problem 266: Pseudo Square Root" @@ -13635,8 +12499,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-267-billionaire", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-267-billionaire" }, "id": "5900f4771000cf542c50ff8a", "title": "Problem 267: Billionaire" @@ -13647,8 +12510,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-268-counting-numbers-with-at-least-four-distinct-prime-factors-less-than-100", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-268-counting-numbers-with-at-least-four-distinct-prime-factors-less-than-100" }, "id": "5900f4791000cf542c50ff8b", "title": "Problem 268: Counting numbers with at least four distinct prime factors less than 100" @@ -13659,8 +12521,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-269-polynomials-with-at-least-one-integer-root", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-269-polynomials-with-at-least-one-integer-root" }, "id": "5900f4791000cf542c50ff8c", "title": "Problem 269: Polynomials with at least one integer root" @@ -13671,8 +12532,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-27-quadratic-primes", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-27-quadratic-primes" }, "id": "5900f3871000cf542c50fe9a", "title": "Problem 27: Quadratic primes" @@ -13683,8 +12543,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-270-cutting-squares", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-270-cutting-squares" }, "id": "5900f47c1000cf542c50ff8e", "title": "Problem 270: Cutting Squares" @@ -13695,8 +12554,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-271-modular-cubes-part-1", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-271-modular-cubes-part-1" }, "id": "5900f47b1000cf542c50ff8d", "title": "Problem 271: Modular Cubes, part 1" @@ -13707,8 +12565,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-272-modular-cubes-part-2", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-272-modular-cubes-part-2" }, "id": "5900f47d1000cf542c50ff8f", "title": "Problem 272: Modular Cubes, part 2" @@ -13719,8 +12576,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-273-sum-of-squares", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-273-sum-of-squares" }, "id": "5900f47e1000cf542c50ff90", "title": "Problem 273: Sum of Squares" @@ -13731,8 +12587,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-274-divisibility-multipliers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-274-divisibility-multipliers" }, "id": "5900f47f1000cf542c50ff91", "title": "Problem 274: Divisibility Multipliers" @@ -13743,8 +12598,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-275-balanced-sculptures", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-275-balanced-sculptures" }, "id": "5900f4801000cf542c50ff92", "title": "Problem 275: Balanced Sculptures" @@ -13755,8 +12609,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-276-primitive-triangles", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-276-primitive-triangles" }, "id": "5900f4801000cf542c50ff93", "title": "Problem 276: Primitive Triangles" @@ -13767,8 +12620,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-277-a-modified-collatz-sequence", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-277-a-modified-collatz-sequence" }, "id": "5900f4811000cf542c50ff94", "title": "Problem 277: A Modified Collatz sequence" @@ -13779,8 +12631,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-278-linear-combinations-of-semiprimes", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-278-linear-combinations-of-semiprimes" }, "id": "5900f4831000cf542c50ff95", "title": "Problem 278: Linear Combinations of Semiprimes" @@ -13791,8 +12642,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-279-triangles-with-integral-sides-and-an-integral-angle", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-279-triangles-with-integral-sides-and-an-integral-angle" }, "id": "5900f4841000cf542c50ff96", "title": "Problem 279: Triangles with integral sides and an integral angle" @@ -13803,8 +12653,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-28-number-spiral-diagonals", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-28-number-spiral-diagonals" }, "id": "5900f3881000cf542c50fe9b", "title": "Problem 28: Number spiral diagonals" @@ -13815,8 +12664,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-280-ant-and-seeds", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-280-ant-and-seeds" }, "id": "5900f4841000cf542c50ff97", "title": "Problem 280: Ant and seeds" @@ -13827,8 +12675,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-281-pizza-toppings", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-281-pizza-toppings" }, "id": "5900f4861000cf542c50ff98", "title": "Problem 281: Pizza Toppings" @@ -13839,8 +12686,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-282-the-ackermann-function", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-282-the-ackermann-function" }, "id": "5900f4861000cf542c50ff99", "title": "Problem 282: The Ackermann function" @@ -13851,8 +12697,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-283-integer-sided-triangles-for-which-the-area--perimeter-ratio-is-integral", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-283-integer-sided-triangles-for-which-the-area--perimeter-ratio-is-integral" }, "id": "5900f4881000cf542c50ff9a", "title": "Problem 283: Integer sided triangles for which the area / perimeter ratio is integral" @@ -13863,8 +12708,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-284-steady-squares", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-284-steady-squares" }, "id": "5900f4891000cf542c50ff9b", "title": "Problem 284: Steady Squares" @@ -13875,8 +12719,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-285-pythagorean-odds", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-285-pythagorean-odds" }, "id": "5900f48a1000cf542c50ff9c", "title": "Problem 285: Pythagorean odds" @@ -13887,8 +12730,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-286-scoring-probabilities", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-286-scoring-probabilities" }, "id": "5900f48a1000cf542c50ff9d", "title": "Problem 286: Scoring probabilities" @@ -13899,8 +12741,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-287-quadtree-encoding-a-simple-compression-algorithm", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-287-quadtree-encoding-a-simple-compression-algorithm" }, "id": "5900f48b1000cf542c50ff9e", "title": "Problem 287: Quadtree encoding (a simple compression algorithm)" @@ -13911,8 +12752,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-288-an-enormous-factorial", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-288-an-enormous-factorial" }, "id": "5900f48d1000cf542c50ff9f", "title": "Problem 288: An enormous factorial" @@ -13923,8 +12763,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-289-eulerian-cycles", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-289-eulerian-cycles" }, "id": "5900f48d1000cf542c50ffa0", "title": "Problem 289: Eulerian Cycles" @@ -13935,8 +12774,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-29-distinct-powers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-29-distinct-powers" }, "id": "5900f3891000cf542c50fe9c", "title": "Problem 29: Distinct powers" @@ -13947,8 +12785,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-290-digital-signature", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-290-digital-signature" }, "id": "5900f48f1000cf542c50ffa1", "title": "Problem 290: Digital Signature" @@ -13959,8 +12796,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-291-panaitopol-primes", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-291-panaitopol-primes" }, "id": "5900f48f1000cf542c50ffa2", "title": "Problem 291: Panaitopol Primes" @@ -13971,8 +12807,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-292-pythagorean-polygons", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-292-pythagorean-polygons" }, "id": "5900f4911000cf542c50ffa3", "title": "Problem 292: Pythagorean Polygons" @@ -13983,8 +12818,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-293-pseudo-fortunate-numbers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-293-pseudo-fortunate-numbers" }, "id": "5900f4931000cf542c50ffa4", "title": "Problem 293: Pseudo-Fortunate Numbers" @@ -13995,8 +12829,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-294-sum-of-digits---experience-23", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-294-sum-of-digits---experience-23" }, "id": "5900f4931000cf542c50ffa5", "title": "Problem 294: Sum of digits - experience #23" @@ -14007,8 +12840,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-295-lenticular-holes", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-295-lenticular-holes" }, "id": "5900f4931000cf542c50ffa6", "title": "Problem 295: Lenticular holes" @@ -14019,8 +12851,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-296-angular-bisector-and-tangent", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-296-angular-bisector-and-tangent" }, "id": "5900f4941000cf542c50ffa7", "title": "Problem 296: Angular Bisector and Tangent" @@ -14031,8 +12862,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-297-zeckendorf-representation", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-297-zeckendorf-representation" }, "id": "5900f4951000cf542c50ffa8", "title": "Problem 297: Zeckendorf Representation" @@ -14043,8 +12873,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-298-selective-amnesia", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-298-selective-amnesia" }, "id": "5900f4971000cf542c50ffa9", "title": "Problem 298: Selective Amnesia" @@ -14055,8 +12884,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-299-three-similar-triangles", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-299-three-similar-triangles" }, "id": "5900f4971000cf542c50ffaa", "title": "Problem 299: Three similar triangles" @@ -14067,8 +12895,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-3-largest-prime-factor", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-3-largest-prime-factor" }, "id": "5900f36f1000cf542c50fe82", "title": "Problem 3: Largest prime factor" @@ -14079,8 +12906,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-30-digit-n-powers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-30-digit-n-powers" }, "id": "5900f38a1000cf542c50fe9d", "title": "Problem 30: Digit n powers" @@ -14091,8 +12917,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-300-protein-folding", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-300-protein-folding" }, "id": "5900f49a1000cf542c50ffac", "title": "Problem 300: Protein folding" @@ -14103,8 +12928,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-301-nim", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-301-nim" }, "id": "5900f4991000cf542c50ffab", "title": "Problem 301: Nim" @@ -14115,8 +12939,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-302-strong-achilles-numbers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-302-strong-achilles-numbers" }, "id": "5900f49b1000cf542c50ffad", "title": "Problem 302: Strong Achilles Numbers" @@ -14127,8 +12950,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-303-multiples-with-small-digits", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-303-multiples-with-small-digits" }, "id": "5900f49b1000cf542c50ffae", "title": "Problem 303: Multiples with small digits" @@ -14139,8 +12961,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-304-primonacci", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-304-primonacci" }, "id": "5900f49d1000cf542c50ffaf", "title": "Problem 304: Primonacci" @@ -14151,8 +12972,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-305-reflexive-position", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-305-reflexive-position" }, "id": "5900f49d1000cf542c50ffb0", "title": "Problem 305: Reflexive Position" @@ -14163,8 +12983,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-306-paper-strip-game", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-306-paper-strip-game" }, "id": "5900f49f1000cf542c50ffb1", "title": "Problem 306: Paper-strip Game" @@ -14175,8 +12994,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-307-chip-defects", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-307-chip-defects" }, "id": "5900f4a01000cf542c50ffb2", "title": "Problem 307: Chip Defects" @@ -14187,8 +13005,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-308-an-amazing-prime-generating-automaton", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-308-an-amazing-prime-generating-automaton" }, "id": "5900f4a11000cf542c50ffb3", "title": "Problem 308: An amazing Prime-generating Automaton" @@ -14199,8 +13016,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-309-integer-ladders", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-309-integer-ladders" }, "id": "5900f4a11000cf542c50ffb4", "title": "Problem 309: Integer Ladders" @@ -14211,8 +13027,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-31-coin-sums", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-31-coin-sums" }, "id": "5900f38b1000cf542c50fe9e", "title": "Problem 31: Coin sums" @@ -14223,8 +13038,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-310-nim-square", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-310-nim-square" }, "id": "5900f4a21000cf542c50ffb5", "title": "Problem 310: Nim Square" @@ -14235,8 +13049,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-311-biclinic-integral-quadrilaterals", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-311-biclinic-integral-quadrilaterals" }, "id": "5900f4a31000cf542c50ffb6", "title": "Problem 311: Biclinic Integral Quadrilaterals" @@ -14247,8 +13060,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-312-cyclic-paths-on-sierpiski-graphs", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-312-cyclic-paths-on-sierpiski-graphs" }, "id": "5900f4a51000cf542c50ffb7", "title": "Problem 312: Cyclic paths on Sierpiński graphs" @@ -14259,8 +13071,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-313-sliding-game", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-313-sliding-game" }, "id": "5900f4a61000cf542c50ffb8", "title": "Problem 313: Sliding game" @@ -14271,8 +13082,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-314-the-mouse-on-the-moon", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-314-the-mouse-on-the-moon" }, "id": "5900f4a71000cf542c50ffb9", "title": "Problem 314: The Mouse on the Moon" @@ -14283,8 +13093,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-315-digital-root-clocks", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-315-digital-root-clocks" }, "id": "5900f4a71000cf542c50ffba", "title": "Problem 315: Digital root clocks" @@ -14295,8 +13104,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-316-numbers-in-decimal-expansions", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-316-numbers-in-decimal-expansions" }, "id": "5900f4a81000cf542c50ffbb", "title": "Problem 316: Numbers in decimal expansions" @@ -14307,8 +13115,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-317-firecracker", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-317-firecracker" }, "id": "5900f4aa1000cf542c50ffbc", "title": "Problem 317: Firecracker" @@ -14319,8 +13126,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-318-2011-nines", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-318-2011-nines" }, "id": "5900f4ab1000cf542c50ffbd", "title": "Problem 318: 2011 nines" @@ -14331,8 +13137,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-319-bounded-sequences", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-319-bounded-sequences" }, "id": "5900f4ab1000cf542c50ffbe", "title": "Problem 319: Bounded Sequences" @@ -14343,8 +13148,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-32-pandigital-products", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-32-pandigital-products" }, "id": "5900f38c1000cf542c50fe9f", "title": "Problem 32: Pandigital products" @@ -14355,8 +13159,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-320-factorials-divisible-by-a-huge-integer", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-320-factorials-divisible-by-a-huge-integer" }, "id": "5900f4ae1000cf542c50ffbf", "title": "Problem 320: Factorials divisible by a huge integer" @@ -14367,8 +13170,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-321-swapping-counters", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-321-swapping-counters" }, "id": "5900f4ae1000cf542c50ffc0", "title": "Problem 321: Swapping Counters" @@ -14379,8 +13181,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-322-binomial-coefficients-divisible-by-10", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-322-binomial-coefficients-divisible-by-10" }, "id": "5900f4af1000cf542c50ffc1", "title": "Problem 322: Binomial coefficients divisible by 10" @@ -14391,8 +13192,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-323-bitwise-or-operations-on-random-integers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-323-bitwise-or-operations-on-random-integers" }, "id": "5900f4b01000cf542c50ffc2", "title": "Problem 323: Bitwise-OR operations on random integers" @@ -14403,8 +13203,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-324-building-a-tower", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-324-building-a-tower" }, "id": "5900f4b11000cf542c50ffc3", "title": "Problem 324: Building a tower" @@ -14415,8 +13214,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-325-stone-game-ii", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-325-stone-game-ii" }, "id": "5900f4b11000cf542c50ffc4", "title": "Problem 325: Stone Game II" @@ -14427,8 +13225,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-326-modulo-summations", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-326-modulo-summations" }, "id": "5900f4b21000cf542c50ffc5", "title": "Problem 326: Modulo Summations" @@ -14439,8 +13236,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-327-rooms-of-doom", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-327-rooms-of-doom" }, "id": "5900f4b31000cf542c50ffc6", "title": "Problem 327: Rooms of Doom" @@ -14451,8 +13247,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-328-lowest-cost-search", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-328-lowest-cost-search" }, "id": "5900f4b41000cf542c50ffc7", "title": "Problem 328: Lowest-cost Search" @@ -14463,8 +13258,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-329-prime-frog", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-329-prime-frog" }, "id": "5900f4b51000cf542c50ffc8", "title": "Problem 329: Prime Frog" @@ -14475,8 +13269,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-33-digit-cancelling-fractions", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-33-digit-cancelling-fractions" }, "id": "5900f38d1000cf542c50fea0", "title": "Problem 33: Digit cancelling fractions" @@ -14487,8 +13280,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-330-eulers-number", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-330-eulers-number" }, "id": "5900f4b71000cf542c50ffc9", "title": "Problem 330: Euler's Number" @@ -14499,8 +13291,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-331-cross-flips", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-331-cross-flips" }, "id": "5900f4b71000cf542c50ffca", "title": "Problem 331: Cross flips" @@ -14511,8 +13302,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-332-spherical-triangles", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-332-spherical-triangles" }, "id": "5900f4b91000cf542c50ffcb", "title": "Problem 332: Spherical triangles" @@ -14523,8 +13313,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-333-special-partitions", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-333-special-partitions" }, "id": "5900f4b91000cf542c50ffcc", "title": "Problem 333: Special partitions" @@ -14535,8 +13324,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-334-spilling-the-beans", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-334-spilling-the-beans" }, "id": "5900f4ba1000cf542c50ffcd", "title": "Problem 334: Spilling the beans" @@ -14547,8 +13335,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-335-gathering-the-beans", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-335-gathering-the-beans" }, "id": "5900f4bd1000cf542c50ffce", "title": "Problem 335: Gathering the beans" @@ -14559,8 +13346,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-336-maximix-arrangements", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-336-maximix-arrangements" }, "id": "5900f4bd1000cf542c50ffcf", "title": "Problem 336: Maximix Arrangements" @@ -14571,8 +13357,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-337-totient-stairstep-sequences", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-337-totient-stairstep-sequences" }, "id": "5900f4be1000cf542c50ffd0", "title": "Problem 337: Totient Stairstep Sequences" @@ -14583,8 +13368,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-338-cutting-rectangular-grid-paper", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-338-cutting-rectangular-grid-paper" }, "id": "5900f4be1000cf542c50ffd1", "title": "Problem 338: Cutting Rectangular Grid Paper" @@ -14595,8 +13379,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-339-peredur-fab-efrawg", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-339-peredur-fab-efrawg" }, "id": "5900f4c01000cf542c50ffd2", "title": "Problem 339: Peredur fab Efrawg" @@ -14607,8 +13390,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-34-digit-factorials", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-34-digit-factorials" }, "id": "5900f38e1000cf542c50fea1", "title": "Problem 34: Digit factorials" @@ -14619,8 +13401,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-340-crazy-function", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-340-crazy-function" }, "id": "5900f4c21000cf542c50ffd4", "title": "Problem 340: Crazy Function" @@ -14631,8 +13412,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-341-golombs-self-describing-sequence", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-341-golombs-self-describing-sequence" }, "id": "5900f4c11000cf542c50ffd3", "title": "Problem 341: Golomb's self-describing sequence" @@ -14643,8 +13423,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-342-the-totient-of-a-square-is-a-cube", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-342-the-totient-of-a-square-is-a-cube" }, "id": "5900f4c31000cf542c50ffd5", "title": "Problem 342: The totient of a square is a cube" @@ -14655,8 +13434,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-343-fractional-sequences", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-343-fractional-sequences" }, "id": "5900f4c41000cf542c50ffd6", "title": "Problem 343: Fractional Sequences" @@ -14667,8 +13445,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-344-silver-dollar-game", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-344-silver-dollar-game" }, "id": "5900f4c51000cf542c50ffd7", "title": "Problem 344: Silver dollar game" @@ -14679,8 +13456,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-345-matrix-sum", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-345-matrix-sum" }, "id": "5900f4c81000cf542c50ffda", "title": "Problem 345: Matrix Sum" @@ -14691,8 +13467,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-346-strong-repunits", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-346-strong-repunits" }, "id": "5900f4c71000cf542c50ffd8", "title": "Problem 346: Strong Repunits" @@ -14703,8 +13478,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-347-largest-integer-divisible-by-two-primes", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-347-largest-integer-divisible-by-two-primes" }, "id": "5900f4c81000cf542c50ffd9", "title": "Problem 347: Largest integer divisible by two primes" @@ -14715,8 +13489,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-348-sum-of-a-square-and-a-cube", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-348-sum-of-a-square-and-a-cube" }, "id": "5900f4c81000cf542c50ffdb", "title": "Problem 348: Sum of a square and a cube" @@ -14727,8 +13500,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-349-langtons-ant", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-349-langtons-ant" }, "id": "5900f4ca1000cf542c50ffdc", "title": "Problem 349: Langton's ant" @@ -14739,8 +13511,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-35-circular-primes", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-35-circular-primes" }, "id": "5900f38f1000cf542c50fea2", "title": "Problem 35: Circular primes" @@ -14751,8 +13522,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-350-constraining-the-least-greatest-and-the-greatest-least", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-350-constraining-the-least-greatest-and-the-greatest-least" }, "id": "5900f4cb1000cf542c50ffdd", "title": "Problem 350: Constraining the least greatest and the greatest least" @@ -14763,8 +13533,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-351-hexagonal-orchards", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-351-hexagonal-orchards" }, "id": "5900f4cb1000cf542c50ffde", "title": "Problem 351: Hexagonal orchards" @@ -14775,8 +13544,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-352-blood-tests", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-352-blood-tests" }, "id": "5900f4cd1000cf542c50ffdf", "title": "Problem 352: Blood tests" @@ -14787,8 +13555,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-353-risky-moon", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-353-risky-moon" }, "id": "5900f4cd1000cf542c50ffe0", "title": "Problem 353: Risky moon" @@ -14799,8 +13566,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-354-distances-in-a-bees-honeycomb", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-354-distances-in-a-bees-honeycomb" }, "id": "5900f4cf1000cf542c50ffe1", "title": "Problem 354: Distances in a bee's honeycomb" @@ -14811,8 +13577,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-355-maximal-coprime-subset", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-355-maximal-coprime-subset" }, "id": "5900f4d01000cf542c50ffe2", "title": "Problem 355: Maximal coprime subset" @@ -14823,8 +13588,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-356-largest-roots-of-cubic-polynomials", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-356-largest-roots-of-cubic-polynomials" }, "id": "5900f4d01000cf542c50ffe3", "title": "Problem 356: Largest roots of cubic polynomials" @@ -14835,8 +13599,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-357-prime-generating-integers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-357-prime-generating-integers" }, "id": "5900f4d11000cf542c50ffe4", "title": "Problem 357: Prime generating integers" @@ -14847,8 +13610,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-358-cyclic-numbers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-358-cyclic-numbers" }, "id": "5900f4d21000cf542c50ffe5", "title": "Problem 358: Cyclic numbers" @@ -14859,8 +13621,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-359-hilberts-new-hotel", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-359-hilberts-new-hotel" }, "id": "5900f4d31000cf542c50ffe6", "title": "Problem 359: Hilbert's New Hotel" @@ -14871,8 +13632,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-36-double-base-palindromes", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-36-double-base-palindromes" }, "id": "5900f3901000cf542c50fea3", "title": "Problem 36: Double-base palindromes" @@ -14883,8 +13643,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-360-scary-sphere", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-360-scary-sphere" }, "id": "5900f4d41000cf542c50ffe7", "title": "Problem 360: Scary Sphere" @@ -14895,8 +13654,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-361-subsequence-of-thue-morse-sequence", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-361-subsequence-of-thue-morse-sequence" }, "id": "5900f4d51000cf542c50ffe8", "title": "Problem 361: Subsequence of Thue-Morse sequence" @@ -14907,8 +13665,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-362-squarefree-factors", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-362-squarefree-factors" }, "id": "5900f4d61000cf542c50ffe9", "title": "Problem 362: Squarefree factors" @@ -14919,8 +13676,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-363-bzier-curves", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-363-bzier-curves" }, "id": "5900f4d91000cf542c50ffeb", "title": "Problem 363: Bézier Curves" @@ -14931,8 +13687,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-364-comfortable-distance", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-364-comfortable-distance" }, "id": "5900f4d91000cf542c50ffea", "title": "Problem 364: Comfortable distance" @@ -14943,8 +13698,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-365-a-huge-binomial-coefficient", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-365-a-huge-binomial-coefficient" }, "id": "5900f4da1000cf542c50ffec", "title": "Problem 365: A huge binomial coefficient" @@ -14955,8 +13709,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-366-stone-game-iii", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-366-stone-game-iii" }, "id": "5900f4da1000cf542c50ffed", "title": "Problem 366: Stone Game III" @@ -14967,8 +13720,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-367-bozo-sort", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-367-bozo-sort" }, "id": "5900f4db1000cf542c50ffee", "title": "Problem 367: Bozo sort" @@ -14979,8 +13731,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-368-a-kempner-like-series", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-368-a-kempner-like-series" }, "id": "5900f4dd1000cf542c50ffef", "title": "Problem 368: A Kempner-like series" @@ -14991,8 +13742,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-369-badugi", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-369-badugi" }, "id": "5900f4de1000cf542c50fff0", "title": "Problem 369: Badugi" @@ -15003,8 +13753,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-37-truncatable-primes", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-37-truncatable-primes" }, "id": "5900f3911000cf542c50fea4", "title": "Problem 37: Truncatable primes" @@ -15015,8 +13764,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-370-geometric-triangles", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-370-geometric-triangles" }, "id": "5900f4de1000cf542c50fff1", "title": "Problem 370: Geometric triangles" @@ -15027,8 +13775,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-371-licence-plates", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-371-licence-plates" }, "id": "5900f4e01000cf542c50fff2", "title": "Problem 371: Licence plates" @@ -15039,8 +13786,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-372-pencils-of-rays", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-372-pencils-of-rays" }, "id": "5900f4e11000cf542c50fff3", "title": "Problem 372: Pencils of rays" @@ -15051,8 +13797,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-373-circumscribed-circles", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-373-circumscribed-circles" }, "id": "5900f4e11000cf542c50fff4", "title": "Problem 373: Circumscribed Circles" @@ -15063,8 +13808,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-374-maximum-integer-partition-product", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-374-maximum-integer-partition-product" }, "id": "5900f4e51000cf542c50fff6", "title": "Problem 374: Maximum Integer Partition Product" @@ -15075,8 +13819,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-375-minimum-of-subsequences", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-375-minimum-of-subsequences" }, "id": "5900f4e41000cf542c50fff5", "title": "Problem 375: Minimum of subsequences" @@ -15087,8 +13830,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-376-nontransitive-sets-of-dice", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-376-nontransitive-sets-of-dice" }, "id": "5900f4e51000cf542c50fff7", "title": "Problem 376: Nontransitive sets of dice" @@ -15099,8 +13841,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-377-sum-of-digits-experience-13", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-377-sum-of-digits-experience-13" }, "id": "5900f4e51000cf542c50fff8", "title": "Problem 377: Sum of digits, experience 13" @@ -15111,8 +13852,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-378-triangle-triples", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-378-triangle-triples" }, "id": "5900f4e61000cf542c50fff9", "title": "Problem 378: Triangle Triples" @@ -15123,8 +13863,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-379-least-common-multiple-count", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-379-least-common-multiple-count" }, "id": "5900f4e81000cf542c50fffa", "title": "Problem 379: Least common multiple count" @@ -15135,8 +13874,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-38-pandigital-multiples", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-38-pandigital-multiples" }, "id": "5900f3931000cf542c50fea5", "title": "Problem 38: Pandigital multiples" @@ -15147,8 +13885,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-380-amazing-mazes", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-380-amazing-mazes" }, "id": "5900f4e81000cf542c50fffb", "title": "Problem 380: Amazing Mazes!" @@ -15159,8 +13896,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-381-prime-k-factorial", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-381-prime-k-factorial" }, "id": "5900f4ea1000cf542c50fffc", "title": "Problem 381: (prime-k) factorial" @@ -15171,8 +13907,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-382-generating-polygons", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-382-generating-polygons" }, "id": "5900f4eb1000cf542c50fffd", "title": "Problem 382: Generating polygons" @@ -15183,8 +13918,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-383-divisibility-comparison-between-factorials", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-383-divisibility-comparison-between-factorials" }, "id": "5900f4ed1000cf542c50ffff", "title": "Problem 383: Divisibility comparison between factorials" @@ -15195,8 +13929,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-384-rudin-shapiro-sequence", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-384-rudin-shapiro-sequence" }, "id": "5900f4ed1000cf542c50fffe", "title": "Problem 384: Rudin-Shapiro sequence" @@ -15207,8 +13940,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-385-ellipses-inside-triangles", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-385-ellipses-inside-triangles" }, "id": "5900f4ee1000cf542c510000", "title": "Problem 385: Ellipses inside triangles" @@ -15219,8 +13951,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-386-maximum-length-of-an-antichain", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-386-maximum-length-of-an-antichain" }, "id": "5900f4ef1000cf542c510001", "title": "Problem 386: Maximum length of an antichain" @@ -15231,8 +13962,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-387-harshad-numbers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-387-harshad-numbers" }, "id": "5900f4f11000cf542c510003", "title": "Problem 387: Harshad Numbers" @@ -15243,8 +13973,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-388-distinct-lines", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-388-distinct-lines" }, "id": "5900f4f11000cf542c510002", "title": "Problem 388: Distinct Lines" @@ -15255,8 +13984,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-389-platonic-dice", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-389-platonic-dice" }, "id": "5900f4f21000cf542c510004", "title": "Problem 389: Platonic Dice" @@ -15267,8 +13995,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-39-integer-right-triangles", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-39-integer-right-triangles" }, "id": "5900f3931000cf542c50fea6", "title": "Problem 39: Integer right triangles" @@ -15279,8 +14006,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-390-triangles-with-non-rational-sides-and-integral-area", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-390-triangles-with-non-rational-sides-and-integral-area" }, "id": "5900f4f21000cf542c510005", "title": "Problem 390: Triangles with non rational sides and integral area" @@ -15291,8 +14017,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-391-hopping-game", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-391-hopping-game" }, "id": "5900f4f31000cf542c510006", "title": "Problem 391: Hopping Game" @@ -15303,8 +14028,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-392-enmeshed-unit-circle", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-392-enmeshed-unit-circle" }, "id": "5900f4f41000cf542c510007", "title": "Problem 392: Enmeshed unit circle" @@ -15315,8 +14039,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-393-migrating-ants", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-393-migrating-ants" }, "id": "5900f4f61000cf542c510008", "title": "Problem 393: Migrating ants" @@ -15327,8 +14050,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-394-eating-pie", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-394-eating-pie" }, "id": "5900f4f71000cf542c510009", "title": "Problem 394: Eating pie" @@ -15339,8 +14061,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-395-pythagorean-tree", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-395-pythagorean-tree" }, "id": "5900f4f71000cf542c51000a", "title": "Problem 395: Pythagorean tree" @@ -15351,8 +14072,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-396-weak-goodstein-sequence", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-396-weak-goodstein-sequence" }, "id": "5900f4f81000cf542c51000b", "title": "Problem 396: Weak Goodstein sequence" @@ -15363,8 +14083,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-397-triangle-on-parabola", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-397-triangle-on-parabola" }, "id": "5900f4f91000cf542c51000c", "title": "Problem 397: Triangle on parabola" @@ -15375,8 +14094,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-398-cutting-rope", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-398-cutting-rope" }, "id": "5900f4fa1000cf542c51000d", "title": "Problem 398: Cutting rope" @@ -15387,8 +14105,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-399-squarefree-fibonacci-numbers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-399-squarefree-fibonacci-numbers" }, "id": "5900f4fc1000cf542c51000e", "title": "Problem 399: Squarefree Fibonacci Numbers" @@ -15399,8 +14116,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-4-largest-palindrome-product", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-4-largest-palindrome-product" }, "id": "5900f3701000cf542c50fe83", "title": "Problem 4: Largest palindrome product" @@ -15411,8 +14127,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-40-champernownes-constant", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-40-champernownes-constant" }, "id": "5900f3941000cf542c50fea7", "title": "Problem 40: Champernowne's constant" @@ -15423,8 +14138,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-400-fibonacci-tree-game", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-400-fibonacci-tree-game" }, "id": "5900f4fe1000cf542c510010", "title": "Problem 400: Fibonacci tree game" @@ -15435,8 +14149,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-401-sum-of-squares-of-divisors", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-401-sum-of-squares-of-divisors" }, "id": "5900f4fd1000cf542c51000f", "title": "Problem 401: Sum of squares of divisors" @@ -15447,8 +14160,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-402-integer-valued-polynomials", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-402-integer-valued-polynomials" }, "id": "5900f4ff1000cf542c510011", "title": "Problem 402: Integer-valued polynomials" @@ -15459,8 +14171,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-403-lattice-points-enclosed-by-parabola-and-line", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-403-lattice-points-enclosed-by-parabola-and-line" }, "id": "5900f5001000cf542c510013", "title": "Problem 403: Lattice points enclosed by parabola and line" @@ -15471,8 +14182,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-404-crisscross-ellipses", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-404-crisscross-ellipses" }, "id": "5900f5001000cf542c510012", "title": "Problem 404: Crisscross Ellipses" @@ -15483,8 +14193,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-405-a-rectangular-tiling", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-405-a-rectangular-tiling" }, "id": "5900f5021000cf542c510014", "title": "Problem 405: A rectangular tiling" @@ -15495,8 +14204,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-406-guessing-game", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-406-guessing-game" }, "id": "5900f5021000cf542c510015", "title": "Problem 406: Guessing Game" @@ -15507,8 +14215,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-407-idempotents", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-407-idempotents" }, "id": "5900f5041000cf542c510016", "title": "Problem 407: Idempotents" @@ -15519,8 +14226,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-408-admissible-paths-through-a-grid", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-408-admissible-paths-through-a-grid" }, "id": "5900f5091000cf542c51001b", "title": "Problem 408: Admissible paths through a grid" @@ -15531,8 +14237,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-409-nim-extreme", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-409-nim-extreme" }, "id": "5900f5061000cf542c510017", "title": "Problem 409: Nim Extreme" @@ -15543,8 +14248,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-41-pandigital-prime", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-41-pandigital-prime" }, "id": "5900f3951000cf542c50fea8", "title": "Problem 41: Pandigital prime" @@ -15555,8 +14259,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-410-circle-and-tangent-line", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-410-circle-and-tangent-line" }, "id": "5900f5071000cf542c510018", "title": "Problem 410: Circle and tangent line" @@ -15567,8 +14270,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-411-uphill-paths", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-411-uphill-paths" }, "id": "5900f5081000cf542c510019", "title": "Problem 411: Uphill paths" @@ -15579,8 +14281,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-412-gnomon-numbering", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-412-gnomon-numbering" }, "id": "5900f5081000cf542c51001a", "title": "Problem 412: Gnomon numbering" @@ -15591,8 +14292,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-413-one-child-numbers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-413-one-child-numbers" }, "id": "5900f50a1000cf542c51001c", "title": "Problem 413: One-child Numbers" @@ -15603,8 +14303,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-414-kaprekar-constant", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-414-kaprekar-constant" }, "id": "5900f50b1000cf542c51001d", "title": "Problem 414: Kaprekar constant" @@ -15615,8 +14314,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-415-titanic-sets", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-415-titanic-sets" }, "id": "5900f50c1000cf542c51001e", "title": "Problem 415: Titanic sets" @@ -15627,8 +14325,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-416-a-frogs-trip", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-416-a-frogs-trip" }, "id": "5900f50e1000cf542c510020", "title": "Problem 416: A frog's trip" @@ -15639,8 +14336,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-417-reciprocal-cycles-ii", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-417-reciprocal-cycles-ii" }, "id": "5900f50d1000cf542c51001f", "title": "Problem 417: Reciprocal cycles II" @@ -15651,8 +14347,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-418-factorisation-triples", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-418-factorisation-triples" }, "id": "5900f50f1000cf542c510021", "title": "Problem 418: Factorisation triples" @@ -15663,8 +14358,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-419-look-and-say-sequence", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-419-look-and-say-sequence" }, "id": "5900f5101000cf542c510022", "title": "Problem 419: Look and say sequence" @@ -15675,8 +14369,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-42-coded-triangle-numbers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-42-coded-triangle-numbers" }, "id": "5900f3961000cf542c50fea9", "title": "Problem 42: Coded triangle numbers" @@ -15687,8 +14380,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-420-2x2-positive-integer-matrix", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-420-2x2-positive-integer-matrix" }, "id": "5900f5111000cf542c510023", "title": "Problem 420: 2x2 positive integer matrix" @@ -15699,8 +14391,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-421-prime-factors-of-n151", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-421-prime-factors-of-n151" }, "id": "5900f5131000cf542c510024", "title": "Problem 421: Prime factors of n^15+1" @@ -15711,8 +14402,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-422-sequence-of-points-on-a-hyperbola", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-422-sequence-of-points-on-a-hyperbola" }, "id": "5900f5131000cf542c510025", "title": "Problem 422: Sequence of points on a hyperbola" @@ -15723,8 +14413,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-423-consecutive-die-throws", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-423-consecutive-die-throws" }, "id": "5900f5141000cf542c510027", "title": "Problem 423: Consecutive die throws" @@ -15735,8 +14424,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-424-kakuro", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-424-kakuro" }, "id": "5900f5141000cf542c510026", "title": "Problem 424: Kakuro" @@ -15747,8 +14435,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-425-prime-connection", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-425-prime-connection" }, "id": "5900f5151000cf542c510028", "title": "Problem 425: Prime connection" @@ -15759,8 +14446,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-426-box-ball-system", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-426-box-ball-system" }, "id": "5900f5171000cf542c510029", "title": "Problem 426: Box-ball system" @@ -15771,8 +14457,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-427-n-sequences", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-427-n-sequences" }, "id": "5900f5181000cf542c51002a", "title": "Problem 427: n-sequences" @@ -15783,8 +14468,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-428-necklace-of-circles", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-428-necklace-of-circles" }, "id": "5900f5191000cf542c51002b", "title": "Problem 428: Necklace of Circles" @@ -15795,8 +14479,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-429-sum-of-squares-of-unitary-divisors", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-429-sum-of-squares-of-unitary-divisors" }, "id": "5900f5191000cf542c51002c", "title": "Problem 429: Sum of squares of unitary divisors" @@ -15807,8 +14490,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-43-sub-string-divisibility", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-43-sub-string-divisibility" }, "id": "5900f3971000cf542c50feaa", "title": "Problem 43: Sub-string divisibility" @@ -15819,8 +14501,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-430-range-flips", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-430-range-flips" }, "id": "5900f51a1000cf542c51002d", "title": "Problem 430: Range flips" @@ -15831,8 +14512,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-431-square-space-silo", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-431-square-space-silo" }, "id": "5900f51b1000cf542c51002e", "title": "Problem 431: Square Space Silo" @@ -15843,8 +14523,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-432-totient-sum", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-432-totient-sum" }, "id": "5900f51e1000cf542c510030", "title": "Problem 432: Totient sum" @@ -15855,8 +14534,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-433-steps-in-euclids-algorithm", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-433-steps-in-euclids-algorithm" }, "id": "5900f51d1000cf542c51002f", "title": "Problem 433: Steps in Euclid's algorithm" @@ -15867,8 +14545,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-434-rigid-graphs", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-434-rigid-graphs" }, "id": "5900f51f1000cf542c510031", "title": "Problem 434: Rigid graphs" @@ -15879,8 +14556,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-435-polynomials-of-fibonacci-numbers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-435-polynomials-of-fibonacci-numbers" }, "id": "5900f5201000cf542c510032", "title": "Problem 435: Polynomials of Fibonacci numbers" @@ -15891,8 +14567,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-436-unfair-wager", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-436-unfair-wager" }, "id": "5900f5221000cf542c510033", "title": "Problem 436: Unfair wager" @@ -15903,8 +14578,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-437-fibonacci-primitive-roots", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-437-fibonacci-primitive-roots" }, "id": "5900f5241000cf542c510036", "title": "Problem 437: Fibonacci primitive roots" @@ -15915,8 +14589,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-438-integer-part-of-polynomial-equations-solutions", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-438-integer-part-of-polynomial-equations-solutions" }, "id": "5900f5231000cf542c510034", "title": "Problem 438: Integer part of polynomial equation's solutions" @@ -15927,8 +14600,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-439-sum-of-sum-of-divisors", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-439-sum-of-sum-of-divisors" }, "id": "5900f5231000cf542c510035", "title": "Problem 439: Sum of sum of divisors" @@ -15939,8 +14611,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-44-pentagon-numbers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-44-pentagon-numbers" }, "id": "5900f3981000cf542c50feab", "title": "Problem 44: Pentagon numbers" @@ -15951,8 +14622,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-440-gcd-and-tiling", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-440-gcd-and-tiling" }, "id": "5900f5241000cf542c510037", "title": "Problem 440: GCD and Tiling" @@ -15963,8 +14633,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-441-the-inverse-summation-of-coprime-couples", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-441-the-inverse-summation-of-coprime-couples" }, "id": "5900f5261000cf542c510038", "title": "Problem 441: The inverse summation of coprime couples" @@ -15975,8 +14644,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-442-eleven-free-integers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-442-eleven-free-integers" }, "id": "5900f5271000cf542c510039", "title": "Problem 442: Eleven-free integers" @@ -15987,8 +14655,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-443-gcd-sequence", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-443-gcd-sequence" }, "id": "5900f5271000cf542c51003a", "title": "Problem 443: GCD sequence" @@ -15999,8 +14666,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-444-the-roundtable-lottery", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-444-the-roundtable-lottery" }, "id": "5900f52a1000cf542c51003b", "title": "Problem 444: The Roundtable Lottery" @@ -16011,8 +14677,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-445-retractions-a", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-445-retractions-a" }, "id": "5900f52a1000cf542c51003c", "title": "Problem 445: Retractions A" @@ -16023,8 +14688,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-446-retractions-b", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-446-retractions-b" }, "id": "5900f52c1000cf542c51003d", "title": "Problem 446: Retractions B" @@ -16035,8 +14699,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-447-retractions-c", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-447-retractions-c" }, "id": "5900f52c1000cf542c51003e", "title": "Problem 447: Retractions C" @@ -16047,8 +14710,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-448-average-least-common-multiple", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-448-average-least-common-multiple" }, "id": "5900f52c1000cf542c51003f", "title": "Problem 448: Average least common multiple" @@ -16059,8 +14721,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-449-chocolate-covered-candy", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-449-chocolate-covered-candy" }, "id": "5900f52d1000cf542c510040", "title": "Problem 449: Chocolate covered candy" @@ -16071,8 +14732,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-45-triangular-pentagonal-and-hexagonal", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-45-triangular-pentagonal-and-hexagonal" }, "id": "5900f3991000cf542c50feac", "title": "Problem 45: Triangular, pentagonal, and hexagonal" @@ -16083,8 +14743,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-450-hypocycloid-and-lattice-points", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-450-hypocycloid-and-lattice-points" }, "id": "5900f52e1000cf542c510041", "title": "Problem 450: Hypocycloid and Lattice points" @@ -16095,8 +14754,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-451-modular-inverses", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-451-modular-inverses" }, "id": "5900f5311000cf542c510042", "title": "Problem 451: Modular inverses" @@ -16107,8 +14765,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-452-long-products", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-452-long-products" }, "id": "5900f5311000cf542c510043", "title": "Problem 452: Long Products" @@ -16119,8 +14776,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-453-lattice-quadrilaterals", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-453-lattice-quadrilaterals" }, "id": "5900f5311000cf542c510044", "title": "Problem 453: Lattice Quadrilaterals" @@ -16131,8 +14787,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-454-diophantine-reciprocals-iii", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-454-diophantine-reciprocals-iii" }, "id": "5900f5331000cf542c510045", "title": "Problem 454: Diophantine reciprocals III" @@ -16143,8 +14798,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-455-powers-with-trailing-digits", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-455-powers-with-trailing-digits" }, "id": "5900f5331000cf542c510046", "title": "Problem 455: Powers With Trailing Digits" @@ -16155,8 +14809,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-456-triangles-containing-the-origin-ii", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-456-triangles-containing-the-origin-ii" }, "id": "5900f5351000cf542c510047", "title": "Problem 456: Triangles containing the origin II" @@ -16167,8 +14820,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-457-a-polynomial-modulo-the-square-of-a-prime", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-457-a-polynomial-modulo-the-square-of-a-prime" }, "id": "5900f5361000cf542c510048", "title": "Problem 457: A polynomial modulo the square of a prime" @@ -16179,8 +14831,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-458-permutations-of-project", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-458-permutations-of-project" }, "id": "5900f5361000cf542c510049", "title": "Problem 458: Permutations of Project" @@ -16191,8 +14842,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-459-flipping-game", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-459-flipping-game" }, "id": "5900f5371000cf542c51004a", "title": "Problem 459: Flipping game" @@ -16203,8 +14853,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-46-goldbachs-other-conjecture", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-46-goldbachs-other-conjecture" }, "id": "5900f39a1000cf542c50fead", "title": "Problem 46: Goldbach's other conjecture" @@ -16215,8 +14864,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-460-an-ant-on-the-move", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-460-an-ant-on-the-move" }, "id": "5900f5381000cf542c51004b", "title": "Problem 460: An ant on the move" @@ -16227,8 +14875,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-461-almost-pi", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-461-almost-pi" }, "id": "5900f53a1000cf542c51004c", "title": "Problem 461: Almost Pi" @@ -16239,8 +14886,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-462-permutation-of-3-smooth-numbers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-462-permutation-of-3-smooth-numbers" }, "id": "5900f53b1000cf542c51004d", "title": "Problem 462: Permutation of 3-smooth numbers" @@ -16251,8 +14897,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-463-a-weird-recurrence-relation", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-463-a-weird-recurrence-relation" }, "id": "5900f53c1000cf542c51004e", "title": "Problem 463: A weird recurrence relation" @@ -16263,8 +14908,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-464-mbius-function-and-intervals", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-464-mbius-function-and-intervals" }, "id": "5900f53d1000cf542c51004f", "title": "Problem 464: Möbius function and intervals" @@ -16275,8 +14919,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-465-polar-polygons", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-465-polar-polygons" }, "id": "5900f53d1000cf542c510050", "title": "Problem 465: Polar polygons" @@ -16287,8 +14930,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-466-distinct-terms-in-a-multiplication-table", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-466-distinct-terms-in-a-multiplication-table" }, "id": "5900f53e1000cf542c510051", "title": "Problem 466: Distinct terms in a multiplication table" @@ -16299,8 +14941,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-467-superinteger", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-467-superinteger" }, "id": "5900f5411000cf542c510052", "title": "Problem 467: Superinteger" @@ -16311,8 +14952,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-468-smooth-divisors-of-binomial-coefficients", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-468-smooth-divisors-of-binomial-coefficients" }, "id": "5900f5411000cf542c510054", "title": "Problem 468: Smooth divisors of binomial coefficients" @@ -16323,8 +14963,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-469-empty-chairs", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-469-empty-chairs" }, "id": "5900f5411000cf542c510053", "title": "Problem 469: Empty chairs" @@ -16335,8 +14974,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-47-distinct-primes-factors", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-47-distinct-primes-factors" }, "id": "5900f39c1000cf542c50feae", "title": "Problem 47: Distinct primes factors" @@ -16347,8 +14985,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-470-super-ramvok", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-470-super-ramvok" }, "id": "5900f5431000cf542c510055", "title": "Problem 470: Super Ramvok" @@ -16359,8 +14996,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-471-triangle-inscribed-in-ellipse", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-471-triangle-inscribed-in-ellipse" }, "id": "5900f5431000cf542c510056", "title": "Problem 471: Triangle inscribed in ellipse" @@ -16371,8 +15007,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-472-comfortable-distance-ii", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-472-comfortable-distance-ii" }, "id": "5900f5451000cf542c510057", "title": "Problem 472: Comfortable Distance II" @@ -16383,8 +15018,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-473-phigital-number-base", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-473-phigital-number-base" }, "id": "5900f5461000cf542c510058", "title": "Problem 473: Phigital number base" @@ -16395,8 +15029,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-474-last-digits-of-divisors", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-474-last-digits-of-divisors" }, "id": "5900f5471000cf542c510059", "title": "Problem 474: Last digits of divisors" @@ -16407,8 +15040,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-475-music-festival", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-475-music-festival" }, "id": "5900f5481000cf542c51005a", "title": "Problem 475: Music festival" @@ -16419,8 +15051,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-476-circle-packing-ii", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-476-circle-packing-ii" }, "id": "5900f5481000cf542c51005b", "title": "Problem 476: Circle Packing II" @@ -16431,8 +15062,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-477-number-sequence-game", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-477-number-sequence-game" }, "id": "5900f54a1000cf542c51005c", "title": "Problem 477: Number Sequence Game" @@ -16443,8 +15073,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-478-mixtures", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-478-mixtures" }, "id": "5900f54c1000cf542c51005e", "title": "Problem 478: Mixtures" @@ -16455,8 +15084,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-479-roots-on-the-rise", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-479-roots-on-the-rise" }, "id": "5900f54b1000cf542c51005d", "title": "Problem 479: Roots on the Rise" @@ -16467,8 +15095,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-48-self-powers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-48-self-powers" }, "id": "5900f39c1000cf542c50feaf", "title": "Problem 48: Self powers" @@ -16479,8 +15106,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-480-the-last-question", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-480-the-last-question" }, "id": "5900f54c1000cf542c51005f", "title": "Problem 480: The Last Question" @@ -16491,8 +15117,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-49-prime-permutations", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-49-prime-permutations" }, "id": "5900f39d1000cf542c50feb0", "title": "Problem 49: Prime permutations" @@ -16503,8 +15128,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-5-smallest-multiple", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-5-smallest-multiple" }, "id": "5900f3711000cf542c50fe84", "title": "Problem 5: Smallest multiple" @@ -16515,8 +15139,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-50-consecutive-prime-sum", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-50-consecutive-prime-sum" }, "id": "5900f39e1000cf542c50feb1", "title": "Problem 50: Consecutive prime sum" @@ -16527,8 +15150,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-51-prime-digit-replacements", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-51-prime-digit-replacements" }, "id": "5900f39f1000cf542c50feb2", "title": "Problem 51: Prime digit replacements" @@ -16539,8 +15161,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-52-permuted-multiples", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-52-permuted-multiples" }, "id": "5900f3a01000cf542c50feb3", "title": "Problem 52: Permuted multiples" @@ -16551,8 +15172,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-53-combinatoric-selections", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-53-combinatoric-selections" }, "id": "5900f3a11000cf542c50feb4", "title": "Problem 53: Combinatoric selections" @@ -16563,8 +15183,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-54-poker-hands", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-54-poker-hands" }, "id": "5900f3a21000cf542c50feb5", "title": "Problem 54: Poker hands" @@ -16575,8 +15194,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-55-lychrel-numbers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-55-lychrel-numbers" }, "id": "5900f3a31000cf542c50feb6", "title": "Problem 55: Lychrel numbers" @@ -16587,8 +15205,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-56-powerful-digit-sum", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-56-powerful-digit-sum" }, "id": "5900f3a41000cf542c50feb7", "title": "Problem 56: Powerful digit sum" @@ -16599,8 +15216,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-57-square-root-convergents", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-57-square-root-convergents" }, "id": "5900f3a51000cf542c50feb8", "title": "Problem 57: Square root convergents" @@ -16611,8 +15227,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-58-spiral-primes", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-58-spiral-primes" }, "id": "5900f3a61000cf542c50feb9", "title": "Problem 58: Spiral primes" @@ -16623,8 +15238,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-59-xor-decryption", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-59-xor-decryption" }, "id": "5900f3a81000cf542c50feba", "title": "Problem 59: XOR decryption" @@ -16635,8 +15249,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-6-sum-square-difference", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-6-sum-square-difference" }, "id": "5900f3721000cf542c50fe85", "title": "Problem 6: Sum square difference" @@ -16647,8 +15260,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-60-prime-pair-sets", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-60-prime-pair-sets" }, "id": "5900f3a81000cf542c50febb", "title": "Problem 60: Prime pair sets" @@ -16659,8 +15271,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-61-cyclical-figurate-numbers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-61-cyclical-figurate-numbers" }, "id": "5900f3a91000cf542c50febc", "title": "Problem 61: Cyclical figurate numbers" @@ -16671,8 +15282,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-62-cubic-permutations", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-62-cubic-permutations" }, "id": "5900f3aa1000cf542c50febd", "title": "Problem 62: Cubic permutations" @@ -16683,8 +15293,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-63-powerful-digit-counts", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-63-powerful-digit-counts" }, "id": "5900f3ab1000cf542c50febe", "title": "Problem 63: Powerful digit counts" @@ -16695,8 +15304,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-64-odd-period-square-roots", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-64-odd-period-square-roots" }, "id": "5900f3ac1000cf542c50febf", "title": "Problem 64: Odd period square roots" @@ -16707,8 +15315,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-65-convergents-of-e", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-65-convergents-of-e" }, "id": "5900f3ad1000cf542c50fec0", "title": "Problem 65: Convergents of e" @@ -16719,8 +15326,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-66-diophantine-equation", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-66-diophantine-equation" }, "id": "5900f3ae1000cf542c50fec1", "title": "Problem 66: Diophantine equation" @@ -16731,8 +15337,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-67-maximum-path-sum-ii", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-67-maximum-path-sum-ii" }, "id": "5900f3b01000cf542c50fec2", "title": "Problem 67: Maximum path sum II" @@ -16743,8 +15348,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-68-magic-5-gon-ring", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-68-magic-5-gon-ring" }, "id": "5900f3b01000cf542c50fec3", "title": "Problem 68: Magic 5-gon ring" @@ -16755,8 +15359,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-69-totient-maximum", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-69-totient-maximum" }, "id": "5900f3b11000cf542c50fec4", "title": "Problem 69: Totient maximum" @@ -16767,8 +15370,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-7-10001st-prime", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-7-10001st-prime" }, "id": "5900f3731000cf542c50fe86", "title": "Problem 7: 10001st prime" @@ -16779,8 +15381,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-70-totient-permutation", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-70-totient-permutation" }, "id": "5900f3b21000cf542c50fec5", "title": "Problem 70: Totient permutation" @@ -16791,8 +15392,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-71-ordered-fractions", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-71-ordered-fractions" }, "id": "5900f3b31000cf542c50fec6", "title": "Problem 71: Ordered fractions" @@ -16803,8 +15403,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-72-counting-fractions", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-72-counting-fractions" }, "id": "5900f3b41000cf542c50fec7", "title": "Problem 72: Counting fractions" @@ -16815,8 +15414,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-73-counting-fractions-in-a-range", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-73-counting-fractions-in-a-range" }, "id": "5900f3b61000cf542c50fec8", "title": "Problem 73: Counting fractions in a range" @@ -16827,8 +15425,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-74-digit-factorial-chains", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-74-digit-factorial-chains" }, "id": "5900f3b61000cf542c50fec9", "title": "Problem 74: Digit factorial chains" @@ -16839,8 +15436,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-75-singular-integer-right-triangles", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-75-singular-integer-right-triangles" }, "id": "5900f3b71000cf542c50feca", "title": "Problem 75: Singular integer right triangles" @@ -16851,8 +15447,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-76-counting-summations", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-76-counting-summations" }, "id": "5900f3b81000cf542c50fecb", "title": "Problem 76: Counting summations" @@ -16863,8 +15458,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-77-prime-summations", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-77-prime-summations" }, "id": "5900f3b91000cf542c50fecc", "title": "Problem 77: Prime summations" @@ -16875,8 +15469,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-78-coin-partitions", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-78-coin-partitions" }, "id": "5900f3ba1000cf542c50fecd", "title": "Problem 78: Coin partitions" @@ -16887,8 +15480,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-79-passcode-derivation", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-79-passcode-derivation" }, "id": "5900f3bb1000cf542c50fece", "title": "Problem 79: Passcode derivation" @@ -16899,8 +15491,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-8-largest-product-in-a-series", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-8-largest-product-in-a-series" }, "id": "5900f3741000cf542c50fe87", "title": "Problem 8: Largest product in a series" @@ -16911,8 +15502,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-80-square-root-digital-expansion", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-80-square-root-digital-expansion" }, "id": "5900f3bc1000cf542c50fecf", "title": "Problem 80: Square root digital expansion" @@ -16923,8 +15513,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-81-path-sum-two-ways", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-81-path-sum-two-ways" }, "id": "5900f3bd1000cf542c50fed0", "title": "Problem 81: Path sum: two ways" @@ -16935,8 +15524,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-82-path-sum-three-ways", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-82-path-sum-three-ways" }, "id": "5900f3be1000cf542c50fed1", "title": "Problem 82: Path sum: three ways" @@ -16947,8 +15535,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-83-path-sum-four-ways", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-83-path-sum-four-ways" }, "id": "5900f3bf1000cf542c50fed2", "title": "Problem 83: Path sum: four ways" @@ -16959,8 +15546,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-84-monopoly-odds", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-84-monopoly-odds" }, "id": "5900f3c11000cf542c50fed3", "title": "Problem 84: Monopoly odds" @@ -16971,8 +15557,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-85-counting-rectangles", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-85-counting-rectangles" }, "id": "5900f3c11000cf542c50fed4", "title": "Problem 85: Counting rectangles" @@ -16983,8 +15568,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-86-cuboid-route", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-86-cuboid-route" }, "id": "5900f3c31000cf542c50fed5", "title": "Problem 86: Cuboid route" @@ -16995,8 +15579,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-87-prime-power-triples", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-87-prime-power-triples" }, "id": "5900f3c51000cf542c50fed8", "title": "Problem 87: Prime power triples" @@ -17007,8 +15590,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-88-product-sum-numbers", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-88-product-sum-numbers" }, "id": "5900f3c51000cf542c50fed6", "title": "Problem 88: Product-sum numbers" @@ -17019,8 +15601,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-89-roman-numerals", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-89-roman-numerals" }, "id": "5900f3c51000cf542c50fed7", "title": "Problem 89: Roman numerals" @@ -17031,8 +15612,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-9-special-pythagorean-triplet", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-9-special-pythagorean-triplet" }, "id": "5900f3761000cf542c50fe88", "title": "Problem 9: Special Pythagorean triplet" @@ -17043,8 +15623,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-90-cube-digit-pairs", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-90-cube-digit-pairs" }, "id": "5900f3c61000cf542c50fed9", "title": "Problem 90: Cube digit pairs" @@ -17055,8 +15634,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-91-right-triangles-with-integer-coordinates", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-91-right-triangles-with-integer-coordinates" }, "id": "5900f3c71000cf542c50feda", "title": "Problem 91: Right triangles with integer coordinates" @@ -17067,8 +15645,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-92-square-digit-chains", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-92-square-digit-chains" }, "id": "5900f3c81000cf542c50fedb", "title": "Problem 92: Square digit chains" @@ -17079,8 +15656,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-93-arithmetic-expressions", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-93-arithmetic-expressions" }, "id": "5900f3ca1000cf542c50fedc", "title": "Problem 93: Arithmetic expressions" @@ -17091,8 +15667,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-94-almost-equilateral-triangles", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-94-almost-equilateral-triangles" }, "id": "5900f3ca1000cf542c50fedd", "title": "Problem 94: Almost equilateral triangles" @@ -17103,8 +15678,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-95-amicable-chains", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-95-amicable-chains" }, "id": "5900f3cc1000cf542c50fede", "title": "Problem 95: Amicable chains" @@ -17115,8 +15689,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-96-su-doku", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-96-su-doku" }, "id": "5900f3cc1000cf542c50fedf", "title": "Problem 96: Su Doku" @@ -17127,8 +15700,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-97-large-non-mersenne-prime", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-97-large-non-mersenne-prime" }, "id": "5900f3ce1000cf542c50fee0", "title": "Problem 97: Large non-Mersenne prime" @@ -17139,8 +15711,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-98-anagramic-squares", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-98-anagramic-squares" }, "id": "5900f3cf1000cf542c50fee1", "title": "Problem 98: Anagramic squares" @@ -17151,8 +15722,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/project-euler/problem-99-largest-exponential", - "blockName": "Project Euler" + "slug": "/learn/coding-interview-prep/project-euler/problem-99-largest-exponential" }, "id": "5900f3d01000cf542c50fee2", "title": "Problem 99: Largest exponential" @@ -17163,8 +15733,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/100-doors", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/100-doors" }, "id": "594810f028c0303b75339acb", "title": "100 doors" @@ -17175,8 +15744,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/24-game", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/24-game" }, "id": "5951e88f64ebf159166a1176", "title": "24 game" @@ -17187,8 +15755,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/9-billion-names-of-god-the-integer", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/9-billion-names-of-god-the-integer" }, "id": "5949b579404977fbaefcd736", "title": "9 billion names of God the integer" @@ -17199,8 +15766,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/abc-problem", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/abc-problem" }, "id": "594810f028c0303b75339acc", "title": "ABC Problem" @@ -17211,8 +15777,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/abundant-deficient-and-perfect-number-classifications", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/abundant-deficient-and-perfect-number-classifications" }, "id": "594810f028c0303b75339acd", "title": "Abundant, deficient and perfect number classifications" @@ -17223,8 +15788,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/accumulator-factory", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/accumulator-factory" }, "id": "594810f028c0303b75339ace", "title": "Accumulator factory" @@ -17235,8 +15799,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/ackermann-function", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/ackermann-function" }, "id": "594810f028c0303b75339acf", "title": "Ackermann function" @@ -17247,8 +15810,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/align-columns", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/align-columns" }, "id": "594810f028c0303b75339ad0", "title": "Align columns" @@ -17259,8 +15821,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/amicable-pairs", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/amicable-pairs" }, "id": "5949b579404977fbaefcd737", "title": "Amicable pairs" @@ -17271,8 +15832,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/averagesmode", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/averagesmode" }, "id": "594d8d0ab97724821379b1e6", "title": "Averages/Mode" @@ -17283,8 +15843,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/averagespythagorean-means", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/averagespythagorean-means" }, "id": "594d966a1467eb84194f0086", "title": "Averages/Pythagorean means" @@ -17295,8 +15854,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/averagesroot-mean-square", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/averagesroot-mean-square" }, "id": "594da033de4190850b893874", "title": "Averages/Root mean square" @@ -17307,8 +15865,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/babbage-problem", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/babbage-problem" }, "id": "594db4d0dedb4c06a2a4cefd", "title": "Babbage problem" @@ -17319,8 +15876,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/balanced-brackets", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/balanced-brackets" }, "id": "594dc6c729e5700999302b45", "title": "Balanced brackets" @@ -17331,8 +15887,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/circles-of-given-radius-through-two-points", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/circles-of-given-radius-through-two-points" }, "id": "5951815dd895584b06884620", "title": "Circles of given radius through two points" @@ -17343,8 +15898,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/closest-pair-problem", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/closest-pair-problem" }, "id": "5951a53863c8a34f02bf1bdc", "title": "Closest-pair problem" @@ -17355,8 +15909,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/combinations", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/combinations" }, "id": "5958469238c0d8d2632f46db", "title": "Combinations" @@ -17367,8 +15920,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/comma-quibbling", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/comma-quibbling" }, "id": "596e414344c3b2872167f0fe", "title": "Comma quibbling" @@ -17379,8 +15931,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/compare-a-list-of-strings", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/compare-a-list-of-strings" }, "id": "596e457071c35c882915b3e4", "title": "Compare a list of strings" @@ -17391,8 +15942,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/convert-seconds-to-compound-duration", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/convert-seconds-to-compound-duration" }, "id": "596fd036dc1ab896c5db98b1", "title": "Convert seconds to compound duration" @@ -17403,8 +15953,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/count-occurrences-of-a-substring", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/count-occurrences-of-a-substring" }, "id": "596fda99c69f779975a1b67d", "title": "Count occurrences of a substring" @@ -17415,8 +15964,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/count-the-coins", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/count-the-coins" }, "id": "59713bd26bdeb8a594fb9413", "title": "Count the coins" @@ -17427,8 +15975,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/cramers-rule", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/cramers-rule" }, "id": "59713da0a428c1a62d7db430", "title": "Cramer's rule" @@ -17439,8 +15986,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/cumulative-standard-deviation", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/cumulative-standard-deviation" }, "id": "5a23c84252665b21eecc7e03", "title": "Cumulative standard deviation" @@ -17451,8 +15997,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/cusip", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/cusip" }, "id": "5a23c84252665b21eecc7e05", "title": "CUSIP" @@ -17463,8 +16008,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/cut-a-rectangle", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/cut-a-rectangle" }, "id": "5a23c84252665b21eecc7e06", "title": "Cut a rectangle" @@ -17475,8 +16019,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/date-format", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/date-format" }, "id": "59669d08d75b60482359409f", "title": "Date format" @@ -17487,8 +16030,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/date-manipulation", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/date-manipulation" }, "id": "5966c21cf732a95f1b67dd28", "title": "Date manipulation" @@ -17499,8 +16041,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/day-of-the-week", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/day-of-the-week" }, "id": "5966f99c45e8976909a85575", "title": "Day of the week" @@ -17511,8 +16052,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/deal-cards-for-freecell", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/deal-cards-for-freecell" }, "id": "59694356a6e7011f7f1c5f4e", "title": "Deal cards for FreeCell" @@ -17523,8 +16063,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/deepcopy", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/deepcopy" }, "id": "596a8888ab7c01048de257d5", "title": "Deepcopy" @@ -17535,8 +16074,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/define-a-primitive-data-type", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/define-a-primitive-data-type" }, "id": "597089c87eec450c68aa1643", "title": "Define a primitive data type" @@ -17547,8 +16085,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/department-numbers", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/department-numbers" }, "id": "59f40b17e79dbf1ab720ed7a", "title": "Department Numbers" @@ -17559,8 +16096,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/discordian-date", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/discordian-date" }, "id": "59f4eafba0343628bb682785", "title": "Discordian date" @@ -17571,8 +16107,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/dot-product", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/dot-product" }, "id": "5a23c84252665b21eecc7e1e", "title": "Dot product" @@ -17583,8 +16118,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/element-wise-operations", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/element-wise-operations" }, "id": "599c333915e0ea32d04d4bec", "title": "Element-wise operations" @@ -17595,8 +16129,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/emirp-primes", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/emirp-primes" }, "id": "599d0ba974141b0f508b37d5", "title": "Emirp primes" @@ -17607,8 +16140,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/entropy", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/entropy" }, "id": "599d15309e88c813a40baf58", "title": "Entropy" @@ -17619,8 +16151,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/equilibrium-index", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/equilibrium-index" }, "id": "5987fd532b954e0f21b5d3f6", "title": "Equilibrium index" @@ -17631,8 +16162,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/ethiopian-multiplication", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/ethiopian-multiplication" }, "id": "599d1566a02b571412643b84", "title": "Ethiopian multiplication" @@ -17643,8 +16173,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/euler-method", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/euler-method" }, "id": "59880443fb36441083c6c20e", "title": "Euler method" @@ -17655,8 +16184,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/evaluate-binomial-coefficients", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/evaluate-binomial-coefficients" }, "id": "598de241872ef8353c58a7a2", "title": "Evaluate binomial coefficients" @@ -17667,8 +16195,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/execute-a-markov-algorithm", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/execute-a-markov-algorithm" }, "id": "59e09e6d412c5939baa02d16", "title": "Execute a Markov algorithm" @@ -17679,8 +16206,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/execute-brain", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/execute-brain" }, "id": "59e0a8df964e4540d5abe599", "title": "Execute Brain****" @@ -17691,8 +16217,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/extensible-prime-generator", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/extensible-prime-generator" }, "id": "598ee8b91b410510ae82efef", "title": "Extensible prime generator" @@ -17703,8 +16228,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/factorial", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/factorial" }, "id": "597b2b2a2702b44414742771", "title": "Factorial" @@ -17715,8 +16239,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/factors-of-a-mersenne-number", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/factors-of-a-mersenne-number" }, "id": "598eea87e5cf4b116c3ff81a", "title": "Factors of a Mersenne number" @@ -17727,8 +16250,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/factors-of-an-integer", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/factors-of-an-integer" }, "id": "597f1e7fbc206f0e9ba95dc4", "title": "Factors of an integer" @@ -17739,8 +16261,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/farey-sequence", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/farey-sequence" }, "id": "59c3ec9f15068017c96eb8a3", "title": "Farey sequence" @@ -17751,8 +16272,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/fibonacci-n-step-number-sequences", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/fibonacci-n-step-number-sequences" }, "id": "598eef80ba501f1268170e1e", "title": "Fibonacci n-step number sequences" @@ -17763,8 +16283,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/fibonacci-sequence", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/fibonacci-sequence" }, "id": "597f24c1dda4e70f53c79c81", "title": "Fibonacci sequence" @@ -17775,8 +16294,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/fibonacci-word", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/fibonacci-word" }, "id": "5992e222d397f00d21122931", "title": "Fibonacci word" @@ -17787,8 +16305,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/fizzbuzz", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/fizzbuzz" }, "id": "5e9ddb06ec35240f39657419", "title": "FizzBuzz" @@ -17799,8 +16316,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/fractran", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/fractran" }, "id": "5a7dad05be01840e1778a0d1", "title": "Fractran" @@ -17811,8 +16327,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/gamma-function", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/gamma-function" }, "id": "5a23c84252665b21eecc7e76", "title": "Gamma function" @@ -17823,8 +16338,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/gaussian-elimination", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/gaussian-elimination" }, "id": "5a23c84252665b21eecc7e77", "title": "Gaussian elimination" @@ -17835,8 +16349,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/general-fizzbuzz", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/general-fizzbuzz" }, "id": "5a23c84252665b21eecc7e78", "title": "General FizzBuzz" @@ -17847,8 +16360,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/generate-lower-case-ascii-alphabet", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/generate-lower-case-ascii-alphabet" }, "id": "5a23c84252665b21eecc7e7a", "title": "Generate lower case ASCII alphabet" @@ -17859,8 +16371,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/generatorexponential", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/generatorexponential" }, "id": "5a23c84252665b21eecc7e7b", "title": "Generator/Exponential" @@ -17871,8 +16382,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/gray-code", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/gray-code" }, "id": "5a23c84252665b21eecc7e80", "title": "Gray code" @@ -17883,8 +16393,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/greatest-common-divisor", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/greatest-common-divisor" }, "id": "5a23c84252665b21eecc7e82", "title": "Greatest common divisor" @@ -17895,8 +16404,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/greatest-subsequential-sum", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/greatest-subsequential-sum" }, "id": "5a23c84252665b21eecc7e84", "title": "Greatest subsequential sum" @@ -17907,8 +16415,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/hailstone-sequence", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/hailstone-sequence" }, "id": "595608ff8bcd7a50bd490181", "title": "Hailstone sequence" @@ -17919,8 +16426,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/happy-numbers", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/happy-numbers" }, "id": "594810f028c0303b75339ad1", "title": "Happy numbers" @@ -17931,8 +16437,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/harshad-or-niven-series", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/harshad-or-niven-series" }, "id": "595668ca4cfe1af2fb9818d4", "title": "Harshad or Niven series" @@ -17943,8 +16448,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/hash-from-two-arrays", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/hash-from-two-arrays" }, "id": "595671d4d2cdc305f0d5b36f", "title": "Hash from two arrays" @@ -17955,8 +16459,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/hash-join", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/hash-join" }, "id": "5956795bc9e2c415eb244de1", "title": "Hash join" @@ -17967,8 +16470,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/heronian-triangles", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/heronian-triangles" }, "id": "595b98f8b5a2245e243aa831", "title": "Heronian triangles" @@ -17979,8 +16481,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/hofstadter-figure-figure-sequences", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/hofstadter-figure-figure-sequences" }, "id": "59622f89e4e137560018a40e", "title": "Hofstadter Figure-Figure sequences" @@ -17991,8 +16492,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/hofstadter-q-sequence", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/hofstadter-q-sequence" }, "id": "59637c4d89f6786115efd814", "title": "Hofstadter Q sequence" @@ -18003,8 +16503,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/i-before-e-except-after-c", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/i-before-e-except-after-c" }, "id": "5a23c84252665b21eecc7eb0", "title": "I before E except after C" @@ -18015,8 +16514,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/iban", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/iban" }, "id": "5a23c84252665b21eecc7eaf", "title": "IBAN" @@ -18027,8 +16525,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/identity-matrix", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/identity-matrix" }, "id": "5a23c84252665b21eecc7eb1", "title": "Identity matrix" @@ -18039,8 +16536,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/iterated-digits-squaring", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/iterated-digits-squaring" }, "id": "5a23c84252665b21eecc7ec1", "title": "Iterated digits squaring" @@ -18051,8 +16547,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/jaro-distance", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/jaro-distance" }, "id": "5a23c84252665b21eecc7ec2", "title": "Jaro distance" @@ -18063,8 +16558,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/jortsort", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/jortsort" }, "id": "5a23c84252665b21eecc7ec4", "title": "JortSort" @@ -18075,8 +16569,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/josephus-problem", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/josephus-problem" }, "id": "5a23c84252665b21eecc7ec5", "title": "Josephus problem" @@ -18087,8 +16580,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/k-d-tree", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/k-d-tree" }, "id": "5a23c84252665b21eecc7ecb", "title": "K-d tree" @@ -18099,8 +16591,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/kaprekar-numbers", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/kaprekar-numbers" }, "id": "5a23c84252665b21eecc7eca", "title": "Kaprekar numbers" @@ -18111,8 +16602,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/knapsack-problem0-1", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/knapsack-problem0-1" }, "id": "5a23c84252665b21eecc7ed1", "title": "Knapsack problem/0-1" @@ -18123,8 +16613,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/knapsack-problembounded", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/knapsack-problembounded" }, "id": "5a23c84252665b21eecc7ed2", "title": "Knapsack problem/Bounded" @@ -18135,8 +16624,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/knapsack-problemcontinuous", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/knapsack-problemcontinuous" }, "id": "5a23c84252665b21eecc7ed3", "title": "Knapsack problem/Continuous" @@ -18147,8 +16635,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/knapsack-problemunbounded", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/knapsack-problemunbounded" }, "id": "5a23c84252665b21eecc7ed4", "title": "Knapsack problem/Unbounded" @@ -18159,8 +16646,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/knights-tour", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/knights-tour" }, "id": "5a23c84252665b21eecc7ed5", "title": "Knight's tour" @@ -18171,8 +16657,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/largest-int-from-concatenated-ints", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/largest-int-from-concatenated-ints" }, "id": "5a23c84252665b21eecc7edb", "title": "Largest int from concatenated ints" @@ -18183,8 +16668,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/last-friday-of-each-month", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/last-friday-of-each-month" }, "id": "5a23c84252665b21eecc7edc", "title": "Last Friday of each month" @@ -18195,8 +16679,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/last-letter-first-letter", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/last-letter-first-letter" }, "id": "5e4ce2b6ac708cc68c1df25e", "title": "Last letter-first letter" @@ -18207,8 +16690,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/leap-year", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/leap-year" }, "id": "5a23c84252665b21eecc7ede", "title": "Leap year" @@ -18219,8 +16701,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/least-common-multiple", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/least-common-multiple" }, "id": "5a23c84252665b21eecc7edf", "title": "Least common multiple" @@ -18231,8 +16712,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/left-factorials", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/left-factorials" }, "id": "5a23c84252665b21eecc7ee0", "title": "Left factorials" @@ -18243,8 +16723,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/letter-frequency", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/letter-frequency" }, "id": "5e4ce2bbac708cc68c1df25f", "title": "Letter frequency" @@ -18255,8 +16734,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/levenshtein-distance", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/levenshtein-distance" }, "id": "5e4ce2eaac708cc68c1df260", "title": "Levenshtein distance" @@ -18267,8 +16745,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/linear-congruential-generator", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/linear-congruential-generator" }, "id": "5e4ce2f5ac708cc68c1df261", "title": "Linear congruential generator" @@ -18279,8 +16756,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/long-multiplication", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/long-multiplication" }, "id": "5e4ce2a1ac708cc68c1df25d", "title": "Long multiplication" @@ -18291,8 +16767,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/longest-common-subsequence", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/longest-common-subsequence" }, "id": "5e6dd1278e6ca105cde40ea9", "title": "Longest common subsequence" @@ -18303,8 +16778,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/longest-increasing-subsequence", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/longest-increasing-subsequence" }, "id": "5e6dd139859c290b6ab80292", "title": "Longest increasing subsequence" @@ -18315,8 +16789,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/longest-string-challenge", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/longest-string-challenge" }, "id": "5e6dd14192286d95fc43046e", "title": "Longest string challenge" @@ -18327,8 +16800,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/look-and-say-sequence", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/look-and-say-sequence" }, "id": "5e6dd14797f5ce267c2f19d0", "title": "Look-and-say sequence" @@ -18339,8 +16811,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/loop-over-multiple-arrays-simultaneously", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/loop-over-multiple-arrays-simultaneously" }, "id": "5e6dd15004c88cf00d2a78b3", "title": "Loop over multiple arrays simultaneously" @@ -18351,8 +16822,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/lu-decomposition", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/lu-decomposition" }, "id": "5e6decd8ec8d7db960950d1c", "title": "LU decomposition" @@ -18363,8 +16833,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/lucas-lehmer-test", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/lucas-lehmer-test" }, "id": "5e6dee7749a0b85a3f1fc7d5", "title": "Lucas-Lehmer test" @@ -18375,8 +16844,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/ludic-numbers", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/ludic-numbers" }, "id": "5ea281203167d2b0bdefca00", "title": "Ludic numbers" @@ -18387,8 +16855,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/luhn-test-of-credit-card-numbers", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/luhn-test-of-credit-card-numbers" }, "id": "5ea28156e79528a9ab248f27", "title": "Luhn test of credit card numbers" @@ -18399,8 +16866,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/lychrel-numbers", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/lychrel-numbers" }, "id": "5ea2815a8640bcc6cb7dab3c", "title": "Lychrel numbers" @@ -18411,8 +16877,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/lzw-compression", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/lzw-compression" }, "id": "5ea2815e364d9a2222ea55f8", "title": "LZW compression" @@ -18423,8 +16888,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/s-expressions", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/s-expressions" }, "id": "59667989bf71cf555dd5d2ff", "title": "S-Expressions" @@ -18435,8 +16899,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/sailors-coconuts-and-a-monkey-problem", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/sailors-coconuts-and-a-monkey-problem" }, "id": "59da22823d04c95919d46269", "title": "Sailors, coconuts and a monkey problem" @@ -18447,8 +16910,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/search-a-list-of-records", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/search-a-list-of-records" }, "id": "5eb3e497b8d6d7f63c5517ea", "title": "Search a list of records" @@ -18459,8 +16921,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/sedols", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/sedols" }, "id": "59d9c6bc214c613ba73ff012", "title": "SEDOLs" @@ -18471,8 +16932,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/self-describing-numbers", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/self-describing-numbers" }, "id": "5eaf48389ee512d4d103684b", "title": "Self Describing Numbers" @@ -18483,8 +16943,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/self-referential-sequence", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/self-referential-sequence" }, "id": "5eb3e4a21f462f409d656c73", "title": "Self-referential sequence" @@ -18495,8 +16954,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/semiprime", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/semiprime" }, "id": "5eb3e4aa847216613aa81983", "title": "Semiprime" @@ -18507,8 +16965,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/set-consolidation", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/set-consolidation" }, "id": "5eb3e4af7d0e7b760b46cedc", "title": "Set consolidation" @@ -18519,8 +16976,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/set-of-real-numbers", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/set-of-real-numbers" }, "id": "5eb3e4b20aa93c437f9e9717", "title": "Set of real numbers" @@ -18531,8 +16987,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/sha-1", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/sha-1" }, "id": "5eb3e4b5f629b9a07429a5d2", "title": "SHA-1" @@ -18543,8 +16998,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/sha-256", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/sha-256" }, "id": "5eb3e4c3a894c333d2811a3f", "title": "SHA-256" @@ -18555,8 +17009,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/sort-an-array-of-composite-structures", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/sort-an-array-of-composite-structures" }, "id": "5a23c84252665b21eecc7ffe", "title": "Sort an array of composite structures" @@ -18567,8 +17020,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/sort-disjoint-sublist", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/sort-disjoint-sublist" }, "id": "5a23c84252665b21eecc8000", "title": "Sort disjoint sublist" @@ -18579,8 +17031,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/sort-stability", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/sort-stability" }, "id": "5a23c84252665b21eecc8014", "title": "Sort stability" @@ -18591,8 +17042,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/sort-using-a-custom-comparator", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/sort-using-a-custom-comparator" }, "id": "5a23c84252665b21eecc8016", "title": "Sort using a custom comparator" @@ -18603,8 +17053,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/sorting-algorithmsbead-sort", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/sorting-algorithmsbead-sort" }, "id": "5a23c84252665b21eecc8001", "title": "Sorting algorithms/Bead sort" @@ -18615,8 +17064,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/sorting-algorithmsbogosort", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/sorting-algorithmsbogosort" }, "id": "5a23c84252665b21eecc8002", "title": "Sorting algorithms/Bogosort" @@ -18627,8 +17075,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/sorting-algorithmscocktail-sort", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/sorting-algorithmscocktail-sort" }, "id": "5a23c84252665b21eecc8004", "title": "Sorting algorithms/Cocktail sort" @@ -18639,8 +17086,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/sorting-algorithmscomb-sort", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/sorting-algorithmscomb-sort" }, "id": "5a23c84252665b21eecc8005", "title": "Sorting algorithms/Comb sort" @@ -18651,8 +17097,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/sorting-algorithmsgnome-sort", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/sorting-algorithmsgnome-sort" }, "id": "5a23c84252665b21eecc8007", "title": "Sorting algorithms/Gnome sort" @@ -18663,8 +17108,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/sorting-algorithmspancake-sort", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/sorting-algorithmspancake-sort" }, "id": "5a23c84252665b21eecc800b", "title": "Sorting algorithms/Pancake sort" @@ -18675,8 +17119,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/sorting-algorithmspermutation-sort", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/sorting-algorithmspermutation-sort" }, "id": "5a23c84252665b21eecc800c", "title": "Sorting algorithms/Permutation sort" @@ -18687,8 +17130,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/sorting-algorithmsshell-sort", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/sorting-algorithmsshell-sort" }, "id": "5a23c84252665b21eecc8010", "title": "Sorting algorithms/Shell sort" @@ -18699,8 +17141,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/sorting-algorithmsstooge-sort", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/sorting-algorithmsstooge-sort" }, "id": "5a23c84252665b21eecc8012", "title": "Sorting algorithms/Stooge sort" @@ -18711,8 +17152,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/sorting-algorithmsstrand-sort", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/sorting-algorithmsstrand-sort" }, "id": "5a23c84252665b21eecc8013", "title": "Sorting algorithms/Strand sort" @@ -18723,8 +17163,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/soundex", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/soundex" }, "id": "5a23c84252665b21eecc8017", "title": "Soundex" @@ -18735,8 +17174,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/spiral-matrix", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/spiral-matrix" }, "id": "5a23c84252665b21eecc801c", "title": "Spiral matrix" @@ -18747,8 +17185,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/split-a-character-string-based-on-change-of-character", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/split-a-character-string-based-on-change-of-character" }, "id": "5a23c84252665b21eecc801d", "title": "Split a character string based on change of character" @@ -18759,8 +17196,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/state-name-puzzle", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/state-name-puzzle" }, "id": "5a23c84252665b21eecc8024", "title": "State name puzzle" @@ -18771,8 +17207,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/stern-brocot-sequence", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/stern-brocot-sequence" }, "id": "5a23c84252665b21eecc8028", "title": "Stern-Brocot sequence" @@ -18783,8 +17218,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/straddling-checkerboard", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/straddling-checkerboard" }, "id": "5a23c84252665b21eecc8029", "title": "Straddling checkerboard" @@ -18795,8 +17229,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/stream-merge", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/stream-merge" }, "id": "5a23c84252665b21eecc802a", "title": "Stream Merge" @@ -18807,8 +17240,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/strip-control-codes-and-extended-characters-from-a-string", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/strip-control-codes-and-extended-characters-from-a-string" }, "id": "5a23c84252665b21eecc8036", "title": "Strip control codes and extended characters from a string" @@ -18819,8 +17251,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/subleq", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/subleq" }, "id": "5a23c84252665b21eecc8038", "title": "Subleq" @@ -18831,8 +17262,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/sudoku", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/sudoku" }, "id": "5a23c84252665b21eecc803c", "title": "Sudoku" @@ -18843,8 +17273,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/sum-digits-of-an-integer", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/sum-digits-of-an-integer" }, "id": "5a23c84252665b21eecc803f", "title": "Sum digits of an integer" @@ -18855,8 +17284,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/sum-multiples-of-3-and-5", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/sum-multiples-of-3-and-5" }, "id": "5a23c84252665b21eecc8040", "title": "Sum multiples of 3 and 5" @@ -18867,8 +17295,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/sum-of-a-series", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/sum-of-a-series" }, "id": "5a23c84252665b21eecc8041", "title": "Sum of a series" @@ -18879,8 +17306,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/sum-of-squares", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/sum-of-squares" }, "id": "5a23c84252665b21eecc8042", "title": "Sum of squares" @@ -18891,8 +17317,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/sum-to-100", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/sum-to-100" }, "id": "5a23c84252665b21eecc8043", "title": "Sum to 100" @@ -18903,8 +17328,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/sutherland-hodgman-polygon-clipping", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/sutherland-hodgman-polygon-clipping" }, "id": "5a23c84252665b21eecc8045", "title": "Sutherland-Hodgman polygon clipping" @@ -18915,8 +17339,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/symmetric-difference", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/symmetric-difference" }, "id": "5a23c84252665b21eecc8046", "title": "Symmetric difference" @@ -18927,8 +17350,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/taxicab-numbers", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/taxicab-numbers" }, "id": "594ecc0d9a8cf816e3340187", "title": "Taxicab numbers" @@ -18939,8 +17361,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/tokenize-a-string-with-escaping", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/tokenize-a-string-with-escaping" }, "id": "594faaab4e2a8626833e9c3d", "title": "Tokenize a string with escaping" @@ -18951,8 +17372,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/top-rank-per-group", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/top-rank-per-group" }, "id": "595011cba5a81735713873bd", "title": "Top rank per group" @@ -18963,8 +17383,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/topological-sort", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/topological-sort" }, "id": "594fa2746886f41f7d8bf225", "title": "Topological sort" @@ -18975,8 +17394,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/towers-of-hanoi", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/towers-of-hanoi" }, "id": "5951ed8945deab770972ae56", "title": "Towers of Hanoi" @@ -18987,8 +17405,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/vector-cross-product", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/vector-cross-product" }, "id": "594810f028c0303b75339ad2", "title": "Vector cross product" @@ -18999,8 +17416,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/vector-dot-product", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/vector-dot-product" }, "id": "594810f028c0303b75339ad3", "title": "Vector dot product" @@ -19011,8 +17427,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/word-frequency", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/word-frequency" }, "id": "5e94a54cc7b022105bf0fd2c", "title": "Word frequency" @@ -19023,8 +17438,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/word-wrap", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/word-wrap" }, "id": "594810f028c0303b75339ad4", "title": "Word wrap" @@ -19035,8 +17449,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/y-combinator", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/y-combinator" }, "id": "594810f028c0303b75339ad5", "title": "Y combinator" @@ -19047,8 +17460,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/zeckendorf-number-representation", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/zeckendorf-number-representation" }, "id": "594810f028c0303b75339ad6", "title": "Zeckendorf number representation" @@ -19059,8 +17471,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/zhang-suen-thinning-algorithm", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/zhang-suen-thinning-algorithm" }, "id": "594810f028c0303b75339ad7", "title": "Zhang-Suen thinning algorithm" @@ -19071,8 +17482,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/rosetta-code/zig-zag-matrix", - "blockName": "Rosetta Code" + "slug": "/learn/coding-interview-prep/rosetta-code/zig-zag-matrix" }, "id": "594810f028c0303b75339ad8", "title": "Zig-zag matrix" @@ -19083,8 +17493,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/take-home-projects/build-a-freecodecamp-forum-homepage", - "blockName": "Take Home Projects" + "slug": "/learn/coding-interview-prep/take-home-projects/build-a-freecodecamp-forum-homepage" }, "id": "bd7156d8c242eddfaeb5bd13", "title": "Build a freeCodeCamp Forum Homepage" @@ -19095,8 +17504,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/take-home-projects/build-a-light-bright-app", - "blockName": "Take Home Projects" + "slug": "/learn/coding-interview-prep/take-home-projects/build-a-light-bright-app" }, "id": "5a5d02bd919fcf9ca8cf46cb", "title": "Build a Light-Bright App" @@ -19107,8 +17515,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/take-home-projects/build-a-nightlife-coordination-app", - "blockName": "Take Home Projects" + "slug": "/learn/coding-interview-prep/take-home-projects/build-a-nightlife-coordination-app" }, "id": "bd7158d8c443eddfaeb5bdff", "title": "Build a Nightlife Coordination App" @@ -19119,8 +17526,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/take-home-projects/build-a-pinterest-clone", - "blockName": "Take Home Projects" + "slug": "/learn/coding-interview-prep/take-home-projects/build-a-pinterest-clone" }, "id": "bd7158d8c443eddfaeb5bdee", "title": "Build a Pinterest Clone" @@ -19131,8 +17537,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/take-home-projects/build-a-pong-game", - "blockName": "Take Home Projects" + "slug": "/learn/coding-interview-prep/take-home-projects/build-a-pong-game" }, "id": "5a4b7fcdb66f799f199e11db", "title": "Build a Pong Game" @@ -19143,8 +17548,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/take-home-projects/build-a-recipe-box", - "blockName": "Take Home Projects" + "slug": "/learn/coding-interview-prep/take-home-projects/build-a-recipe-box" }, "id": "bd7155d8c242eddfaeb5bd13", "title": "Build a Recipe Box" @@ -19155,8 +17559,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/take-home-projects/build-a-roguelike-dungeon-crawler-game", - "blockName": "Take Home Projects" + "slug": "/learn/coding-interview-prep/take-home-projects/build-a-roguelike-dungeon-crawler-game" }, "id": "bd7153d8c242eddfaeb5bd13", "title": "Build a Roguelike Dungeon Crawler Game" @@ -19167,8 +17570,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/take-home-projects/build-a-memory-light-game", - "blockName": "Take Home Projects" + "slug": "/learn/coding-interview-prep/take-home-projects/build-a-memory-light-game" }, "id": "bd7158d8c442eddfaeb5bd1c", "title": "Build a Memory Light Game" @@ -19179,8 +17581,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/take-home-projects/build-a-tic-tac-toe-game", - "blockName": "Take Home Projects" + "slug": "/learn/coding-interview-prep/take-home-projects/build-a-tic-tac-toe-game" }, "id": "bd7158d8c442eedfaeb5bd1c", "title": "Build a Tic Tac Toe Game" @@ -19191,8 +17592,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/take-home-projects/build-a-voting-app", - "blockName": "Take Home Projects" + "slug": "/learn/coding-interview-prep/take-home-projects/build-a-voting-app" }, "id": "bd7158d8c443eddfaeb5bdef", "title": "Build a Voting App" @@ -19203,8 +17603,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/take-home-projects/build-a-wikipedia-viewer", - "blockName": "Take Home Projects" + "slug": "/learn/coding-interview-prep/take-home-projects/build-a-wikipedia-viewer" }, "id": "bd7158d8c442eddfaeb5bd19", "title": "Build a Wikipedia Viewer" @@ -19215,8 +17614,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/take-home-projects/build-an-image-search-abstraction-layer", - "blockName": "Take Home Projects" + "slug": "/learn/coding-interview-prep/take-home-projects/build-an-image-search-abstraction-layer" }, "id": "bd7158d8c443edefaeb5bdee", "title": "Build an Image Search Abstraction Layer" @@ -19227,8 +17625,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/take-home-projects/build-the-game-of-life", - "blockName": "Take Home Projects" + "slug": "/learn/coding-interview-prep/take-home-projects/build-the-game-of-life" }, "id": "bd7154d8c242eddfaeb5bd13", "title": "Build the Game of Life" @@ -19239,8 +17636,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/take-home-projects/chart-the-stock-market", - "blockName": "Take Home Projects" + "slug": "/learn/coding-interview-prep/take-home-projects/chart-the-stock-market" }, "id": "bd7158d8c443eddfaeb5bd0e", "title": "Chart the Stock Market" @@ -19251,8 +17647,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/take-home-projects/manage-a-book-trading-club", - "blockName": "Take Home Projects" + "slug": "/learn/coding-interview-prep/take-home-projects/manage-a-book-trading-club" }, "id": "bd7158d8c443eddfaeb5bd0f", "title": "Manage a Book Trading Club" @@ -19263,8 +17658,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/take-home-projects/map-data-across-the-globe", - "blockName": "Take Home Projects" + "slug": "/learn/coding-interview-prep/take-home-projects/map-data-across-the-globe" }, "id": "bd7108d8c242eddfaeb5bd13", "title": "Map Data Across the Globe" @@ -19275,8 +17669,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/take-home-projects/p2p-video-chat-application", - "blockName": "Take Home Projects" + "slug": "/learn/coding-interview-prep/take-home-projects/p2p-video-chat-application" }, "id": "bd7150d8c442eddfafb5bd1c", "title": "P2P Video Chat Application" @@ -19287,8 +17680,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/take-home-projects/show-national-contiguity-with-a-force-directed-graph", - "blockName": "Take Home Projects" + "slug": "/learn/coding-interview-prep/take-home-projects/show-national-contiguity-with-a-force-directed-graph" }, "id": "bd7198d8c242eddfaeb5bd13", "title": "Show National Contiguity with a Force Directed Graph" @@ -19299,8 +17691,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/take-home-projects/show-the-local-weather", - "blockName": "Take Home Projects" + "slug": "/learn/coding-interview-prep/take-home-projects/show-the-local-weather" }, "id": "bd7158d8c442eddfaeb5bd10", "title": "Show the Local Weather" @@ -19311,8 +17702,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/coding-interview-prep/take-home-projects/use-the-twitch-json-api", - "blockName": "Take Home Projects" + "slug": "/learn/coding-interview-prep/take-home-projects/use-the-twitch-json-api" }, "id": "bd7158d8c442eddfaeb5bd1f", "title": "Use the Twitch JSON API" @@ -19323,8 +17713,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/how-neural-networks-work/deep-learning-demystified", - "blockName": "How Neural Networks Work" + "slug": "/learn/machine-learning-with-python/how-neural-networks-work/deep-learning-demystified" }, "id": "5e9a0e9ef99a403d019610cc", "title": "Deep Learning Demystified" @@ -19335,8 +17724,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/how-neural-networks-work/how-convolutional-neural-networks-work", - "blockName": "How Neural Networks Work" + "slug": "/learn/machine-learning-with-python/how-neural-networks-work/how-convolutional-neural-networks-work" }, "id": "5e9a0e9ef99a403d019610cd", "title": "How Convolutional Neural Networks work" @@ -19347,8 +17735,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/how-neural-networks-work/how-deep-neural-networks-work", - "blockName": "How Neural Networks Work" + "slug": "/learn/machine-learning-with-python/how-neural-networks-work/how-deep-neural-networks-work" }, "id": "5e9a0e9ef99a403d019610ca", "title": "How Deep Neural Networks Work" @@ -19359,8 +17746,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/how-neural-networks-work/recurrent-neural-networks-rnn-and-long-short-term-memory-lstm", - "blockName": "How Neural Networks Work" + "slug": "/learn/machine-learning-with-python/how-neural-networks-work/recurrent-neural-networks-rnn-and-long-short-term-memory-lstm" }, "id": "5e9a0e9ef99a403d019610cb", "title": "Recurrent Neural Networks RNN and Long Short Term Memory LSTM" @@ -19371,8 +17757,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/machine-learning-with-python-projects/book-recommendation-engine-using-knn", - "blockName": "Machine Learning with Python Projects" + "slug": "/learn/machine-learning-with-python/machine-learning-with-python-projects/book-recommendation-engine-using-knn" }, "id": "5e46f8e3ac417301a38fb92f", "title": "Book Recommendation Engine using KNN" @@ -19383,8 +17768,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/machine-learning-with-python-projects/cat-and-dog-image-classifier", - "blockName": "Machine Learning with Python Projects" + "slug": "/learn/machine-learning-with-python/machine-learning-with-python-projects/cat-and-dog-image-classifier" }, "id": "5e46f8dcac417301a38fb92e", "title": "Cat and Dog Image Classifier" @@ -19395,8 +17779,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/machine-learning-with-python-projects/linear-regression-health-costs-calculator", - "blockName": "Machine Learning with Python Projects" + "slug": "/learn/machine-learning-with-python/machine-learning-with-python-projects/linear-regression-health-costs-calculator" }, "id": "5e46f8edac417301a38fb930", "title": "Linear Regression Health Costs Calculator" @@ -19407,8 +17790,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/machine-learning-with-python-projects/neural-network-sms-text-classifier", - "blockName": "Machine Learning with Python Projects" + "slug": "/learn/machine-learning-with-python/machine-learning-with-python-projects/neural-network-sms-text-classifier" }, "id": "5e46f8edac417301a38fb931", "title": "Neural Network SMS Text Classifier" @@ -19419,8 +17801,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/machine-learning-with-python-projects/rock-paper-scissors", - "blockName": "Machine Learning with Python Projects" + "slug": "/learn/machine-learning-with-python/machine-learning-with-python-projects/rock-paper-scissors" }, "id": "5e46f8d6ac417301a38fb92d", "title": "Rock Paper Scissors" @@ -19431,8 +17812,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/conclusion", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/conclusion" }, "id": "5e8f2f13c4cdbe86b5c72da6", "title": "Conclusion" @@ -19443,8 +17823,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/convolutional-neural-networks-evaluating-the-model", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/convolutional-neural-networks-evaluating-the-model" }, "id": "5e8f2f13c4cdbe86b5c72d99", "title": "Convolutional Neural Networks: Evaluating the Model" @@ -19455,8 +17834,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/convolutional-neural-networks-picking-a-pretrained-model", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/convolutional-neural-networks-picking-a-pretrained-model" }, "id": "5e8f2f13c4cdbe86b5c72d9a", "title": "Convolutional Neural Networks: Picking a Pretrained Model" @@ -19467,8 +17845,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/convolutional-neural-networks-the-convolutional-layer", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/convolutional-neural-networks-the-convolutional-layer" }, "id": "5e8f2f13c4cdbe86b5c72d97", "title": "Convolutional Neural Networks: The Convolutional Layer" @@ -19479,8 +17856,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/convolutional-neural-networks", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/convolutional-neural-networks" }, "id": "5e8f2f13c4cdbe86b5c72d96", "title": "Convolutional Neural Networks" @@ -19491,8 +17867,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/core-learning-algorithms-building-the-model", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/core-learning-algorithms-building-the-model" }, "id": "5e8f2f13c4cdbe86b5c72d8e", "title": "Core Learning Algorithms: Building the Model" @@ -19503,8 +17878,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/core-learning-algorithms-classification", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/core-learning-algorithms-classification" }, "id": "5e8f2f13c4cdbe86b5c72d8d", "title": "Core Learning Algorithms: Classification" @@ -19515,8 +17889,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/core-learning-algorithms-clustering", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/core-learning-algorithms-clustering" }, "id": "5e8f2f13c4cdbe86b5c72d8f", "title": "Core Learning Algorithms: Clustering" @@ -19527,8 +17900,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/core-learning-algorithms-hidden-markov-models", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/core-learning-algorithms-hidden-markov-models" }, "id": "5e8f2f13c4cdbe86b5c72d90", "title": "Core Learning Algorithms: Hidden Markov Models" @@ -19539,8 +17911,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/core-learning-algorithms-the-training-process", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/core-learning-algorithms-the-training-process" }, "id": "5e8f2f13c4cdbe86b5c72d8c", "title": "Core Learning Algorithms: The Training Process" @@ -19551,8 +17922,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/core-learning-algorithms-training-and-testing-data", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/core-learning-algorithms-training-and-testing-data" }, "id": "5e8f2f13c4cdbe86b5c72d8b", "title": "Core Learning Algorithms: Training and Testing Data" @@ -19563,8 +17933,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/core-learning-algorithms-using-probabilities-to-make-predictions", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/core-learning-algorithms-using-probabilities-to-make-predictions" }, "id": "5e8f2f13c4cdbe86b5c72d91", "title": "Core Learning Algorithms: Using Probabilities to make Predictions" @@ -19575,8 +17944,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/core-learning-algorithms-working-with-data", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/core-learning-algorithms-working-with-data" }, "id": "5e8f2f13c4cdbe86b5c72d8a", "title": "Core Learning Algorithms: Working with Data" @@ -19587,8 +17955,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/core-learning-algorithms", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/core-learning-algorithms" }, "id": "5e8f2f13c4cdbe86b5c72d89", "title": "Core Learning Algorithms" @@ -19599,8 +17966,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/creating-a-convolutional-neural-network", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/creating-a-convolutional-neural-network" }, "id": "5e8f2f13c4cdbe86b5c72d98", "title": "Creating a Convolutional Neural Network" @@ -19611,8 +17977,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/introduction-machine-learning-fundamentals", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/introduction-machine-learning-fundamentals" }, "id": "5e8f2f13c4cdbe86b5c72d87", "title": "Introduction: Machine Learning Fundamentals" @@ -19623,8 +17988,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/introduction-to-tensorflow", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/introduction-to-tensorflow" }, "id": "5e8f2f13c4cdbe86b5c72d88", "title": "Introduction to TensorFlow" @@ -19635,8 +17999,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/natural-language-processing-with-rnns-building-the-model", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/natural-language-processing-with-rnns-building-the-model" }, "id": "5e8f2f13c4cdbe86b5c72da1", "title": "Natural Language Processing With RNNs: Building the Model" @@ -19647,8 +18010,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/natural-language-processing-with-rnns-create-a-play-generator", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/natural-language-processing-with-rnns-create-a-play-generator" }, "id": "5e8f2f13c4cdbe86b5c72da0", "title": "Natural Language Processing With RNNs: Create a Play Generator" @@ -19659,8 +18021,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/natural-language-processing-with-rnns-making-predictions", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/natural-language-processing-with-rnns-making-predictions" }, "id": "5e8f2f13c4cdbe86b5c72d9f", "title": "Natural Language Processing With RNNs: Making Predictions" @@ -19671,8 +18032,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/natural-language-processing-with-rnns-part-2", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/natural-language-processing-with-rnns-part-2" }, "id": "5e8f2f13c4cdbe86b5c72d9c", "title": "Natural Language Processing With RNNs: Part 2" @@ -19683,8 +18043,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/natural-language-processing-with-rnns-recurring-neural-networks", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/natural-language-processing-with-rnns-recurring-neural-networks" }, "id": "5e8f2f13c4cdbe86b5c72d9d", "title": "Natural Language Processing With RNNs: Recurring Neural Networks" @@ -19695,8 +18054,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/natural-language-processing-with-rnns-sentiment-analysis", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/natural-language-processing-with-rnns-sentiment-analysis" }, "id": "5e8f2f13c4cdbe86b5c72d9e", "title": "Natural Language Processing With RNNs: Sentiment Analysis" @@ -19707,8 +18065,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/natural-language-processing-with-rnns-training-the-model", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/natural-language-processing-with-rnns-training-the-model" }, "id": "5e8f2f13c4cdbe86b5c72da2", "title": "Natural Language Processing With RNNs: Training the Model" @@ -19719,8 +18076,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/natural-language-processing-with-rnns", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/natural-language-processing-with-rnns" }, "id": "5e8f2f13c4cdbe86b5c72d9b", "title": "Natural Language Processing With RNNs" @@ -19731,8 +18087,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/neural-networks-activation-functions", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/neural-networks-activation-functions" }, "id": "5e8f2f13c4cdbe86b5c72d93", "title": "Neural Networks: Activation Functions" @@ -19743,8 +18098,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/neural-networks-creating-a-model", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/neural-networks-creating-a-model" }, "id": "5e8f2f13c4cdbe86b5c72d95", "title": "Neural Networks: Creating a Model" @@ -19755,8 +18109,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/neural-networks-optimizers", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/neural-networks-optimizers" }, "id": "5e8f2f13c4cdbe86b5c72d94", "title": "Neural Networks: Optimizers" @@ -19767,8 +18120,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/neural-networks-with-tensorflow", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/neural-networks-with-tensorflow" }, "id": "5e8f2f13c4cdbe86b5c72d92", "title": "Neural Networks with TensorFlow" @@ -19779,8 +18131,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/reinforcement-learning-with-q-learning-example", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/reinforcement-learning-with-q-learning-example" }, "id": "5e8f2f13c4cdbe86b5c72da5", "title": "Reinforcement Learning With Q-Learning: Example" @@ -19791,8 +18142,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/reinforcement-learning-with-q-learning-part-2", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/reinforcement-learning-with-q-learning-part-2" }, "id": "5e8f2f13c4cdbe86b5c72da4", "title": "Reinforcement Learning With Q-Learning: Part 2" @@ -19803,8 +18153,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/machine-learning-with-python/tensorflow/reinforcement-learning-with-q-learning", - "blockName": "TensorFlow" + "slug": "/learn/machine-learning-with-python/tensorflow/reinforcement-learning-with-q-learning" }, "id": "5e8f2f13c4cdbe86b5c72da3", "title": "Reinforcement Learning With Q-Learning" @@ -19815,8 +18164,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/relational-database/build-a-celestial-bodies-database-project/build-a-celestial-bodies-database", - "blockName": "Build A Celestial Bodies Database Project" + "slug": "/learn/relational-database/build-a-celestial-bodies-database-project/build-a-celestial-bodies-database" }, "id": "5f1a4ef5d5d6b5ab580fc6ae", "title": "Build a Celestial Bodies Database" @@ -19827,8 +18175,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/relational-database/build-a-number-guessing-game-project/build-a-number-guessing-game", - "blockName": "Build A Number Guessing Game Project" + "slug": "/learn/relational-database/build-a-number-guessing-game-project/build-a-number-guessing-game" }, "id": "602da04c22201c65d2a019f4", "title": "Build a Number Guessing Game" @@ -19839,8 +18186,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/relational-database/build-a-periodic-table-database-project/build-a-periodic-table-database", - "blockName": "Build A Periodic Table Database Project" + "slug": "/learn/relational-database/build-a-periodic-table-database-project/build-a-periodic-table-database" }, "id": "602d9ff222201c65d2a019f2", "title": "Build a Periodic Table Database" @@ -19851,8 +18197,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/relational-database/build-a-salon-appointment-scheduler-project/build-a-salon-appointment-scheduler", - "blockName": "Build A Salon Appointment Scheduler Project" + "slug": "/learn/relational-database/build-a-salon-appointment-scheduler-project/build-a-salon-appointment-scheduler" }, "id": "5f87ac112ae598023a42df1a", "title": "Build a Salon Appointment Scheduler" @@ -19863,8 +18208,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/relational-database/build-a-world-cup-database-project/build-a-world-cup-database", - "blockName": "Build A World Cup Database Project" + "slug": "/learn/relational-database/build-a-world-cup-database-project/build-a-world-cup-database" }, "id": "5f9771307d4d22b9d2b75a94", "title": "Build a World Cup Database" @@ -19875,8 +18219,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/relational-database/learn-advanced-bash-by-building-a-kitty-ipsum-translator/build-a-kitty-ipsum-translator", - "blockName": "Learn Advanced Bash By Building A Kitty Ipsum Translator" + "slug": "/learn/relational-database/learn-advanced-bash-by-building-a-kitty-ipsum-translator/build-a-kitty-ipsum-translator" }, "id": "602da0de22201c65d2a019f6", "title": "Build a Kitty Ipsum Translator" @@ -19887,8 +18230,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/relational-database/learn-bash-and-sql-by-building-a-bike-rental-shop/build-a-bike-rental-shop", - "blockName": "Learn Bash and Sql By Building A Bike Rental Shop" + "slug": "/learn/relational-database/learn-bash-and-sql-by-building-a-bike-rental-shop/build-a-bike-rental-shop" }, "id": "5f5b969a05380d2179fe6e18", "title": "Build a Bike Rental Shop" @@ -19899,8 +18241,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/relational-database/learn-bash-by-building-a-boilerplate/build-a-boilerplate", - "blockName": "Learn Bash By Building A Boilerplate" + "slug": "/learn/relational-database/learn-bash-by-building-a-boilerplate/build-a-boilerplate" }, "id": "5ea8adfab628f68d805bfc5e", "title": "Build a Boilerplate" @@ -19911,8 +18252,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/relational-database/learn-bash-scripting-by-building-five-programs/build-five-programs", - "blockName": "Learn Bash Scripting By Building Five Programs" + "slug": "/learn/relational-database/learn-bash-scripting-by-building-five-programs/build-five-programs" }, "id": "5f5904ac738bc2fa9efecf5a", "title": "Build Five Programs" @@ -19923,8 +18263,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/relational-database/learn-git-by-building-an-sql-reference-object/build-an-sql-reference-object", - "blockName": "Learn Git By Building An Sql Reference Object" + "slug": "/learn/relational-database/learn-git-by-building-an-sql-reference-object/build-an-sql-reference-object" }, "id": "5fa323cdaf6a73463d590659", "title": "Build an SQL Reference Object" @@ -19935,8 +18274,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/relational-database/learn-nano-by-building-a-castle/build-a-castle", - "blockName": "Learn Nano By Building A Castle" + "slug": "/learn/relational-database/learn-nano-by-building-a-castle/build-a-castle" }, "id": "5f32db63eb37f7e17323f459", "title": "Build a Castle" @@ -19947,8 +18285,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/relational-database/learn-relational-databases-by-building-a-mario-database/build-a-mario-database", - "blockName": "Learn Relational Databases By Building A Mario Database" + "slug": "/learn/relational-database/learn-relational-databases-by-building-a-mario-database/build-a-mario-database" }, "id": "5f2c289f164c29556da632fd", "title": "Build a Mario Database" @@ -19959,8 +18296,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/relational-database/learn-sql-by-building-a-student-database-part-1/build-a-student-database-part-1", - "blockName": "Learn Sql By Building A Student Database Part 1" + "slug": "/learn/relational-database/learn-sql-by-building-a-student-database-part-1/build-a-student-database-part-1" }, "id": "602da0c222201c65d2a019f5", "title": "Build a Student Database: Part 1" @@ -19971,8 +18307,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/relational-database/learn-sql-by-building-a-student-database-part-2/build-a-student-database-part-2", - "blockName": "Learn Sql By Building A Student Database Part 2" + "slug": "/learn/relational-database/learn-sql-by-building-a-student-database-part-2/build-a-student-database-part-2" }, "id": "618590adb0730ca724e37672", "title": "Build a Student Database: Part 2" @@ -19983,8 +18318,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/build-a-personal-portfolio-webpage-project/build-a-personal-portfolio-webpage", - "blockName": "Build A Personal Portfolio Webpage Project" + "slug": "/learn/2022/responsive-web-design/build-a-personal-portfolio-webpage-project/build-a-personal-portfolio-webpage" }, "id": "bd7158d8c242eddfaeb5bd13", "title": "Build a Personal Portfolio Webpage" @@ -19995,8 +18329,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/build-a-product-landing-page-project/build-a-product-landing-page", - "blockName": "Build A Product Landing Page Project" + "slug": "/learn/2022/responsive-web-design/build-a-product-landing-page-project/build-a-product-landing-page" }, "id": "587d78af367417b2b2512b04", "title": "Build a Product Landing Page" @@ -20007,8 +18340,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/build-a-survey-form-project/build-a-survey-form", - "blockName": "Build A Survey Form Project" + "slug": "/learn/2022/responsive-web-design/build-a-survey-form-project/build-a-survey-form" }, "id": "587d78af367417b2b2512b03", "title": "Build a Survey Form" @@ -20019,8 +18351,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/build-a-technical-documentation-page-project/build-a-technical-documentation-page", - "blockName": "Build A Technical Documentation Page Project" + "slug": "/learn/2022/responsive-web-design/build-a-technical-documentation-page-project/build-a-technical-documentation-page" }, "id": "587d78b0367417b2b2512b05", "title": "Build a Technical Documentation Page" @@ -20031,8 +18362,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/build-a-tribute-page-project/build-a-tribute-page", - "blockName": "Build A Tribute Page Project" + "slug": "/learn/2022/responsive-web-design/build-a-tribute-page-project/build-a-tribute-page" }, "id": "bd7158d8c442eddfaeb5bd18", "title": "Build a Tribute Page" @@ -20043,8 +18373,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-2", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-2" }, "id": "613297a923965e0703b64796", "title": "Step 2" @@ -20055,8 +18384,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-3", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-3" }, "id": "61329b210dac0b08047fd6ab", "title": "Step 3" @@ -20067,8 +18395,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-4", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-4" }, "id": "61329d52e5010e08d9b9d66b", "title": "Step 4" @@ -20079,8 +18406,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-5", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-5" }, "id": "6133acc353338c0bba9cb553", "title": "Step 5" @@ -20091,8 +18417,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-6", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-6" }, "id": "6133d11ef548f51f876149e3", "title": "Step 6" @@ -20103,8 +18428,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-7", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-7" }, "id": "613e2546d0594208229ada50", "title": "Step 7" @@ -20115,8 +18439,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-8", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-8" }, "id": "613e275749ebd008e74bb62e", "title": "Step 8" @@ -20127,8 +18450,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-9", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-9" }, "id": "6140827cff96e906bd38fc2b", "title": "Step 9" @@ -20139,8 +18461,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-10", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-10" }, "id": "6140883f74224508174794c0", "title": "Step 10" @@ -20151,8 +18472,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-11", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-11" }, "id": "61408e4ae3e35d08feb260eb", "title": "Step 11" @@ -20163,8 +18483,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-12", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-12" }, "id": "61408f155e798909b6908712", "title": "Step 12" @@ -20175,8 +18494,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-13", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-13" }, "id": "614090d5a22b6f0a5a6b464c", "title": "Step 13" @@ -20187,8 +18505,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-14", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-14" }, "id": "6141fabd6f75610664e908fd", "title": "Step 14" @@ -20199,8 +18516,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-15", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-15" }, "id": "6141fed65b61320743da5894", "title": "Step 15" @@ -20211,8 +18527,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-16", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-16" }, "id": "614202874ca576084fca625f", "title": "Step 16" @@ -20223,8 +18538,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-17", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-17" }, "id": "614206033d366c090ca7dd42", "title": "Step 17" @@ -20235,8 +18549,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-18", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-18" }, "id": "61435e3c0679a306c20f1acc", "title": "Step 18" @@ -20247,8 +18560,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-19", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-19" }, "id": "6143610161323a081b249c19", "title": "Step 19" @@ -20259,8 +18571,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-20", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-20" }, "id": "6143639d5eddc7094161648c", "title": "Step 20" @@ -20271,8 +18582,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-21", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-21" }, "id": "6143908b6aafb00a659ca189", "title": "Step 21" @@ -20283,8 +18593,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-22", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-22" }, "id": "6143920c8eafb00b735746ce", "title": "Step 22" @@ -20295,8 +18604,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-23", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-23" }, "id": "6143931a113bb80c45546287", "title": "Step 23" @@ -20307,8 +18615,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-24", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-24" }, "id": "614394fb41985e0d2012a93e", "title": "Step 24" @@ -20319,8 +18626,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-25", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-25" }, "id": "6143956ed76ed60e012faa51", "title": "Step 25" @@ -20331,8 +18637,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-26", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-26" }, "id": "614396f7ae83f20ea6f9f4b3", "title": "Step 26" @@ -20343,8 +18648,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-27", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-27" }, "id": "6143cb26f7edff2dc28f7da5", "title": "Step 27" @@ -20355,8 +18659,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-28", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-28" }, "id": "6144e818fd5ea704fe56081d", "title": "Step 28" @@ -20367,8 +18670,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-29", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-29" }, "id": "6144f8dc6849e405dd8bb829", "title": "Step 29" @@ -20379,8 +18681,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-30", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-30" }, "id": "6145e6eeaa66c605eb087fe9", "title": "Step 30" @@ -20391,8 +18692,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-32", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-32" }, "id": "6145e8b5080a5f06bb0223d0", "title": "Step 32" @@ -20403,8 +18703,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-33", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-33" }, "id": "6145eb5f08a38a0786c7a80c", "title": "Step 33" @@ -20415,8 +18714,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-34", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-34" }, "id": "6145ed1f22caab087630aaad", "title": "Step 34" @@ -20427,8 +18725,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-35", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-35" }, "id": "6145ee65e2e1530938cb594d", "title": "Step 35" @@ -20439,8 +18736,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-36", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-36" }, "id": "6145f02240ff8f09f7ec913c", "title": "Step 36" @@ -20451,8 +18747,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-37", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-37" }, "id": "6145f14f019a4b0adb94b051", "title": "Step 37" @@ -20463,8 +18758,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-38", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-38" }, "id": "6145f3a5cd9be60b9459cdd6", "title": "Step 38" @@ -20475,8 +18769,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-39", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-39" }, "id": "6145f47393fbe70c4d885f9c", "title": "Step 39" @@ -20487,8 +18780,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-40", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-40" }, "id": "6145f59029474c0d3dc1c8b8", "title": "Step 40" @@ -20499,8 +18791,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-41", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-41" }, "id": "6145f685797bd30df9784e8c", "title": "Step 41" @@ -20511,8 +18802,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-42", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-42" }, "id": "6145f829ac6a920ebf5797d7", "title": "Step 42" @@ -20523,8 +18813,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-43", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-43" }, "id": "6145f8f8bcd4370f6509078e", "title": "Step 43" @@ -20535,8 +18824,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-44", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-44" }, "id": "6145fb5018cb5b100cb2a88c", "title": "Step 44" @@ -20547,8 +18835,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-45", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-45" }, "id": "6145fc3707fc3310c277f5c8", "title": "Step 45" @@ -20559,8 +18846,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-46", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-46" }, "id": "614796cb8086be482d60e0ac", "title": "Step 46" @@ -20571,8 +18857,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-47", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-47" }, "id": "6147a14ef5668b5881ef2297", "title": "Step 47" @@ -20583,8 +18868,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-48", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-48" }, "id": "614878f7a412310647873015", "title": "Step 48" @@ -20595,8 +18879,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-49", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-49" }, "id": "61487b77d4a37707073a64e5", "title": "Step 49" @@ -20607,8 +18890,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-50", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-50" }, "id": "61487da611a65307e78d2c20", "title": "Step 50" @@ -20619,8 +18901,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-51", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-51" }, "id": "61487f703571b60899055cf9", "title": "Step 51" @@ -20631,8 +18912,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-52", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-52" }, "id": "614880dc16070e093e29bc56", "title": "Step 52" @@ -20643,8 +18923,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-53", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-53" }, "id": "614883b6fa720e09fb167de9", "title": "Step 53" @@ -20655,8 +18934,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-54", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-54" }, "id": "614884c1f5d6f30ab3d78cde", "title": "Step 54" @@ -20667,8 +18945,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-55", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-55" }, "id": "61488ecfd05e290b5712e6da", "title": "Step 55" @@ -20679,8 +18956,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-56", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-56" }, "id": "6148d99cdc7acd0c519862cb", "title": "Step 56" @@ -20691,8 +18967,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-57", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-57" }, "id": "6148da157cc0bd0d06df5c0a", "title": "Step 57" @@ -20703,8 +18978,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-58", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-58" }, "id": "6148dc095264000dce348bf5", "title": "Step 58" @@ -20715,8 +18989,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-59", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-59" }, "id": "6148dcaaf2e8750e6cb4501a", "title": "Step 59" @@ -20727,8 +19000,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-60", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-60" }, "id": "6148dd31d210990f0fb140f8", "title": "Step 60" @@ -20739,8 +19011,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-61", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-61" }, "id": "6148defa9c01520fb9d178a0", "title": "Step 61" @@ -20751,8 +19022,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-62", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-62" }, "id": "6148dfab9b54c110577de165", "title": "Step 62" @@ -20763,8 +19033,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-63", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-63" }, "id": "6148e0bcc13efd10f7d7a6a9", "title": "Step 63" @@ -20775,8 +19044,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-64", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-64" }, "id": "6148e161ecec9511941f8833", "title": "Step 64" @@ -20787,8 +19055,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-65", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-65" }, "id": "6148e28706b34912340fd042", "title": "Step 65" @@ -20799,8 +19066,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-66", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-66" }, "id": "6148e335c1edd512d00e4691", "title": "Step 66" @@ -20811,8 +19077,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-67", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-67" }, "id": "6148e41c728f65138addf9cc", "title": "Step 67" @@ -20823,8 +19088,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-68", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-68" }, "id": "6148e5aeb102e3142de026a2", "title": "Step 68" @@ -20835,8 +19099,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-1", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-1" }, "id": "614ccc21ea91ef1736b9b578", "title": "Step 1" @@ -20847,8 +19110,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-31", - "blockName": "Learn Accessibility by Building a Quiz" + "slug": "/learn/2022/responsive-web-design/learn-accessibility-by-building-a-quiz/step-31" }, "id": "6351e7a8684bf5377c4ee7f7", "title": "Step 31" @@ -20859,8 +19121,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-1", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-1" }, "id": "5f33071498eb2472b87ddee4", "title": "Step 1" @@ -20871,8 +19132,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-2", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-2" }, "id": "5f3313e74582ad9d063e3a38", "title": "Step 2" @@ -20883,8 +19143,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-3", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-3" }, "id": "5f331e55dfab7a896e53c3a1", "title": "Step 3" @@ -20895,8 +19154,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-4", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-4" }, "id": "5f3326b143638ee1a09ff1e3", "title": "Step 4" @@ -20907,8 +19165,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-5", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-5" }, "id": "5f33294a6af5e9188dbdb8f3", "title": "Step 5" @@ -20919,8 +19176,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-6", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-6" }, "id": "5f332a88dc25a0fd25c7687a", "title": "Step 6" @@ -20931,8 +19187,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-7", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-7" }, "id": "5f332b23c2045fb843337579", "title": "Step 7" @@ -20943,8 +19198,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-11", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-11" }, "id": "5f344f9c805cd193c33d829c", "title": "Step 11" @@ -20955,8 +19209,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-10", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-10" }, "id": "5f344fad8bf01691e71a30eb", "title": "Step 10" @@ -20967,8 +19220,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-9", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-9" }, "id": "5f344fbc22624a2976425065", "title": "Step 9" @@ -20979,8 +19231,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-8", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-8" }, "id": "5f344fc1520b6719f2e35605", "title": "Step 8" @@ -20991,8 +19242,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-13", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-13" }, "id": "5f3477ae34c1239cafe128be", "title": "Step 13" @@ -21003,8 +19253,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-15", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-15" }, "id": "5f3477ae8466a9a3d2cc953c", "title": "Step 15" @@ -21015,8 +19264,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-12", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-12" }, "id": "5f3477ae9675db8bb7655b30", "title": "Step 12" @@ -21027,8 +19275,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-14", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-14" }, "id": "5f3477aefa51bfc29327200b", "title": "Step 14" @@ -21039,8 +19286,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-16", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-16" }, "id": "5f3477cb2e27333b1ab2b955", "title": "Step 16" @@ -21051,8 +19297,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-18", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-18" }, "id": "5f3477cb303c5cb61b43aa9b", "title": "Step 18" @@ -21063,8 +19308,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-17", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-17" }, "id": "5f3477cbcb6ba47918c1da92", "title": "Step 17" @@ -21075,8 +19319,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-19", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-19" }, "id": "5f34a1fd611d003edeafd681", "title": "Step 19" @@ -21087,8 +19330,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-24", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-24" }, "id": "5f356ed60785e1f3e9850b6e", "title": "Step 24" @@ -21099,8 +19341,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-22", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-22" }, "id": "5f356ed60a5decd94ab66986", "title": "Step 22" @@ -21111,8 +19352,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-26", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-26" }, "id": "5f356ed6199b0cdef1d2be8f", "title": "Step 26" @@ -21123,8 +19363,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-21", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-21" }, "id": "5f356ed63c7807a4f1e6d054", "title": "Step 21" @@ -21135,8 +19374,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-23", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-23" }, "id": "5f356ed63e0fa262326eef05", "title": "Step 23" @@ -21147,8 +19385,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-25", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-25" }, "id": "5f356ed656a336993abd9f7c", "title": "Step 25" @@ -21159,8 +19396,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-27", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-27" }, "id": "5f356ed69db0a491745e2bb6", "title": "Step 27" @@ -21171,8 +19407,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-20", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-20" }, "id": "5f356ed6cf6eab5f15f5cfe6", "title": "Step 20" @@ -21183,8 +19418,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-29", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-29" }, "id": "5f35e5c4321f818cdc4bed30", "title": "Step 29" @@ -21195,8 +19429,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-28", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-28" }, "id": "5f35e5c44359872a137bd98f", "title": "Step 28" @@ -21207,8 +19440,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-38", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-38" }, "id": "5f3c866d0fc037f7311b4ac8", "title": "Step 38" @@ -21219,8 +19451,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-32", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-32" }, "id": "5f3c866d28d7ad0de6470505", "title": "Step 32" @@ -21231,8 +19462,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-31", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-31" }, "id": "5f3c866d5414453fc2d7b480", "title": "Step 31" @@ -21243,8 +19473,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-30", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-30" }, "id": "5f3c866daec9a49519871816", "title": "Step 30" @@ -21255,8 +19484,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-37", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-37" }, "id": "5f3c866dbf362f99b9a0c6d0", "title": "Step 37" @@ -21267,8 +19495,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-39", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-39" }, "id": "5f3c866dd0d0275f01d4d847", "title": "Step 39" @@ -21279,8 +19506,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-36", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-36" }, "id": "5f3c866de7a5b784048f94b1", "title": "Step 36" @@ -21291,8 +19517,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-41", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-41" }, "id": "5f3cade94c6576e7f7b7953f", "title": "Step 41" @@ -21303,8 +19528,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-42", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-42" }, "id": "5f3cade9993019e26313fa8e", "title": "Step 42" @@ -21315,8 +19539,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-46", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-46" }, "id": "5f3cade99dda4e6071a85dfd", "title": "Step 46" @@ -21327,8 +19550,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-40", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-40" }, "id": "5f3cade9fa77275d9f4efe62", "title": "Step 40" @@ -21339,8 +19561,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-66", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-66" }, "id": "5f3ef6e01f288a026d709587", "title": "Step 66" @@ -21351,8 +19572,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-56", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-56" }, "id": "5f3ef6e03d719d5ac4738993", "title": "Step 56" @@ -21363,8 +19583,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-55", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-55" }, "id": "5f3ef6e04559b939080db057", "title": "Step 55" @@ -21375,8 +19594,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-54", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-54" }, "id": "5f3ef6e050279c7a4a7101d3", "title": "Step 54" @@ -21387,8 +19605,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-57", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-57" }, "id": "5f3ef6e05473f91f948724ab", "title": "Step 57" @@ -21399,8 +19616,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-58", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-58" }, "id": "5f3ef6e056bdde6ae6892ba2", "title": "Step 58" @@ -21411,8 +19627,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-60", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-60" }, "id": "5f3ef6e06d34faac0447fc44", "title": "Step 60" @@ -21423,8 +19638,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-63", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-63" }, "id": "5f3ef6e07276f782bb46b93d", "title": "Step 63" @@ -21435,8 +19649,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-48", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-48" }, "id": "5f3ef6e0819d4f23ca7285e6", "title": "Step 48" @@ -21447,8 +19660,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-61", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-61" }, "id": "5f3ef6e087d56ed3ffdc36be", "title": "Step 61" @@ -21459,8 +19671,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-64", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-64" }, "id": "5f3ef6e0a81099d9a697b550", "title": "Step 64" @@ -21471,8 +19682,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-65", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-65" }, "id": "5f3ef6e0b431cc215bb16f55", "title": "Step 65" @@ -21483,8 +19693,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-47", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-47" }, "id": "5f3ef6e0e0c3feaebcf647ad", "title": "Step 47" @@ -21495,8 +19704,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-59", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-59" }, "id": "5f3ef6e0e9629bad967cd71e", "title": "Step 59" @@ -21507,8 +19715,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-53", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-53" }, "id": "5f3ef6e0eaa7da26e3d34d78", "title": "Step 53" @@ -21519,8 +19726,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-62", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-62" }, "id": "5f3ef6e0f8c230bdd2349716", "title": "Step 62" @@ -21531,8 +19737,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-67", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-67" }, "id": "5f3f26fa39591db45e5cd7a0", "title": "Step 67" @@ -21543,8 +19748,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-68", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-68" }, "id": "5f459225127805351a6ad057", "title": "Step 68" @@ -21555,8 +19759,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-69", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-69" }, "id": "5f459a7ceb8b5c446656d88b", "title": "Step 69" @@ -21567,8 +19770,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-70", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-70" }, "id": "5f459cf202c2a3472fae6a9f", "title": "Step 70" @@ -21579,8 +19781,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-71", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-71" }, "id": "5f459fd48bdc98491ca6d1a3", "title": "Step 71" @@ -21591,8 +19792,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-72", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-72" }, "id": "5f45a05977e2fa49d9119437", "title": "Step 72" @@ -21603,8 +19803,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-73", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-73" }, "id": "5f45a276c093334f0f6e9df4", "title": "Step 73" @@ -21615,8 +19814,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-74", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-74" }, "id": "5f45a5a7c49a8251f0bdb527", "title": "Step 74" @@ -21627,8 +19825,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-78", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-78" }, "id": "5f45a66d4a2b0453301e5a26", "title": "Step 78" @@ -21639,8 +19836,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-79", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-79" }, "id": "5f45b0731d39e15d54df4dfc", "title": "Step 79" @@ -21651,8 +19847,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-80", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-80" }, "id": "5f45b25e7ec2405f166b9de1", "title": "Step 80" @@ -21663,8 +19858,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-81", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-81" }, "id": "5f45b3c93c027860d9298dbd", "title": "Step 81" @@ -21675,8 +19869,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-82", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-82" }, "id": "5f45b45d099f3e621fbbb256", "title": "Step 82" @@ -21687,8 +19880,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-83", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-83" }, "id": "5f45b4c81cea7763550e40df", "title": "Step 83" @@ -21699,8 +19891,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-84", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-84" }, "id": "5f45b715301bbf667badc04a", "title": "Step 84" @@ -21711,8 +19902,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-85", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-85" }, "id": "5f46e270702a8456a664f0df", "title": "Step 85" @@ -21723,8 +19913,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-86", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-86" }, "id": "5f46e36e745ead58487aabf2", "title": "Step 86" @@ -21735,8 +19924,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-87", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-87" }, "id": "5f46e7a4750dd05b5a673920", "title": "Step 87" @@ -21747,8 +19935,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-88", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-88" }, "id": "5f46e8284aae155c83015dee", "title": "Step 88" @@ -21759,8 +19946,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-77", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-77" }, "id": "5f46ede1ff8fec5ba656b44c", "title": "Step 77" @@ -21771,8 +19957,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-75", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-75" }, "id": "5f46fc57528aa1c4b5ea7c2e", "title": "Step 75" @@ -21783,8 +19968,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-76", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-76" }, "id": "5f4701b942c824109626c3d8", "title": "Step 76" @@ -21795,8 +19979,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-89", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-89" }, "id": "5f475bb508746c16c9431d42", "title": "Step 89" @@ -21807,8 +19990,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-90", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-90" }, "id": "5f475e1c7f71a61d913836c6", "title": "Step 90" @@ -21819,8 +20001,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-45", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-45" }, "id": "5f47633757ae3469f2d33d2e", "title": "Step 45" @@ -21831,8 +20012,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-91", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-91" }, "id": "5f47fe7e31980053a8d4403b", "title": "Step 91" @@ -21843,8 +20023,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-49", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-49" }, "id": "5f716ad029ee4053c7027a7a", "title": "Step 49" @@ -21855,8 +20034,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-52", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-52" }, "id": "5f716bee5838c354c728a7c5", "title": "Step 52" @@ -21867,8 +20045,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-43", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-43" }, "id": "5f7691dafd882520797cd2f0", "title": "Step 43" @@ -21879,8 +20056,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-44", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-44" }, "id": "5f7692f7c5b3ce22a57788b6", "title": "Step 44" @@ -21891,8 +20067,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-33", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-33" }, "id": "5f769541be494f25449b292f", "title": "Step 33" @@ -21903,8 +20078,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-34", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-34" }, "id": "5f76967fad478126d6552b0d", "title": "Step 34" @@ -21915,8 +20089,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-35", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-35" }, "id": "5f769702e6e33127d14aa120", "title": "Step 35" @@ -21927,8 +20100,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-50", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-50" }, "id": "5f7b87422a560036fd03ccff", "title": "Step 50" @@ -21939,8 +20111,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-51", - "blockName": "Learn Basic CSS by Building a Cafe Menu" + "slug": "/learn/2022/responsive-web-design/learn-basic-css-by-building-a-cafe-menu/step-51" }, "id": "5f7b88d37b1f98386f04edc0", "title": "Step 51" @@ -21951,8 +20122,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-1", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-1" }, "id": "6140c7e645d8e905819f1dd4", "title": "Step 1" @@ -21963,8 +20133,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-2", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-2" }, "id": "6140c9d35015ae0ba0c250e8", "title": "Step 2" @@ -21975,8 +20144,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-3", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-3" }, "id": "6140cbeec34e970dfe75e710", "title": "Step 3" @@ -21987,8 +20155,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-4", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-4" }, "id": "6140cd32d018ed0f600eefce", "title": "Step 4" @@ -21999,8 +20166,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-6", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-6" }, "id": "6140cdebd39d6a101e747529", "title": "Step 6" @@ -22011,8 +20177,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-7", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-7" }, "id": "6140cfc08ca9c5128c3e6478", "title": "Step 7" @@ -22023,8 +20188,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-8", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-8" }, "id": "6140d0069049f5139d78da40", "title": "Step 8" @@ -22035,8 +20199,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-9", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-9" }, "id": "6140d10d50636e14695013b2", "title": "Step 9" @@ -22047,8 +20210,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-10", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-10" }, "id": "6140d1a351e88f159ed54fca", "title": "Step 10" @@ -22059,8 +20221,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-11", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-11" }, "id": "6140d263016325162fd076fe", "title": "Step 11" @@ -22071,8 +20232,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-12", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-12" }, "id": "6140d2b687a2cd17bac5730c", "title": "Step 12" @@ -22083,8 +20243,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-13", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-13" }, "id": "6140d36b8b747718b50d4b7a", "title": "Step 13" @@ -22095,8 +20254,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-14", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-14" }, "id": "6140d3dc359b371b1a21d783", "title": "Step 14" @@ -22107,8 +20265,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-15", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-15" }, "id": "6140d4bc9db3c81c51a09ab7", "title": "Step 15" @@ -22119,8 +20276,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-16", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-16" }, "id": "6140d94b5fab7f1d73c9bedb", "title": "Step 16" @@ -22131,8 +20287,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-17", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-17" }, "id": "6140dc5e13d0c81e7496f182", "title": "Step 17" @@ -22143,8 +20298,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-18", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-18" }, "id": "6140dd77e0bc5a1f70bd7466", "title": "Step 18" @@ -22155,8 +20309,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-19", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-19" }, "id": "6140de31b1f5b420410728ff", "title": "Step 19" @@ -22167,8 +20320,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-20", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-20" }, "id": "6140df547f09402144e40b92", "title": "Step 20" @@ -22179,8 +20331,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-21", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-21" }, "id": "6140e0d875ec16262f26432b", "title": "Step 21" @@ -22191,8 +20342,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-22", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-22" }, "id": "6140f4b5c1555a2960de1e5f", "title": "Step 22" @@ -22203,8 +20353,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-23", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-23" }, "id": "614100d7d335bb2a5ff74f1f", "title": "Step 23" @@ -22215,8 +20364,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-24", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-24" }, "id": "61410126fa3a6d2b3cda502e", "title": "Step 24" @@ -22227,8 +20375,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-25", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-25" }, "id": "6141019eadec6d2c6c6f007b", "title": "Step 25" @@ -22239,8 +20386,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-26", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-26" }, "id": "6141026ec9882f2d39dcf2b8", "title": "Step 26" @@ -22251,8 +20397,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-27", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-27" }, "id": "6169ab1aaeb4cd1174def700", "title": "Step 27" @@ -22263,8 +20408,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-28", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-28" }, "id": "6169b1357fcb701bb5efc619", "title": "Step 28" @@ -22275,8 +20419,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-29", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-29" }, "id": "6169b284950e171d8d0bb16a", "title": "Step 29" @@ -22287,8 +20430,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-5", - "blockName": "Learn CSS Animation by Building a Ferris Wheel" + "slug": "/learn/2022/responsive-web-design/learn-css-animation-by-building-a-ferris-wheel/step-5" }, "id": "617ace7d831f9c16a569b38a", "title": "Step 5" @@ -22299,8 +20441,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-1", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-1" }, "id": "61695197ac34f0407e339882", "title": "Step 1" @@ -22311,8 +20452,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-2", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-2" }, "id": "61695ab9f6ffe951c16d03dd", "title": "Step 2" @@ -22323,8 +20463,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-3", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-3" }, "id": "61695c4aad56f95497c19583", "title": "Step 3" @@ -22335,8 +20474,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-4", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-4" }, "id": "61695d1fbc003856628bf561", "title": "Step 4" @@ -22347,8 +20485,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-5", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-5" }, "id": "616965351e74d4689eb6de30", "title": "Step 5" @@ -22359,8 +20496,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-6", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-6" }, "id": "616968c2c94c8071b349c146", "title": "Step 6" @@ -22371,8 +20507,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-7", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-7" }, "id": "61696ef7ac756c829f9e4048", "title": "Step 7" @@ -22383,8 +20518,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-8", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-8" }, "id": "616971b3cd990186b66c99a1", "title": "Step 8" @@ -22395,8 +20529,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-9", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-9" }, "id": "616d3a67ccf800ad94ec89ae", "title": "Step 9" @@ -22407,8 +20540,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-10", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-10" }, "id": "616d47bc9eedc4bc7f621bec", "title": "Step 10" @@ -22419,8 +20551,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-11", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-11" }, "id": "616d4a84b756d9c4b8255093", "title": "Step 11" @@ -22431,8 +20562,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-12", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-12" }, "id": "616d50b93ba424d6282c99cf", "title": "Step 12" @@ -22443,8 +20573,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-13", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-13" }, "id": "616d525007b8c5d8b3308b1c", "title": "Step 13" @@ -22455,8 +20584,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-14", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-14" }, "id": "616d55bd160a95e22453a081", "title": "Step 14" @@ -22467,8 +20595,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-15", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-15" }, "id": "616d595270d902f0e7086e18", "title": "Step 15" @@ -22479,8 +20606,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-16", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-16" }, "id": "61764c602bee6974e7790f35", "title": "Step 16" @@ -22491,8 +20617,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-17", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-17" }, "id": "61764f23ea21477b76f3b80f", "title": "Step 17" @@ -22503,8 +20628,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-18", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-18" }, "id": "61764f7e5240eb7ccc7f6a0a", "title": "Step 18" @@ -22515,8 +20639,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-19", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-19" }, "id": "61764fdda535587e1fefb3aa", "title": "Step 19" @@ -22527,8 +20650,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-20", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-20" }, "id": "6176519636a76b810ab1219a", "title": "Step 20" @@ -22539,8 +20661,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-21", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-21" }, "id": "617b65579ce424bf5f02ca73", "title": "Step 21" @@ -22551,8 +20672,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-22", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-22" }, "id": "617b8b38f32bf2080a140675", "title": "Step 22" @@ -22563,8 +20683,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-23", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-23" }, "id": "617b8e0d93a8d10d9a90e720", "title": "Step 23" @@ -22575,8 +20694,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-24", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-24" }, "id": "617b92b9de349513466f6156", "title": "Step 24" @@ -22587,8 +20705,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-25", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-25" }, "id": "617b954d9f4f6217a749380e", "title": "Step 25" @@ -22599,8 +20716,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-26", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-26" }, "id": "617b97abd9f3f61d1590b815", "title": "Step 26" @@ -22611,8 +20727,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-27", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-27" }, "id": "617b9ad735109e217284e095", "title": "Step 27" @@ -22623,8 +20738,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-28", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-28" }, "id": "617bb5624a75e86463b7e638", "title": "Step 28" @@ -22635,8 +20749,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-29", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-29" }, "id": "617bb77353188166af43f3ac", "title": "Step 29" @@ -22647,8 +20760,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-30", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-30" }, "id": "617bb9fdef27bc6aa0470ac2", "title": "Step 30" @@ -22659,8 +20771,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-31", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-31" }, "id": "617bbb6b97a83f6d1f7d6e38", "title": "Step 31" @@ -22671,8 +20782,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-32", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-32" }, "id": "617bc3386dc7d07d6469bf20", "title": "Step 32" @@ -22683,8 +20793,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-33", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-33" }, "id": "617bc4824e233180553a8069", "title": "Step 33" @@ -22695,8 +20804,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-34", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-34" }, "id": "617bd6ec666b1da2587e4e37", "title": "Step 34" @@ -22707,8 +20815,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-35", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-35" }, "id": "618a00ed1ca871a2b3aca0cb", "title": "Step 35" @@ -22719,8 +20826,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-36", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-36" }, "id": "618a0927005553b74bfa05ae", "title": "Step 36" @@ -22731,8 +20837,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-37", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-37" }, "id": "618a0b2befb143baefab632b", "title": "Step 37" @@ -22743,8 +20848,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-38", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-38" }, "id": "618a1275e873dcc803c2d1aa", "title": "Step 38" @@ -22755,8 +20859,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-39", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-39" }, "id": "618a132676346ac9f7fd59dd", "title": "Step 39" @@ -22767,8 +20870,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-40", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-40" }, "id": "618a16873520a8d088ffdf44", "title": "Step 40" @@ -22779,8 +20881,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-41", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-41" }, "id": "618a16d21bd3dad1bb3aa8ef", "title": "Step 41" @@ -22791,8 +20892,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-42", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-42" }, "id": "619b72a0db211f1c29afb906", "title": "Step 42" @@ -22803,8 +20903,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-43", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-43" }, "id": "619b7396e57b771f903be90d", "title": "Step 43" @@ -22815,8 +20914,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-44", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-44" }, "id": "619b7424f43ec9215e538afe", "title": "Step 44" @@ -22827,8 +20925,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-45", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-45" }, "id": "619b74fa777a2b2473c94f82", "title": "Step 45" @@ -22839,8 +20936,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-46", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-46" }, "id": "619b761916dac02643940022", "title": "Step 46" @@ -22851,8 +20947,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-47", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-47" }, "id": "619b7c3c83de403126b69c1e", "title": "Step 47" @@ -22863,8 +20958,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-48", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-48" }, "id": "619b7fd56aa2253778bcf5f7", "title": "Step 48" @@ -22875,8 +20969,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-49", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-49" }, "id": "61a489b8579e87364b2d2cdb", "title": "Step 49" @@ -22887,8 +20980,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-50", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-50" }, "id": "61a493ead935c148d2b76312", "title": "Step 50" @@ -22899,8 +20991,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-53", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-53" }, "id": "61a498399534644f59cff05e", "title": "Step 53" @@ -22911,8 +21002,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-54", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-54" }, "id": "61a49d15bdbb5e57cc6fd280", "title": "Step 54" @@ -22923,8 +21013,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-55", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-55" }, "id": "61a4a53c4459446dc134a1c6", "title": "Step 55" @@ -22935,8 +21024,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-56", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-56" }, "id": "61a4a6e908bc34725b4c25ac", "title": "Step 56" @@ -22947,8 +21035,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-57", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-57" }, "id": "61a4a7877da33a73a1c1723e", "title": "Step 57" @@ -22959,8 +21046,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-58", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-58" }, "id": "61a4ac092eb21e7dbfe61c33", "title": "Step 58" @@ -22971,8 +21057,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-59", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-59" }, "id": "61a4acbb5587197f68544d00", "title": "Step 59" @@ -22983,8 +21068,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-60", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-60" }, "id": "61a4ada3aabeec822b2975d9", "title": "Step 60" @@ -22995,8 +21079,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-61", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-61" }, "id": "61a4ae5f29eb5584187201c3", "title": "Step 61" @@ -23007,8 +21090,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-63", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-63" }, "id": "61a5be9833e7dc178de2af10", "title": "Step 63" @@ -23019,8 +21101,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-64", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-64" }, "id": "61a5bfe091060f1d6a629dd0", "title": "Step 64" @@ -23031,8 +21112,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-65", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-65" }, "id": "61a5c906ab73313316e342f0", "title": "Step 65" @@ -23043,8 +21123,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-66", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-66" }, "id": "61a5ca57f50ded36d33eef96", "title": "Step 66" @@ -23055,8 +21134,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-67", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-67" }, "id": "61a5d594b887335228ee6533", "title": "Step 67" @@ -23067,8 +21145,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-68", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-68" }, "id": "61a5d6701ee08953ca375243", "title": "Step 68" @@ -23079,8 +21156,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-69", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-69" }, "id": "61a5d79c858bef560e26c685", "title": "Step 69" @@ -23091,8 +21167,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-70", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-70" }, "id": "61a5d7ef1cfcf45764df07a2", "title": "Step 70" @@ -23103,8 +21178,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-71", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-71" }, "id": "61adc60b69cd4b87739d2174", "title": "Step 71" @@ -23115,8 +21189,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-79", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-79" }, "id": "61adc91467b5d59328b9f781", "title": "Step 79" @@ -23127,8 +21200,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-80", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-80" }, "id": "61add79e739a5faee9d96080", "title": "Step 80" @@ -23139,8 +21211,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-81", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-81" }, "id": "61add929e41980b1edbdba7e", "title": "Step 81" @@ -23151,8 +21222,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-82", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-82" }, "id": "61addaf7e83988b59a7d18ff", "title": "Step 82" @@ -23163,8 +21233,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-83", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-83" }, "id": "61ade49b2dad60c076cbd32d", "title": "Step 83" @@ -23175,8 +21244,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-72", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-72" }, "id": "61b092eb9e7fc020b43b1bb2", "title": "Step 72" @@ -23187,8 +21255,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-73", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-73" }, "id": "61b093179e7fc020b43b1bb3", "title": "Step 73" @@ -23199,8 +21266,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-74", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-74" }, "id": "61b093219e7fc020b43b1bb4", "title": "Step 74" @@ -23211,8 +21277,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-75", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-75" }, "id": "61b093329e7fc020b43b1bb5", "title": "Step 75" @@ -23223,8 +21288,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-76", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-76" }, "id": "61b093429e7fc020b43b1bb6", "title": "Step 76" @@ -23235,8 +21299,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-77", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-77" }, "id": "61b0934c9e7fc020b43b1bb7", "title": "Step 77" @@ -23247,8 +21310,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-78", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-78" }, "id": "61b0936d9e7fc020b43b1bb8", "title": "Step 78" @@ -23259,8 +21321,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-51", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-51" }, "id": "61b095989e7fc020b43b1bb9", "title": "Step 51" @@ -23271,8 +21332,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-52", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-52" }, "id": "61b095a79e7fc020b43b1bba", "title": "Step 52" @@ -23283,8 +21343,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-62", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-62" }, "id": "61b095c79e7fc020b43b1bbb", "title": "Step 62" @@ -23295,8 +21354,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-84", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-84" }, "id": "61b09f739aa6572d2064f9b8", "title": "Step 84" @@ -23307,8 +21365,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-85", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-85" }, "id": "61b0a1b2af494934b7ec1a72", "title": "Step 85" @@ -23319,8 +21376,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-86", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-86" }, "id": "61b0a44a6b865738ba49b9fb", "title": "Step 86" @@ -23331,8 +21387,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-87", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-87" }, "id": "61b306305810f1c9040ce5a2", "title": "Step 87" @@ -23343,8 +21398,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-88", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-88" }, "id": "61b30995968123ceb6b76167", "title": "Step 88" @@ -23355,8 +21409,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-89", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-89" }, "id": "61b30a286c228bd0c493c09a", "title": "Step 89" @@ -23367,8 +21420,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-90", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-90" }, "id": "61b31287fb580ae75a486047", "title": "Step 90" @@ -23379,8 +21431,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-91", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-91" }, "id": "61b315e76a63b3ecbbb11b75", "title": "Step 91" @@ -23391,8 +21442,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-92", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-92" }, "id": "61b3183655ec10efd8c0bb07", "title": "Step 92" @@ -23403,8 +21453,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-93", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-93" }, "id": "61b31a451057fff645ec09be", "title": "Step 93" @@ -23415,8 +21464,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-94", - "blockName": "Learn CSS Colors by Building a Set of Colored Markers" + "slug": "/learn/2022/responsive-web-design/learn-css-colors-by-building-a-set-of-colored-markers/step-94" }, "id": "61b31cd7b0c76bfc076b4719", "title": "Step 94" @@ -23427,8 +21475,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-1", - "blockName": "Learn CSS Flexbox by Building a Photo Gallery" + "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-1" }, "id": "61537485c4f2a624f18d7794", "title": "Step 1" @@ -23439,8 +21486,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-2", - "blockName": "Learn CSS Flexbox by Building a Photo Gallery" + "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-2" }, "id": "61537a8054753e2f1f2a1574", "title": "Step 2" @@ -23451,8 +21497,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-3", - "blockName": "Learn CSS Flexbox by Building a Photo Gallery" + "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-3" }, "id": "61537bb9b1a29430ac15ad38", "title": "Step 3" @@ -23463,8 +21508,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-4", - "blockName": "Learn CSS Flexbox by Building a Photo Gallery" + "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-4" }, "id": "61537c5f81f0cf325b4a854c", "title": "Step 4" @@ -23475,8 +21519,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-5", - "blockName": "Learn CSS Flexbox by Building a Photo Gallery" + "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-5" }, "id": "61537c9eecea6a335db6da79", "title": "Step 5" @@ -23487,8 +21530,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-6", - "blockName": "Learn CSS Flexbox by Building a Photo Gallery" + "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-6" }, "id": "61537d86bdc3dd343688fceb", "title": "Step 6" @@ -23499,8 +21541,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-7", - "blockName": "Learn CSS Flexbox by Building a Photo Gallery" + "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-7" }, "id": "615380dff67172357fcf0425", "title": "Step 7" @@ -23511,8 +21552,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-9", - "blockName": "Learn CSS Flexbox by Building a Photo Gallery" + "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-9" }, "id": "6153893900438b4643590367", "title": "Step 9" @@ -23523,8 +21563,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-10", - "blockName": "Learn CSS Flexbox by Building a Photo Gallery" + "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-10" }, "id": "6153897c27f6334716ee5abe", "title": "Step 10" @@ -23535,8 +21574,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-11", - "blockName": "Learn CSS Flexbox by Building a Photo Gallery" + "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-11" }, "id": "615389bd81347947ea7ba896", "title": "Step 11" @@ -23547,8 +21585,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-12", - "blockName": "Learn CSS Flexbox by Building a Photo Gallery" + "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-12" }, "id": "6153908a366afb4d57185c8d", "title": "Step 12" @@ -23559,8 +21596,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-13", - "blockName": "Learn CSS Flexbox by Building a Photo Gallery" + "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-13" }, "id": "615392916d83fa4f02f7e2cf", "title": "Step 13" @@ -23571,8 +21607,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-14", - "blockName": "Learn CSS Flexbox by Building a Photo Gallery" + "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-14" }, "id": "6153938dce8b294ff8f5a4e9", "title": "Step 14" @@ -23583,8 +21618,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-15", - "blockName": "Learn CSS Flexbox by Building a Photo Gallery" + "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-15" }, "id": "6153947986535e5117e60615", "title": "Step 15" @@ -23595,8 +21629,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-16", - "blockName": "Learn CSS Flexbox by Building a Photo Gallery" + "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-16" }, "id": "61539e07e7430b528fbffe21", "title": "Step 16" @@ -23607,8 +21640,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-17", - "blockName": "Learn CSS Flexbox by Building a Photo Gallery" + "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-17" }, "id": "61539f32a206bd53ec116465", "title": "Step 17" @@ -23619,8 +21651,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-18", - "blockName": "Learn CSS Flexbox by Building a Photo Gallery" + "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-18" }, "id": "6153a04847abee57a3a406ac", "title": "Step 18" @@ -23631,8 +21662,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-19", - "blockName": "Learn CSS Flexbox by Building a Photo Gallery" + "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-19" }, "id": "6153a3485f0b20591d26d2a1", "title": "Step 19" @@ -23643,8 +21673,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-20", - "blockName": "Learn CSS Flexbox by Building a Photo Gallery" + "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-20" }, "id": "6153a3952facd25a83fe8083", "title": "Step 20" @@ -23655,8 +21684,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-21", - "blockName": "Learn CSS Flexbox by Building a Photo Gallery" + "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-21" }, "id": "6153a3ebb4f7f05b8401b716", "title": "Step 21" @@ -23667,8 +21695,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-8", - "blockName": "Learn CSS Flexbox by Building a Photo Gallery" + "slug": "/learn/2022/responsive-web-design/learn-css-flexbox-by-building-a-photo-gallery/step-8" }, "id": "615f171d05def3218035dc85", "title": "Step 8" @@ -23679,8 +21706,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-1", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-1" }, "id": "61437d575fb98f57fa8f7f36", "title": "Step 1" @@ -23691,8 +21717,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-2", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-2" }, "id": "614385513d91ae5c251c2052", "title": "Step 2" @@ -23703,8 +21728,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-3", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-3" }, "id": "6143862a5e54455d262c212e", "title": "Step 3" @@ -23715,8 +21739,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-4", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-4" }, "id": "6143869bb45bd85e3b1926aa", "title": "Step 4" @@ -23727,8 +21750,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-7", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-7" }, "id": "614387cbefeeba5f3654a291", "title": "Step 7" @@ -23739,8 +21761,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-9", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-9" }, "id": "614389f601bb4f611db98563", "title": "Step 9" @@ -23751,8 +21772,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-10", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-10" }, "id": "61438b5b66d76a6264430f2a", "title": "Step 10" @@ -23763,8 +21783,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-11", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-11" }, "id": "61438ec09438696391076d6a", "title": "Step 11" @@ -23775,8 +21794,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-12", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-12" }, "id": "61439dc084fa5f659cf75d7c", "title": "Step 12" @@ -23787,8 +21805,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-13", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-13" }, "id": "61439dfc811e12666b04be6f", "title": "Step 13" @@ -23799,8 +21816,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-14", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-14" }, "id": "61439e33e4fb7967609e0c83", "title": "Step 14" @@ -23811,8 +21827,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-15", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-15" }, "id": "6143a1a228f7d068ab16a130", "title": "Step 15" @@ -23823,8 +21838,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-16", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-16" }, "id": "6143a73279ce6369de4b9bcc", "title": "Step 16" @@ -23835,8 +21849,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-17", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-17" }, "id": "6143a778bffc206ac6b1dbe3", "title": "Step 17" @@ -23847,8 +21860,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-18", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-18" }, "id": "6143a83fcc32c26bcfae3efa", "title": "Step 18" @@ -23859,8 +21871,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-19", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-19" }, "id": "6143b97c06c3306d23d5da47", "title": "Step 19" @@ -23871,8 +21882,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-20", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-20" }, "id": "6143b9e1f5035c6e5f2a8231", "title": "Step 20" @@ -23883,8 +21893,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-21", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-21" }, "id": "6143bb50e8e48c6f5ef9d8d5", "title": "Step 21" @@ -23895,8 +21904,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-22", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-22" }, "id": "6143c2a363865c715f1a3f72", "title": "Step 22" @@ -23907,8 +21915,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-23", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-23" }, "id": "6143cd08fe927072ca3a371d", "title": "Step 23" @@ -23919,8 +21926,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-24", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-24" }, "id": "6143cdf48b634a747de42104", "title": "Step 24" @@ -23931,8 +21937,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-25", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-25" }, "id": "6143d003ad9e9d76766293ec", "title": "Step 25" @@ -23943,8 +21948,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-26", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-26" }, "id": "6143d2842b497779bad947de", "title": "Step 26" @@ -23955,8 +21959,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-27", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-27" }, "id": "6144d66a5358db0c80628757", "title": "Step 27" @@ -23967,8 +21970,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-28", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-28" }, "id": "6144d7dbdd3e580da730ff45", "title": "Step 28" @@ -23979,8 +21981,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-29", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-29" }, "id": "6144de308591ec10e27d5383", "title": "Step 29" @@ -23991,8 +21992,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-30", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-30" }, "id": "6144e1ba93e435127a7f516d", "title": "Step 30" @@ -24003,8 +22003,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-31", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-31" }, "id": "6144ee46a9d6e614c598cc05", "title": "Step 31" @@ -24015,8 +22014,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-32", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-32" }, "id": "6144ee790af79815ad15a832", "title": "Step 32" @@ -24027,8 +22025,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-33", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-33" }, "id": "6144f1410990ea17187a722b", "title": "Step 33" @@ -24039,8 +22036,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-34", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-34" }, "id": "6144f3818bfbc51844152e36", "title": "Step 34" @@ -24051,8 +22047,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-35", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-35" }, "id": "6144f42204c8c8195f1f3345", "title": "Step 35" @@ -24063,8 +22058,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-36", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-36" }, "id": "6144f47b7c631e1a6f304dd5", "title": "Step 36" @@ -24075,8 +22069,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-37", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-37" }, "id": "6148b07081759c2c691166a9", "title": "Step 37" @@ -24087,8 +22080,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-38", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-38" }, "id": "6148b0d764e4192e5712ed92", "title": "Step 38" @@ -24099,8 +22091,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-39", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-39" }, "id": "6148b185ef37522f688316b0", "title": "Step 39" @@ -24111,8 +22102,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-40", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-40" }, "id": "6148b30464daf630848c21d4", "title": "Step 40" @@ -24123,8 +22113,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-41", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-41" }, "id": "6148b4b150434734143db6f2", "title": "Step 41" @@ -24135,8 +22124,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-42", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-42" }, "id": "6148b5623efa8f369f2c3643", "title": "Step 42" @@ -24147,8 +22135,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-44", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-44" }, "id": "6148b59ef318e03875f35c4a", "title": "Step 44" @@ -24159,8 +22146,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-45", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-45" }, "id": "6148bd62bbb8c83a5f1fc1b3", "title": "Step 45" @@ -24171,8 +22157,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-46", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-46" }, "id": "6148be3d605d6b3ca9425d11", "title": "Step 46" @@ -24183,8 +22168,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-47", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-47" }, "id": "6148be82ca63c63daa8cca49", "title": "Step 47" @@ -24195,8 +22179,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-48", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-48" }, "id": "6148bf49fcc7913f05dbf9b7", "title": "Step 48" @@ -24207,8 +22190,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-49", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-49" }, "id": "6148bfc43df3bc40fe0e6405", "title": "Step 49" @@ -24219,8 +22201,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-50", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-50" }, "id": "6148c004ffc8434252940dc3", "title": "Step 50" @@ -24231,8 +22212,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-51", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-51" }, "id": "6148c224ecb157439bc5247c", "title": "Step 51" @@ -24243,8 +22223,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-52", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-52" }, "id": "6148c434bd731d45617a76c6", "title": "Step 52" @@ -24255,8 +22234,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-53", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-53" }, "id": "6148c5036ddad94692a66230", "title": "Step 53" @@ -24267,8 +22245,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-54", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-54" }, "id": "6148c58bace368497fb11bcf", "title": "Step 54" @@ -24279,8 +22256,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-55", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-55" }, "id": "6148c6aa9981d74af202125e", "title": "Step 55" @@ -24291,8 +22267,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-56", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-56" }, "id": "6148c721e74ecd4c619ae51c", "title": "Step 56" @@ -24303,8 +22278,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-57", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-57" }, "id": "6148ceaf5d897d4d8b3554b3", "title": "Step 57" @@ -24315,8 +22289,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-58", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-58" }, "id": "6148cf094b3f2b4e8a032c63", "title": "Step 58" @@ -24327,8 +22300,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-59", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-59" }, "id": "6148d0b863d10d50544ace0e", "title": "Step 59" @@ -24339,8 +22311,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-60", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-60" }, "id": "6148d1bdf39c5b5186f5974b", "title": "Step 60" @@ -24351,8 +22322,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-61", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-61" }, "id": "6148d1f9eb63c252e1f8acc4", "title": "Step 61" @@ -24363,8 +22333,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-62", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-62" }, "id": "6148d2444d01ab541e64a1e4", "title": "Step 62" @@ -24375,8 +22344,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-63", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-63" }, "id": "6148d33e31fccf558696c745", "title": "Step 63" @@ -24387,8 +22355,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-64", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-64" }, "id": "6148d3fff5186b57123d97e2", "title": "Step 64" @@ -24399,8 +22366,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-65", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-65" }, "id": "6148d4d57b965358c9fa38bf", "title": "Step 65" @@ -24411,8 +22377,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-66", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-66" }, "id": "6148d7720f0db36775db868a", "title": "Step 66" @@ -24423,8 +22388,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-67", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-67" }, "id": "6148d94fdf6a5d6899f8ff15", "title": "Step 67" @@ -24435,8 +22399,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-68", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-68" }, "id": "6148d9825b50a3698aeee644", "title": "Step 68" @@ -24447,8 +22410,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-69", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-69" }, "id": "6148e162e255676ae0da6a76", "title": "Step 69" @@ -24459,8 +22421,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-70", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-70" }, "id": "6148e19c3e26436be0155690", "title": "Step 70" @@ -24471,8 +22432,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-71", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-71" }, "id": "6148e246146b646cf4255f0c", "title": "Step 71" @@ -24483,8 +22443,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-72", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-72" }, "id": "6148e2dcdd60306dd77d41cc", "title": "Step 72" @@ -24495,8 +22454,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-73", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-73" }, "id": "6148e4d6861a486f60681f36", "title": "Step 73" @@ -24507,8 +22465,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-74", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-74" }, "id": "6148e5a204d99e70343a63e4", "title": "Step 74" @@ -24519,8 +22476,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-75", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-75" }, "id": "6148e62a6f768f71c4f04828", "title": "Step 75" @@ -24531,8 +22487,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-76", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-76" }, "id": "6148e789329dc9736ce59b85", "title": "Step 76" @@ -24543,8 +22498,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-77", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-77" }, "id": "6148f34ebedc2274bceeb99c", "title": "Step 77" @@ -24555,8 +22509,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-78", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-78" }, "id": "6148f600cde42b7670c2611f", "title": "Step 78" @@ -24567,8 +22520,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-79", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-79" }, "id": "6148f693e0728f77c87f3020", "title": "Step 79" @@ -24579,8 +22531,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-80", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-80" }, "id": "6148f6f7d8914c78e93136ca", "title": "Step 80" @@ -24591,8 +22542,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-43", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-43" }, "id": "614e0e503b110f76d3ac2ff6", "title": "Step 43" @@ -24603,8 +22553,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-6", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-6" }, "id": "614e0e588f0e8a772a8a81a6", "title": "Step 6" @@ -24615,8 +22564,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-5", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-5" }, "id": "6165d3b702a5d92ad970b30c", "title": "Step 5" @@ -24627,8 +22575,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-8", - "blockName": "Learn CSS Grid by Building a Magazine" + "slug": "/learn/2022/responsive-web-design/learn-css-grid-by-building-a-magazine/step-8" }, "id": "6169cd8a558aa8434e0ad7f6", "title": "Step 8" @@ -24639,8 +22586,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-1", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-1" }, "id": "619665c9abd72906f3ad30f9", "title": "Step 1" @@ -24651,8 +22597,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-2", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-2" }, "id": "61967e74a8e3690ab6292daa", "title": "Step 2" @@ -24663,8 +22608,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-3", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-3" }, "id": "61968df2acd5550bf1616c34", "title": "Step 3" @@ -24675,8 +22619,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-5", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-5" }, "id": "61968e9243a4090cc805531c", "title": "Step 5" @@ -24687,8 +22630,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-6", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-6" }, "id": "61968f8877c6720d6d61aaf5", "title": "Step 6" @@ -24699,8 +22641,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-7", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-7" }, "id": "619691693bc14b0e528f5a20", "title": "Step 7" @@ -24711,8 +22652,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-8", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-8" }, "id": "6196928658b6010f28c39484", "title": "Step 8" @@ -24723,8 +22663,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-10", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-10" }, "id": "619692ff79f5770fc6d8c0b4", "title": "Step 10" @@ -24735,8 +22674,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-11", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-11" }, "id": "6196990f966e8f10a40094f6", "title": "Step 11" @@ -24747,8 +22685,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-12", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-12" }, "id": "619699c10a0f6e11591d73c4", "title": "Step 12" @@ -24759,8 +22696,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-13", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-13" }, "id": "61969aa6acef5b12200f672e", "title": "Step 13" @@ -24771,8 +22707,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-14", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-14" }, "id": "61969c487ced6f12db8fef94", "title": "Step 14" @@ -24783,8 +22718,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-15", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-15" }, "id": "61969d66cfcdba137d021558", "title": "Step 15" @@ -24795,8 +22729,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-16", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-16" }, "id": "61969e7451455614217e901b", "title": "Step 16" @@ -24807,8 +22740,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-17", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-17" }, "id": "6196adc17f77a714d51485f2", "title": "Step 17" @@ -24819,8 +22751,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-18", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-18" }, "id": "6196aead7ac7bf1584b17a7f", "title": "Step 18" @@ -24831,8 +22762,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-19", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-19" }, "id": "6196ce0415498d2463989e84", "title": "Step 19" @@ -24843,8 +22773,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-20", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-20" }, "id": "6196cee94c6da1253809dff9", "title": "Step 20" @@ -24855,8 +22784,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-21", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-21" }, "id": "6196d00a5d7292262bc02f4c", "title": "Step 21" @@ -24867,8 +22795,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-22", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-22" }, "id": "6196d0cda039d026f7f78d1e", "title": "Step 22" @@ -24879,8 +22806,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-24", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-24" }, "id": "6196d213d99f16287bff22ae", "title": "Step 24" @@ -24891,8 +22817,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-25", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-25" }, "id": "6196d2c0f22ca0293107c048", "title": "Step 25" @@ -24903,8 +22828,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-26", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-26" }, "id": "6196d32d1340d829f0f6f57d", "title": "Step 26" @@ -24915,8 +22839,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-27", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-27" }, "id": "6196d41d40bf9b2aaea5d520", "title": "Step 27" @@ -24927,8 +22850,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-28", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-28" }, "id": "6197cff995d03905b0cca8ad", "title": "Step 28" @@ -24939,8 +22861,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-29", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-29" }, "id": "6197f40a16afea068c7e60c8", "title": "Step 29" @@ -24951,8 +22872,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-9", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-9" }, "id": "6197f667297bb30a552ce017", "title": "Step 9" @@ -24963,8 +22883,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-30", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-30" }, "id": "61993b72e874e709b8dfd666", "title": "Step 30" @@ -24975,8 +22894,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-31", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-31" }, "id": "61993cf26a8e0f0a553db223", "title": "Step 31" @@ -24987,8 +22905,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-32", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-32" }, "id": "61993dbb35adf30b10d49e38", "title": "Step 32" @@ -24999,8 +22916,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-33", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-33" }, "id": "61993e9adc9e9a0bb4d28fff", "title": "Step 33" @@ -25011,8 +22927,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-34", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-34" }, "id": "6199409834ccaf0d10736596", "title": "Step 34" @@ -25023,8 +22938,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-35", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-35" }, "id": "6199429802b7c10dc79ff871", "title": "Step 35" @@ -25035,8 +22949,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-36", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-36" }, "id": "619943285a41720e6370d985", "title": "Step 36" @@ -25047,8 +22960,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-37", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-37" }, "id": "619943876b706d0f35c01dbc", "title": "Step 37" @@ -25059,8 +22971,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-38", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-38" }, "id": "6199442866286d0ff421a4fc", "title": "Step 38" @@ -25071,8 +22982,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-39", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-39" }, "id": "619bcf239fc15905ecd66fce", "title": "Step 39" @@ -25083,8 +22993,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-40", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-40" }, "id": "619be73b3c806006ccc00bb0", "title": "Step 40" @@ -25095,8 +23004,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-41", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-41" }, "id": "619be7af7b0bf60770f5d2a4", "title": "Step 41" @@ -25107,8 +23015,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-42", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-42" }, "id": "619be80062551a080e32c821", "title": "Step 42" @@ -25119,8 +23026,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-43", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-43" }, "id": "619be8ce4ea49008c5bfbc30", "title": "Step 43" @@ -25131,8 +23037,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-44", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-44" }, "id": "619be946958c6009844f1dee", "title": "Step 44" @@ -25143,8 +23048,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-45", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-45" }, "id": "619c155df0063a0a3fec0e32", "title": "Step 45" @@ -25155,8 +23059,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-46", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-46" }, "id": "619c16debd0c270b01c5ce38", "title": "Step 46" @@ -25167,8 +23070,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-47", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-47" }, "id": "619cfdf2e63ddf05feab86ad", "title": "Step 47" @@ -25179,8 +23081,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-48", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-48" }, "id": "619d019488f98c06acbbb71a", "title": "Step 48" @@ -25191,8 +23092,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-49", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-49" }, "id": "619d022dc8400c0763829a17", "title": "Step 49" @@ -25203,8 +23103,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-50", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-50" }, "id": "619d02c7bc95bf0827a5d296", "title": "Step 50" @@ -25215,8 +23114,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-51", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-51" }, "id": "619d033915012509031f309a", "title": "Step 51" @@ -25227,8 +23125,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-52", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-52" }, "id": "619d03dadadb6509a16f4f5f", "title": "Step 52" @@ -25239,8 +23136,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-53", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-53" }, "id": "619d0503e03a790a4179d463", "title": "Step 53" @@ -25251,8 +23147,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-54", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-54" }, "id": "619d05c54dabca0b10058235", "title": "Step 54" @@ -25263,8 +23158,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-55", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-55" }, "id": "619d0882f54bf40bdc4671ed", "title": "Step 55" @@ -25275,8 +23169,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-56", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-56" }, "id": "619d090cd8d6db0c93dc5087", "title": "Step 56" @@ -25287,8 +23180,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-57", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-57" }, "id": "619d0b51ca42ed0d74582186", "title": "Step 57" @@ -25299,8 +23191,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-58", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-58" }, "id": "619d0bc9cb05360e1bf549c3", "title": "Step 58" @@ -25311,8 +23202,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-59", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-59" }, "id": "619d0c1594c38c0ebae75878", "title": "Step 59" @@ -25323,8 +23213,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-60", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-60" }, "id": "619d0d18ca99870f884a7bff", "title": "Step 60" @@ -25335,8 +23224,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-61", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-61" }, "id": "619d0daf214542102739b0da", "title": "Step 61" @@ -25347,8 +23235,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-62", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-62" }, "id": "619d0e56f9ca9710fcb974e3", "title": "Step 62" @@ -25359,8 +23246,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-63", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-63" }, "id": "619d0eec0ac40611b41e2ccc", "title": "Step 63" @@ -25371,8 +23257,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-64", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-64" }, "id": "619d0fc9825c271253df28d4", "title": "Step 64" @@ -25383,8 +23268,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-65", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-65" }, "id": "619d102d786c3d13124c37c6", "title": "Step 65" @@ -25395,8 +23279,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-66", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-66" }, "id": "619d107edf7ddf13cc77106a", "title": "Step 66" @@ -25407,8 +23290,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-67", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-67" }, "id": "619d10cc98145f14820399c5", "title": "Step 67" @@ -25419,8 +23301,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-68", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-68" }, "id": "619d115e2adcd71538e82ebb", "title": "Step 68" @@ -25431,8 +23312,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-69", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-69" }, "id": "619d11e6d5ef9515d2a16033", "title": "Step 69" @@ -25443,8 +23323,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-70", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-70" }, "id": "619d129a417d0716a94de913", "title": "Step 70" @@ -25455,8 +23334,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-71", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-71" }, "id": "619d1340361095175f4b5115", "title": "Step 71" @@ -25467,8 +23345,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-72", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-72" }, "id": "619d15797b580c1828b05426", "title": "Step 72" @@ -25479,8 +23356,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-73", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-73" }, "id": "619d15d955d9d418c4487bbc", "title": "Step 73" @@ -25491,8 +23367,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-74", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-74" }, "id": "619d1629a8adc61960ca8b40", "title": "Step 74" @@ -25503,8 +23378,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-75", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-75" }, "id": "619d1c5fc9f8941a400955da", "title": "Step 75" @@ -25515,8 +23389,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-76", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-76" }, "id": "619d1dab9ff3421ae1976991", "title": "Step 76" @@ -25527,8 +23400,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-77", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-77" }, "id": "619d1deb8b04811b8839ffe4", "title": "Step 77" @@ -25539,8 +23411,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-78", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-78" }, "id": "619d1e7a8e81a61c5a819dc4", "title": "Step 78" @@ -25551,8 +23422,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-79", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-79" }, "id": "619d1ed33c9a071cf657a0d6", "title": "Step 79" @@ -25563,8 +23433,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-80", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-80" }, "id": "619d1fb5d244c31db8a7fdb7", "title": "Step 80" @@ -25575,8 +23444,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-81", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-81" }, "id": "619d204bd73ae51e743b8e94", "title": "Step 81" @@ -25587,8 +23455,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-82", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-82" }, "id": "619d20b12996101f430920fb", "title": "Step 82" @@ -25599,8 +23466,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-83", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-83" }, "id": "619d21fe6a3f9b2016be9d9d", "title": "Step 83" @@ -25611,8 +23477,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-84", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-84" }, "id": "619d229b0e542520cd91c685", "title": "Step 84" @@ -25623,8 +23488,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-85", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-85" }, "id": "619d23089e787e216a7043d6", "title": "Step 85" @@ -25635,8 +23499,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-86", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-86" }, "id": "619d237a107c10221ed743fa", "title": "Step 86" @@ -25647,8 +23510,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-87", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-87" }, "id": "619d26b12e651022d80cd017", "title": "Step 87" @@ -25659,8 +23521,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-88", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-88" }, "id": "619d2712853306238f41828e", "title": "Step 88" @@ -25671,8 +23532,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-89", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-89" }, "id": "619d2b7a84e78b246f2d17a2", "title": "Step 89" @@ -25683,8 +23543,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-90", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-90" }, "id": "619d2bd9c1d43c2526e96f1f", "title": "Step 90" @@ -25695,8 +23554,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-91", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-91" }, "id": "619d2d4e80400325ff89664a", "title": "Step 91" @@ -25707,8 +23565,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-92", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-92" }, "id": "619d2ebc81ba81271460850d", "title": "Step 92" @@ -25719,8 +23576,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-93", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-93" }, "id": "619d2f0e9440bc27caee1cec", "title": "Step 93" @@ -25731,8 +23587,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-94", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-94" }, "id": "619d2fd3ff4f772882e3d998", "title": "Step 94" @@ -25743,8 +23598,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-95", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-95" }, "id": "619d30350883802921bfcccc", "title": "Step 95" @@ -25755,8 +23609,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-96", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-96" }, "id": "619d324f5915c929f36ae91d", "title": "Step 96" @@ -25767,8 +23620,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-97", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-97" }, "id": "619d32c7fa21f32aaa91d499", "title": "Step 97" @@ -25779,8 +23631,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-98", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-98" }, "id": "619d333b738e3c2b5d58b095", "title": "Step 98" @@ -25791,8 +23642,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-99", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-99" }, "id": "619d337765b9f02c10e93722", "title": "Step 99" @@ -25803,8 +23653,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-100", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-100" }, "id": "619d33c51140292cc5a21742", "title": "Step 100" @@ -25815,8 +23664,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-101", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-101" }, "id": "619d3482f505452d861d0f62", "title": "Step 101" @@ -25827,8 +23675,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-102", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-102" }, "id": "619d3561a951bf2e41a24f10", "title": "Step 102" @@ -25839,8 +23686,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-103", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-103" }, "id": "619d36103839c82efa95dd34", "title": "Step 103" @@ -25851,8 +23697,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-104", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-104" }, "id": "619d3711d04d623000013e9e", "title": "Step 104" @@ -25863,8 +23708,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-4", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-4" }, "id": "61a8fe15a6a31306e60d1e89", "title": "Step 4" @@ -25875,8 +23719,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-1", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-1" }, "id": "5d822fd413a79914d39e98c9", "title": "Step 1" @@ -25887,8 +23730,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-2", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-2" }, "id": "5d822fd413a79914d39e98ca", "title": "Step 2" @@ -25899,8 +23741,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-3", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-3" }, "id": "5d822fd413a79914d39e98cb", "title": "Step 3" @@ -25911,8 +23752,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-4", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-4" }, "id": "5d822fd413a79914d39e98cc", "title": "Step 4" @@ -25923,8 +23763,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-5", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-5" }, "id": "5d822fd413a79914d39e98cd", "title": "Step 5" @@ -25935,8 +23774,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-6", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-6" }, "id": "5d822fd413a79914d39e98ce", "title": "Step 6" @@ -25947,8 +23785,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-7", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-7" }, "id": "5d822fd413a79914d39e98cf", "title": "Step 7" @@ -25959,8 +23796,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-8", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-8" }, "id": "5d822fd413a79914d39e98d0", "title": "Step 8" @@ -25971,8 +23807,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-9", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-9" }, "id": "5d822fd413a79914d39e98d1", "title": "Step 9" @@ -25983,8 +23818,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-10", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-10" }, "id": "5d822fd413a79914d39e98d2", "title": "Step 10" @@ -25995,8 +23829,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-11", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-11" }, "id": "5d822fd413a79914d39e98d3", "title": "Step 11" @@ -26007,8 +23840,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-12", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-12" }, "id": "5d822fd413a79914d39e98d4", "title": "Step 12" @@ -26019,8 +23851,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-13", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-13" }, "id": "5d822fd413a79914d39e98d5", "title": "Step 13" @@ -26031,8 +23862,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-14", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-14" }, "id": "5d822fd413a79914d39e98d6", "title": "Step 14" @@ -26043,8 +23873,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-15", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-15" }, "id": "5d822fd413a79914d39e98d7", "title": "Step 15" @@ -26055,8 +23884,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-16", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-16" }, "id": "5d822fd413a79914d39e98d8", "title": "Step 16" @@ -26067,8 +23895,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-17", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-17" }, "id": "5d822fd413a79914d39e98d9", "title": "Step 17" @@ -26079,8 +23906,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-18", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-18" }, "id": "5d822fd413a79914d39e98da", "title": "Step 18" @@ -26091,8 +23917,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-19", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-19" }, "id": "5d822fd413a79914d39e98db", "title": "Step 19" @@ -26103,8 +23928,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-20", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-20" }, "id": "5d822fd413a79914d39e98dc", "title": "Step 20" @@ -26115,8 +23939,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-21", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-21" }, "id": "5d822fd413a79914d39e98dd", "title": "Step 21" @@ -26127,8 +23950,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-22", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-22" }, "id": "5d822fd413a79914d39e98de", "title": "Step 22" @@ -26139,8 +23961,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-23", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-23" }, "id": "5d822fd413a79914d39e98df", "title": "Step 23" @@ -26151,8 +23972,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-24", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-24" }, "id": "5d822fd413a79914d39e98e0", "title": "Step 24" @@ -26163,8 +23983,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-25", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-25" }, "id": "5d822fd413a79914d39e98e1", "title": "Step 25" @@ -26175,8 +23994,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-26", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-26" }, "id": "5d822fd413a79914d39e98e2", "title": "Step 26" @@ -26187,8 +24005,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-27", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-27" }, "id": "5d822fd413a79914d39e98e3", "title": "Step 27" @@ -26199,8 +24016,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-28", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-28" }, "id": "5d822fd413a79914d39e98e4", "title": "Step 28" @@ -26211,8 +24027,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-29", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-29" }, "id": "5d822fd413a79914d39e98e5", "title": "Step 29" @@ -26223,8 +24038,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-30", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-30" }, "id": "5d822fd413a79914d39e98e6", "title": "Step 30" @@ -26235,8 +24049,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-31", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-31" }, "id": "5d822fd413a79914d39e98e7", "title": "Step 31" @@ -26247,8 +24060,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-32", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-32" }, "id": "5d822fd413a79914d39e98e8", "title": "Step 32" @@ -26259,8 +24071,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-33", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-33" }, "id": "5d822fd413a79914d39e98e9", "title": "Step 33" @@ -26271,8 +24082,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-34", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-34" }, "id": "5d822fd413a79914d39e98ea", "title": "Step 34" @@ -26283,8 +24093,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-35", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-35" }, "id": "5d822fd413a79914d39e98eb", "title": "Step 35" @@ -26295,8 +24104,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-36", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-36" }, "id": "5d822fd413a79914d39e98ec", "title": "Step 36" @@ -26307,8 +24115,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-37", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-37" }, "id": "5d822fd413a79914d39e98ed", "title": "Step 37" @@ -26319,8 +24126,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-38", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-38" }, "id": "5d822fd413a79914d39e98ee", "title": "Step 38" @@ -26331,8 +24137,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-39", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-39" }, "id": "5d822fd413a79914d39e98ef", "title": "Step 39" @@ -26343,8 +24148,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-40", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-40" }, "id": "5d822fd413a79914d39e98f0", "title": "Step 40" @@ -26355,8 +24159,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-41", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-41" }, "id": "5d822fd413a79914d39e98f1", "title": "Step 41" @@ -26367,8 +24170,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-42", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-42" }, "id": "5d822fd413a79914d39e98f2", "title": "Step 42" @@ -26379,8 +24181,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-43", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-43" }, "id": "5d822fd413a79914d39e98f3", "title": "Step 43" @@ -26391,8 +24192,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-44", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-44" }, "id": "5d822fd413a79914d39e98f4", "title": "Step 44" @@ -26403,8 +24203,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-45", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-45" }, "id": "5d822fd413a79914d39e98f5", "title": "Step 45" @@ -26415,8 +24214,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-46", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-46" }, "id": "5d822fd413a79914d39e98f6", "title": "Step 46" @@ -26427,8 +24225,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-47", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-47" }, "id": "5d822fd413a79914d39e98f7", "title": "Step 47" @@ -26439,8 +24236,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-48", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-48" }, "id": "5d822fd413a79914d39e98f8", "title": "Step 48" @@ -26451,8 +24247,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-49", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-49" }, "id": "5d822fd413a79914d39e98f9", "title": "Step 49" @@ -26463,8 +24258,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-50", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-50" }, "id": "5d822fd413a79914d39e98fa", "title": "Step 50" @@ -26475,8 +24269,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-51", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-51" }, "id": "5d822fd413a79914d39e98fb", "title": "Step 51" @@ -26487,8 +24280,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-52", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-52" }, "id": "5d822fd413a79914d39e98fc", "title": "Step 52" @@ -26499,8 +24291,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-53", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-53" }, "id": "5d822fd413a79914d39e98fd", "title": "Step 53" @@ -26511,8 +24302,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-54", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-54" }, "id": "5d822fd413a79914d39e98fe", "title": "Step 54" @@ -26523,8 +24313,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-55", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-55" }, "id": "5d822fd413a79914d39e98ff", "title": "Step 55" @@ -26535,8 +24324,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-56", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-56" }, "id": "5d822fd413a79914d39e9900", "title": "Step 56" @@ -26547,8 +24335,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-57", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-57" }, "id": "5d822fd413a79914d39e9901", "title": "Step 57" @@ -26559,8 +24346,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-58", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-58" }, "id": "5d822fd413a79914d39e9902", "title": "Step 58" @@ -26571,8 +24357,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-59", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-59" }, "id": "5d822fd413a79914d39e9903", "title": "Step 59" @@ -26583,8 +24368,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-60", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-60" }, "id": "5d822fd413a79914d39e9904", "title": "Step 60" @@ -26595,8 +24379,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-61", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-61" }, "id": "5d822fd413a79914d39e9905", "title": "Step 61" @@ -26607,8 +24390,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-62", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-62" }, "id": "5d822fd413a79914d39e9906", "title": "Step 62" @@ -26619,8 +24401,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-63", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-63" }, "id": "5d822fd413a79914d39e9907", "title": "Step 63" @@ -26631,8 +24412,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-64", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-64" }, "id": "5d822fd413a79914d39e9908", "title": "Step 64" @@ -26643,8 +24423,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-65", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-65" }, "id": "5d822fd413a79914d39e9909", "title": "Step 65" @@ -26655,8 +24434,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-66", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-66" }, "id": "5d822fd413a79914d39e990a", "title": "Step 66" @@ -26667,8 +24445,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-67", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-67" }, "id": "5d822fd413a79914d39e990b", "title": "Step 67" @@ -26679,8 +24456,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-68", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-68" }, "id": "5d822fd413a79914d39e990c", "title": "Step 68" @@ -26691,8 +24467,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-69", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-69" }, "id": "5d822fd413a79914d39e990d", "title": "Step 69" @@ -26703,8 +24478,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-70", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-70" }, "id": "5d822fd413a79914d39e990e", "title": "Step 70" @@ -26715,8 +24489,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-71", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-71" }, "id": "5d822fd413a79914d39e990f", "title": "Step 71" @@ -26727,8 +24500,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-72", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-72" }, "id": "5d822fd413a79914d39e9910", "title": "Step 72" @@ -26739,8 +24511,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-73", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-73" }, "id": "5d822fd413a79914d39e9911", "title": "Step 73" @@ -26751,8 +24522,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-74", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-74" }, "id": "5d822fd413a79914d39e9912", "title": "Step 74" @@ -26763,8 +24533,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-75", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-75" }, "id": "5d822fd413a79914d39e9913", "title": "Step 75" @@ -26775,8 +24544,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-76", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-76" }, "id": "5d822fd413a79914d39e9914", "title": "Step 76" @@ -26787,8 +24555,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-106", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-106" }, "id": "5d822fd413a79914d39e9915", "title": "Step 106" @@ -26799,8 +24566,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-77", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-77" }, "id": "5d822fd413a79914d39e9916", "title": "Step 77" @@ -26811,8 +24577,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-78", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-78" }, "id": "5d822fd413a79914d39e9917", "title": "Step 78" @@ -26823,8 +24588,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-79", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-79" }, "id": "5d822fd413a79914d39e9918", "title": "Step 79" @@ -26835,8 +24599,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-80", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-80" }, "id": "5d822fd413a79914d39e9919", "title": "Step 80" @@ -26847,8 +24610,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-81", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-81" }, "id": "5d822fd413a79914d39e991a", "title": "Step 81" @@ -26859,8 +24621,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-82", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-82" }, "id": "5d822fd413a79914d39e991b", "title": "Step 82" @@ -26871,8 +24632,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-83", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-83" }, "id": "5d822fd413a79914d39e991c", "title": "Step 83" @@ -26883,8 +24643,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-84", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-84" }, "id": "5d822fd413a79914d39e991d", "title": "Step 84" @@ -26895,8 +24654,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-85", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-85" }, "id": "5d822fd413a79914d39e991e", "title": "Step 85" @@ -26907,8 +24665,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-86", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-86" }, "id": "5d822fd413a79914d39e991f", "title": "Step 86" @@ -26919,8 +24676,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-87", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-87" }, "id": "5d822fd413a79914d39e9920", "title": "Step 87" @@ -26931,8 +24687,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-88", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-88" }, "id": "5d822fd413a79914d39e9921", "title": "Step 88" @@ -26943,8 +24698,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-89", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-89" }, "id": "5d822fd413a79914d39e9922", "title": "Step 89" @@ -26955,8 +24709,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-90", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-90" }, "id": "5d822fd413a79914d39e9923", "title": "Step 90" @@ -26967,8 +24720,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-91", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-91" }, "id": "5d822fd413a79914d39e9924", "title": "Step 91" @@ -26979,8 +24731,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-92", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-92" }, "id": "5d822fd413a79914d39e9925", "title": "Step 92" @@ -26991,8 +24742,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-93", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-93" }, "id": "5d822fd413a79914d39e9926", "title": "Step 93" @@ -27003,8 +24753,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-94", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-94" }, "id": "5d822fd413a79914d39e9927", "title": "Step 94" @@ -27015,8 +24764,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-95", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-95" }, "id": "5d822fd413a79914d39e9928", "title": "Step 95" @@ -27027,8 +24775,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-96", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-96" }, "id": "5d822fd413a79914d39e9929", "title": "Step 96" @@ -27039,8 +24786,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-97", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-97" }, "id": "5d822fd413a79914d39e992a", "title": "Step 97" @@ -27051,8 +24797,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-98", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-98" }, "id": "5d822fd413a79914d39e992b", "title": "Step 98" @@ -27063,8 +24808,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-99", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-99" }, "id": "5d822fd413a79914d39e992c", "title": "Step 99" @@ -27075,8 +24819,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-100", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-100" }, "id": "5d822fd413a79914d39e992d", "title": "Step 100" @@ -27087,8 +24830,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-101", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-101" }, "id": "5d822fd413a79914d39e992e", "title": "Step 101" @@ -27099,8 +24841,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-102", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-102" }, "id": "5d822fd413a79914d39e992f", "title": "Step 102" @@ -27111,8 +24852,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-103", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-103" }, "id": "5d822fd413a79914d39e9930", "title": "Step 103" @@ -27123,8 +24863,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-109", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-109" }, "id": "5d822fd413a79914d39e9931", "title": "Step 109" @@ -27135,8 +24874,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-104", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-104" }, "id": "5d822fd413a79914d39e9932", "title": "Step 104" @@ -27147,8 +24885,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-105", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-105" }, "id": "5d822fd413a79914d39e9933", "title": "Step 105" @@ -27159,8 +24896,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-107", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-107" }, "id": "5d822fd413a79914d39e9934", "title": "Step 107" @@ -27171,8 +24907,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-108", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-108" }, "id": "5d822fd413a79914d39e9935", "title": "Step 108" @@ -27183,8 +24918,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-110", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-110" }, "id": "5d822fd413a79914d39e9936", "title": "Step 110" @@ -27195,8 +24929,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-111", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-111" }, "id": "5d822fd413a79914d39e9937", "title": "Step 111" @@ -27207,8 +24940,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-112", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-112" }, "id": "5d822fd413a79914d39e9938", "title": "Step 112" @@ -27219,8 +24951,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-113", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-113" }, "id": "5d822fd413a79914d39e9939", "title": "Step 113" @@ -27231,8 +24962,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-114", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-114" }, "id": "5d822fd413a79914d39e993a", "title": "Step 114" @@ -27243,8 +24973,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-115", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-115" }, "id": "5d822fd413a79914d39e993b", "title": "Step 115" @@ -27255,8 +24984,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-116", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-116" }, "id": "5d822fd413a79914d39e993c", "title": "Step 116" @@ -27267,8 +24995,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-117", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-117" }, "id": "5d822fd413a79914d39e993d", "title": "Step 117" @@ -27279,8 +25006,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-118", - "blockName": "Learn CSS Variables by Building a City Skyline" + "slug": "/learn/2022/responsive-web-design/learn-css-variables-by-building-a-city-skyline/step-118" }, "id": "5d822fd413a79914d39e993e", "title": "Step 118" @@ -27291,8 +25017,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-1", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-1" }, "id": "5dc174fcf86c76b9248c6eb2", "title": "Step 1" @@ -27303,8 +25028,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-2", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-2" }, "id": "5dc1798ff86c76b9248c6eb3", "title": "Step 2" @@ -27315,8 +25039,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-3", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-3" }, "id": "5dc17d3bf86c76b9248c6eb4", "title": "Step 3" @@ -27327,8 +25050,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-4", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-4" }, "id": "5dc17dc8f86c76b9248c6eb5", "title": "Step 4" @@ -27339,8 +25061,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-5", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-5" }, "id": "5dc2385ff86c76b9248c6eb7", "title": "Step 5" @@ -27351,8 +25072,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-6", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-6" }, "id": "5dc23991f86c76b9248c6eb8", "title": "Step 6" @@ -27363,8 +25083,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-7", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-7" }, "id": "5dc23f9bf86c76b9248c6eba", "title": "Step 7" @@ -27375,8 +25094,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-8", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-8" }, "id": "5dc24073f86c76b9248c6ebb", "title": "Step 8" @@ -27387,8 +25105,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-9", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-9" }, "id": "5dc24165f86c76b9248c6ebc", "title": "Step 9" @@ -27399,8 +25116,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-10", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-10" }, "id": "5dc24614f86c76b9248c6ebd", "title": "Step 10" @@ -27411,8 +25127,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-11", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-11" }, "id": "5ddbd81294d8ddc1510a8e56", "title": "Step 11" @@ -27423,8 +25138,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-12", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-12" }, "id": "5dfa22d1b521be39a3de7be0", "title": "Step 12" @@ -27435,8 +25149,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-14", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-14" }, "id": "5dfa2407b521be39a3de7be1", "title": "Step 14" @@ -27447,8 +25160,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-15", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-15" }, "id": "5dfa30b9eacea3f48c6300ad", "title": "Step 15" @@ -27459,8 +25171,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-18", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-18" }, "id": "5dfa3589eacea3f48c6300ae", "title": "Step 18" @@ -27471,8 +25182,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-19", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-19" }, "id": "5dfa371beacea3f48c6300af", "title": "Step 19" @@ -27483,8 +25193,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-20", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-20" }, "id": "5dfa37b9eacea3f48c6300b0", "title": "Step 20" @@ -27495,8 +25204,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-21", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-21" }, "id": "5dfb5ecbeacea3f48c6300b1", "title": "Step 21" @@ -27507,8 +25215,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-22", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-22" }, "id": "5dfb6250eacea3f48c6300b2", "title": "Step 22" @@ -27519,8 +25226,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-23", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-23" }, "id": "5dfb655eeacea3f48c6300b3", "title": "Step 23" @@ -27531,8 +25237,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-24", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-24" }, "id": "5dfb6a35eacea3f48c6300b4", "title": "Step 24" @@ -27543,8 +25248,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-25", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-25" }, "id": "5ef9b03c81a63668521804d0", "title": "Step 25" @@ -27555,8 +25259,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-26", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-26" }, "id": "5ef9b03c81a63668521804d1", "title": "Step 26" @@ -27567,8 +25270,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-27", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-27" }, "id": "5ef9b03c81a63668521804d2", "title": "Step 27" @@ -27579,8 +25281,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-28", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-28" }, "id": "5ef9b03c81a63668521804d3", "title": "Step 28" @@ -27591,8 +25292,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-32", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-32" }, "id": "5ef9b03c81a63668521804d4", "title": "Step 32" @@ -27603,8 +25303,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-34", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-34" }, "id": "5ef9b03c81a63668521804d5", "title": "Step 34" @@ -27615,8 +25314,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-35", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-35" }, "id": "5ef9b03c81a63668521804d6", "title": "Step 35" @@ -27627,8 +25325,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-36", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-36" }, "id": "5ef9b03c81a63668521804d7", "title": "Step 36" @@ -27639,8 +25336,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-37", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-37" }, "id": "5ef9b03c81a63668521804d8", "title": "Step 37" @@ -27651,8 +25347,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-40", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-40" }, "id": "5ef9b03c81a63668521804d9", "title": "Step 40" @@ -27663,8 +25358,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-42", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-42" }, "id": "5ef9b03c81a63668521804da", "title": "Step 42" @@ -27675,8 +25369,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-41", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-41" }, "id": "5ef9b03c81a63668521804db", "title": "Step 41" @@ -27687,8 +25380,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-44", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-44" }, "id": "5ef9b03c81a63668521804dc", "title": "Step 44" @@ -27699,8 +25391,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-45", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-45" }, "id": "5ef9b03c81a63668521804dd", "title": "Step 45" @@ -27711,8 +25402,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-48", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-48" }, "id": "5ef9b03c81a63668521804de", "title": "Step 48" @@ -27723,8 +25413,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-46", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-46" }, "id": "5ef9b03c81a63668521804df", "title": "Step 46" @@ -27735,8 +25424,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-50", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-50" }, "id": "5ef9b03c81a63668521804e1", "title": "Step 50" @@ -27747,8 +25435,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-54", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-54" }, "id": "5ef9b03c81a63668521804e2", "title": "Step 54" @@ -27759,8 +25446,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-58", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-58" }, "id": "5ef9b03c81a63668521804e3", "title": "Step 58" @@ -27771,8 +25457,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-61", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-61" }, "id": "5ef9b03c81a63668521804e5", "title": "Step 61" @@ -27783,8 +25468,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-62", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-62" }, "id": "5ef9b03c81a63668521804e7", "title": "Step 62" @@ -27795,8 +25479,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-63", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-63" }, "id": "5ef9b03c81a63668521804e8", "title": "Step 63" @@ -27807,8 +25490,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-64", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-64" }, "id": "5ef9b03c81a63668521804e9", "title": "Step 64" @@ -27819,8 +25501,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-65", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-65" }, "id": "5ef9b03c81a63668521804ea", "title": "Step 65" @@ -27831,8 +25512,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-66", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-66" }, "id": "5ef9b03c81a63668521804eb", "title": "Step 66" @@ -27843,8 +25523,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-67", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-67" }, "id": "5ef9b03c81a63668521804ec", "title": "Step 67" @@ -27855,8 +25534,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-68", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-68" }, "id": "5ef9b03c81a63668521804ee", "title": "Step 68" @@ -27867,8 +25545,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-29", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-29" }, "id": "5efada803cbd2bbdab94e332", "title": "Step 29" @@ -27879,8 +25556,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-30", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-30" }, "id": "5efae0543cbd2bbdab94e333", "title": "Step 30" @@ -27891,8 +25567,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-31", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-31" }, "id": "5efae16e3cbd2bbdab94e334", "title": "Step 31" @@ -27903,8 +25578,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-38", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-38" }, "id": "5efb23e70dc218d6c85f89b1", "title": "Step 38" @@ -27915,8 +25589,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-43", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-43" }, "id": "5efb2c990dc218d6c85f89b2", "title": "Step 43" @@ -27927,8 +25600,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-56", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-56" }, "id": "5efc4f528d6a74d05e68af74", "title": "Step 56" @@ -27939,8 +25611,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-57", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-57" }, "id": "5efc518e8d6a74d05e68af75", "title": "Step 57" @@ -27951,8 +25622,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-55", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-55" }, "id": "5efc54138d6a74d05e68af76", "title": "Step 55" @@ -27963,8 +25633,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-59", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-59" }, "id": "5efc575c8d6a74d05e68af77", "title": "Step 59" @@ -27975,8 +25644,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-47", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-47" }, "id": "5f05a1d8e233dff4a68508d8", "title": "Step 47" @@ -27987,8 +25655,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-16", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-16" }, "id": "5f07be6ef7412fbad0c5626b", "title": "Step 16" @@ -27999,8 +25666,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-17", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-17" }, "id": "5f07c98cdb9413cbd4b16750", "title": "Step 17" @@ -28011,8 +25677,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-33", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-33" }, "id": "5f07fb1579dc934717801375", "title": "Step 33" @@ -28023,8 +25688,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-51", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-51" }, "id": "5f0d48e7b435f13ab6550051", "title": "Step 51" @@ -28035,8 +25699,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-52", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-52" }, "id": "5f0d4ab1b435f13ab6550052", "title": "Step 52" @@ -28047,8 +25710,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-53", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-53" }, "id": "5f0d4d04b435f13ab6550053", "title": "Step 53" @@ -28059,8 +25721,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-49", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-49" }, "id": "5f1a80975fc4bcae0edb3497", "title": "Step 49" @@ -28071,8 +25732,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-60", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-60" }, "id": "5f1a89f1190aff21ae42105a", "title": "Step 60" @@ -28083,8 +25743,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-69", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-69" }, "id": "62bb4009e3458a128ff57d5d", "title": "Step 69" @@ -28095,8 +25754,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-13", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-13" }, "id": "62dabe2ef403a12d5d295273", "title": "Step 13" @@ -28107,8 +25765,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-39", - "blockName": "Learn HTML by Building a Cat Photo App" + "slug": "/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-39" }, "id": "7cf9b03d81a65668421804c3", "title": "Step 39" @@ -28119,8 +25776,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-1", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-1" }, "id": "60eebd07ea685b0e777b5583", "title": "Step 1" @@ -28131,8 +25787,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-2", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-2" }, "id": "60f027099a15b00485563dd2", "title": "Step 2" @@ -28143,8 +25798,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-3", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-3" }, "id": "60f027c87bc98f050395c139", "title": "Step 3" @@ -28155,8 +25809,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-4", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-4" }, "id": "60f0286404aefb0562a4fdf9", "title": "Step 4" @@ -28167,8 +25820,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-6", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-6" }, "id": "60f02e7361b68405e27b62a5", "title": "Step 6" @@ -28179,8 +25831,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-7", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-7" }, "id": "60f030d388cb74067cf291c3", "title": "Step 7" @@ -28191,8 +25842,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-8", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-8" }, "id": "60f1922fcbd2410527b3bd89", "title": "Step 8" @@ -28203,8 +25853,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-9", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-9" }, "id": "60f1a5e2d2c23707a4f9a660", "title": "Step 9" @@ -28215,8 +25864,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-10", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-10" }, "id": "60f1a9cbd23023082e149fee", "title": "Step 10" @@ -28227,8 +25875,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-11", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-11" }, "id": "60f5c3e399ff1a05629964e4", "title": "Step 11" @@ -28239,8 +25886,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-13", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-13" }, "id": "60f5cb8875ab6a0610f05071", "title": "Step 13" @@ -28251,8 +25897,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-14", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-14" }, "id": "60f5d2776c854e069560fbe6", "title": "Step 14" @@ -28263,8 +25908,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-15", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-15" }, "id": "60f5dc35c07ac1078f140916", "title": "Step 15" @@ -28275,8 +25919,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-16", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-16" }, "id": "60f803d5241e6a0433a523a1", "title": "Step 16" @@ -28287,8 +25930,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-17", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-17" }, "id": "60f805f813eaf2049bc2ceea", "title": "Step 17" @@ -28299,8 +25941,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-19", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-19" }, "id": "60f80e0081e0f2052ae5b505", "title": "Step 19" @@ -28311,8 +25952,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-20", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-20" }, "id": "60f81167d0d4910809f88945", "title": "Step 20" @@ -28323,8 +25963,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-21", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-21" }, "id": "60f81616cff80508badf9ad5", "title": "Step 21" @@ -28335,8 +25974,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-22", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-22" }, "id": "60f83e7bfc09900959f41e20", "title": "Step 22" @@ -28347,8 +25985,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-23", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-23" }, "id": "60f84ec41116b209c280ba91", "title": "Step 23" @@ -28359,8 +25996,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-24", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-24" }, "id": "60f852f645b5310a8264f555", "title": "Step 24" @@ -28371,8 +26007,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-25", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-25" }, "id": "60f85a62fb30c80bcea0cedb", "title": "Step 25" @@ -28383,8 +26018,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-26", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-26" }, "id": "60f8604682407e0d017bbf7f", "title": "Step 26" @@ -28395,8 +26029,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-27", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-27" }, "id": "60f8618d191b940d62038513", "title": "Step 27" @@ -28407,8 +26040,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-28", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-28" }, "id": "60fab4a123ce4b04526b082b", "title": "Step 28" @@ -28419,8 +26051,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-30", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-30" }, "id": "60fab8367d35de04e5cb7929", "title": "Step 30" @@ -28431,8 +26062,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-31", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-31" }, "id": "60fab9f17fa294054b74228c", "title": "Step 31" @@ -28443,8 +26073,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-32", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-32" }, "id": "60fabf0dd4959805dbae09e6", "title": "Step 32" @@ -28455,8 +26084,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-33", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-33" }, "id": "60fac4095512d3066053d73c", "title": "Step 33" @@ -28467,8 +26095,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-34", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-34" }, "id": "60fac56271087806def55b33", "title": "Step 34" @@ -28479,8 +26106,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-35", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-35" }, "id": "60fac8d7fdfaee0796934f20", "title": "Step 35" @@ -28491,8 +26117,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-36", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-36" }, "id": "60faca286cb48b07f6482970", "title": "Step 36" @@ -28503,8 +26128,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-37", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-37" }, "id": "60facde2d0dc61085b41063f", "title": "Step 37" @@ -28515,8 +26139,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-39", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-39" }, "id": "60facf914c7b9b08d7510c2c", "title": "Step 39" @@ -28527,8 +26150,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-40", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-40" }, "id": "60fad0a812d9890938524f50", "title": "Step 40" @@ -28539,8 +26161,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-41", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-41" }, "id": "60fad1cafcde010995e15306", "title": "Step 41" @@ -28551,8 +26172,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-42", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-42" }, "id": "60fad6dfcc0d930a59becf12", "title": "Step 42" @@ -28563,8 +26183,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-43", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-43" }, "id": "60fad8e6148f310bba7890b1", "title": "Step 43" @@ -28575,8 +26194,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-44", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-44" }, "id": "60fad99e09f9d30c1657e790", "title": "Step 44" @@ -28587,8 +26205,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-45", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-45" }, "id": "60fadb18058e950c73925279", "title": "Step 45" @@ -28599,8 +26216,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-46", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-46" }, "id": "60fadce90f85c50d0bb0dd4f", "title": "Step 46" @@ -28611,8 +26227,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-48", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-48" }, "id": "60fadd972e6ffe0d6858fa2d", "title": "Step 48" @@ -28623,8 +26238,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-49", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-49" }, "id": "60fadfa2b540b70dcfa8b771", "title": "Step 49" @@ -28635,8 +26249,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-50", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-50" }, "id": "60fc219d333e37046f474a6e", "title": "Step 50" @@ -28647,8 +26260,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-51", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-51" }, "id": "60fc22d1e64d1b04cdd4e602", "title": "Step 51" @@ -28659,8 +26271,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-52", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-52" }, "id": "60fc236dc04532052926fdac", "title": "Step 52" @@ -28671,8 +26282,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-53", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-53" }, "id": "60ffe1bc30415f042faea936", "title": "Step 53" @@ -28683,8 +26293,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-54", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-54" }, "id": "60ffe3936796ac04959285a9", "title": "Step 54" @@ -28695,8 +26304,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-55", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-55" }, "id": "60ffe4f4ec18cd04dc470c56", "title": "Step 55" @@ -28707,8 +26315,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-56", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-56" }, "id": "60ffe69ee377c6055e192a46", "title": "Step 56" @@ -28719,8 +26326,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-57", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-57" }, "id": "60ffe7d8aae62c05bcc9e7eb", "title": "Step 57" @@ -28731,8 +26337,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-58", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-58" }, "id": "60ffe8a5ceb0e90618db06d9", "title": "Step 58" @@ -28743,8 +26348,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-59", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-59" }, "id": "60ffe947a868ec068f7850f6", "title": "Step 59" @@ -28755,8 +26359,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-60", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-60" }, "id": "60ffe9cb47809106eda2f2c9", "title": "Step 60" @@ -28767,8 +26370,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-61", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-61" }, "id": "60ffec2825da1007509ddd06", "title": "Step 61" @@ -28779,8 +26381,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-62", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-62" }, "id": "60ffecefac971607ae73c60f", "title": "Step 62" @@ -28791,8 +26392,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-63", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-63" }, "id": "60ffefd6479a3d084fb77cbc", "title": "Step 63" @@ -28803,8 +26403,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-47", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-47" }, "id": "62b30924c5e4ef0daba23b5e", "title": "Step 47" @@ -28815,8 +26414,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-5", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-5" }, "id": "62cc5b1779e4d313466f73c5", "title": "Step 5" @@ -28827,8 +26425,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-18", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-18" }, "id": "62ff8b9dab5ac88e4d3d43a3", "title": "Step 18" @@ -28839,8 +26436,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-29", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-29" }, "id": "62ff8e998d3e7eae14d6ae3b", "title": "Step 29" @@ -28851,8 +26447,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-38", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-38" }, "id": "62ff919a7b5612c0670923a5", "title": "Step 38" @@ -28863,8 +26458,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-12", - "blockName": "Learn HTML Forms by Building a Registration Form" + "slug": "/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-12" }, "id": "63541ef4f96cd82e8e6c788a", "title": "Step 12" @@ -28875,8 +26469,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-1", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-1" }, "id": "60b69a66b6ddb80858c51578", "title": "Step 1" @@ -28887,8 +26480,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-2", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-2" }, "id": "60b69a66b6ddb80858c51579", "title": "Step 2" @@ -28899,8 +26491,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-4", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-4" }, "id": "60b69a66b6ddb80858c5157a", "title": "Step 4" @@ -28911,8 +26502,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-5", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-5" }, "id": "60b69a66b6ddb80858c5157b", "title": "Step 5" @@ -28923,8 +26513,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-6", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-6" }, "id": "60b69a66b6ddb80858c5157c", "title": "Step 6" @@ -28935,8 +26524,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-7", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-7" }, "id": "60b69a66b6ddb80858c5157d", "title": "Step 7" @@ -28947,8 +26535,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-8", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-8" }, "id": "60b69a66b6ddb80858c5157e", "title": "Step 8" @@ -28959,8 +26546,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-9", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-9" }, "id": "60b69a66b6ddb80858c5157f", "title": "Step 9" @@ -28971,8 +26557,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-10", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-10" }, "id": "60b69a66b6ddb80858c51580", "title": "Step 10" @@ -28983,8 +26568,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-11", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-11" }, "id": "60b69a66b6ddb80858c51581", "title": "Step 11" @@ -28995,8 +26579,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-12", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-12" }, "id": "60b69a66b6ddb80858c51582", "title": "Step 12" @@ -29007,8 +26590,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-13", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-13" }, "id": "60b69a66b6ddb80858c51583", "title": "Step 13" @@ -29019,8 +26601,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-14", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-14" }, "id": "60b69a66b6ddb80858c51584", "title": "Step 14" @@ -29031,8 +26612,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-15", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-15" }, "id": "60b69a66b6ddb80858c51585", "title": "Step 15" @@ -29043,8 +26623,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-16", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-16" }, "id": "60b69a66b6ddb80858c51586", "title": "Step 16" @@ -29055,8 +26634,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-17", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-17" }, "id": "60b69a66b6ddb80858c51587", "title": "Step 17" @@ -29067,8 +26645,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-18", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-18" }, "id": "60b69a66b6ddb80858c51588", "title": "Step 18" @@ -29079,8 +26656,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-19", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-19" }, "id": "60b69a66b6ddb80858c51589", "title": "Step 19" @@ -29091,8 +26667,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-20", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-20" }, "id": "60b69a66b6ddb80858c5158a", "title": "Step 20" @@ -29103,8 +26678,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-21", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-21" }, "id": "60b69a66b6ddb80858c5158b", "title": "Step 21" @@ -29115,8 +26689,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-22", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-22" }, "id": "60b69a66b6ddb80858c5158c", "title": "Step 22" @@ -29127,8 +26700,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-23", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-23" }, "id": "60b69a66b6ddb80858c5158d", "title": "Step 23" @@ -29139,8 +26711,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-24", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-24" }, "id": "60b69a66b6ddb80858c5158e", "title": "Step 24" @@ -29151,8 +26722,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-25", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-25" }, "id": "60b69a66b6ddb80858c5158f", "title": "Step 25" @@ -29163,8 +26733,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-26", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-26" }, "id": "60b69a66b6ddb80858c51590", "title": "Step 26" @@ -29175,8 +26744,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-27", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-27" }, "id": "60b69a66b6ddb80858c51591", "title": "Step 27" @@ -29187,8 +26755,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-28", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-28" }, "id": "60b69a66b6ddb80858c51592", "title": "Step 28" @@ -29199,8 +26766,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-29", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-29" }, "id": "60b69a66b6ddb80858c51593", "title": "Step 29" @@ -29211,8 +26777,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-30", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-30" }, "id": "60b69a66b6ddb80858c51594", "title": "Step 30" @@ -29223,8 +26788,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-31", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-31" }, "id": "60b69a66b6ddb80858c51595", "title": "Step 31" @@ -29235,8 +26799,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-32", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-32" }, "id": "60b69a66b6ddb80858c51596", "title": "Step 32" @@ -29247,8 +26810,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-33", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-33" }, "id": "60b69a66b6ddb80858c51597", "title": "Step 33" @@ -29259,8 +26821,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-34", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-34" }, "id": "60b69a66b6ddb80858c51598", "title": "Step 34" @@ -29271,8 +26832,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-35", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-35" }, "id": "60b69a66b6ddb80858c51599", "title": "Step 35" @@ -29283,8 +26843,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-36", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-36" }, "id": "60b69a66b6ddb80858c5159a", "title": "Step 36" @@ -29295,8 +26854,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-37", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-37" }, "id": "60b69a66b6ddb80858c5159b", "title": "Step 37" @@ -29307,8 +26865,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-38", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-38" }, "id": "60b69a66b6ddb80858c5159c", "title": "Step 38" @@ -29319,8 +26876,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-39", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-39" }, "id": "60b69a66b6ddb80858c5159d", "title": "Step 39" @@ -29331,8 +26887,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-40", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-40" }, "id": "60b69a66b6ddb80858c5159e", "title": "Step 40" @@ -29343,8 +26898,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-42", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-42" }, "id": "60b69a66b6ddb80858c5159f", "title": "Step 42" @@ -29355,8 +26909,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-43", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-43" }, "id": "60b69a66b6ddb80858c515a0", "title": "Step 43" @@ -29367,8 +26920,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-44", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-44" }, "id": "60b69a66b6ddb80858c515a1", "title": "Step 44" @@ -29379,8 +26931,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-45", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-45" }, "id": "60b69a66b6ddb80858c515a2", "title": "Step 45" @@ -29391,8 +26942,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-46", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-46" }, "id": "60b69a66b6ddb80858c515a3", "title": "Step 46" @@ -29403,8 +26953,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-47", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-47" }, "id": "60b69a66b6ddb80858c515a4", "title": "Step 47" @@ -29415,8 +26964,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-48", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-48" }, "id": "60b69a66b6ddb80858c515a5", "title": "Step 48" @@ -29427,8 +26975,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-49", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-49" }, "id": "60b69a66b6ddb80858c515a6", "title": "Step 49" @@ -29439,8 +26986,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-50", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-50" }, "id": "60b69a66b6ddb80858c515a7", "title": "Step 50" @@ -29451,8 +26997,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-51", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-51" }, "id": "60b69a66b6ddb80858c515a8", "title": "Step 51" @@ -29463,8 +27008,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-52", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-52" }, "id": "60b69a66b6ddb80858c515a9", "title": "Step 52" @@ -29475,8 +27019,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-53", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-53" }, "id": "60b69a66b6ddb80858c515aa", "title": "Step 53" @@ -29487,8 +27030,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-54", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-54" }, "id": "60b69a66b6ddb80858c515ab", "title": "Step 54" @@ -29499,8 +27041,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-55", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-55" }, "id": "60b69a66b6ddb80858c515ac", "title": "Step 55" @@ -29511,8 +27052,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-56", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-56" }, "id": "60b69a66b6ddb80858c515ad", "title": "Step 56" @@ -29523,8 +27063,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-57", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-57" }, "id": "60b69a66b6ddb80858c515ae", "title": "Step 57" @@ -29535,8 +27074,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-58", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-58" }, "id": "60b69a66b6ddb80858c515af", "title": "Step 58" @@ -29547,8 +27085,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-59", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-59" }, "id": "60b69a66b6ddb80858c515b0", "title": "Step 59" @@ -29559,8 +27096,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-60", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-60" }, "id": "60b69a66b6ddb80858c515b1", "title": "Step 60" @@ -29571,8 +27107,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-61", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-61" }, "id": "60b69a66b6ddb80858c515b2", "title": "Step 61" @@ -29583,8 +27118,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-62", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-62" }, "id": "60b69a66b6ddb80858c515b3", "title": "Step 62" @@ -29595,8 +27129,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-63", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-63" }, "id": "60b69a66b6ddb80858c515b4", "title": "Step 63" @@ -29607,8 +27140,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-64", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-64" }, "id": "60b69a66b6ddb80858c515b5", "title": "Step 64" @@ -29619,8 +27151,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-65", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-65" }, "id": "60b69a66b6ddb80858c515b6", "title": "Step 65" @@ -29631,8 +27162,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-66", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-66" }, "id": "60b69a66b6ddb80858c515b7", "title": "Step 66" @@ -29643,8 +27173,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-67", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-67" }, "id": "60b69a66b6ddb80858c515b8", "title": "Step 67" @@ -29655,8 +27184,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-68", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-68" }, "id": "60b69a66b6ddb80858c515b9", "title": "Step 68" @@ -29667,8 +27195,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-69", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-69" }, "id": "60b69a66b6ddb80858c515ba", "title": "Step 69" @@ -29679,8 +27206,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-70", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-70" }, "id": "60b69a66b6ddb80858c515bc", "title": "Step 70" @@ -29691,8 +27217,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-79", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-79" }, "id": "60b69a66b6ddb80858c515bd", "title": "Step 79" @@ -29703,8 +27228,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-80", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-80" }, "id": "60b69a66b6ddb80858c515be", "title": "Step 80" @@ -29715,8 +27239,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-81", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-81" }, "id": "60b69a66b6ddb80858c515bf", "title": "Step 81" @@ -29727,8 +27250,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-82", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-82" }, "id": "60b69a66b6ddb80858c515c0", "title": "Step 82" @@ -29739,8 +27261,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-83", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-83" }, "id": "60b69a66b6ddb80858c515c1", "title": "Step 83" @@ -29751,8 +27272,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-84", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-84" }, "id": "60b69a66b6ddb80858c515c2", "title": "Step 84" @@ -29763,8 +27283,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-85", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-85" }, "id": "60b69a66b6ddb80858c515c3", "title": "Step 85" @@ -29775,8 +27294,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-86", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-86" }, "id": "60b69a66b6ddb80858c515c4", "title": "Step 86" @@ -29787,8 +27305,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-87", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-87" }, "id": "60b69a66b6ddb80858c515c5", "title": "Step 87" @@ -29799,8 +27316,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-88", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-88" }, "id": "60b69a66b6ddb80858c515c6", "title": "Step 88" @@ -29811,8 +27327,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-89", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-89" }, "id": "60b69a66b6ddb80858c515c7", "title": "Step 89" @@ -29823,8 +27338,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-3", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-3" }, "id": "60b80da8676fb3227967a731", "title": "Step 3" @@ -29835,8 +27349,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-75", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-75" }, "id": "60ba890832b4940f24d1936b", "title": "Step 75" @@ -29847,8 +27360,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-74", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-74" }, "id": "60ba89123a445e0f5c9e4022", "title": "Step 74" @@ -29859,8 +27371,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-73", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-73" }, "id": "60ba8913f1704c0f7a8906b8", "title": "Step 73" @@ -29871,8 +27382,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-72", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-72" }, "id": "60ba89146b25080f99ab54ad", "title": "Step 72" @@ -29883,8 +27393,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-71", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-71" }, "id": "60ba8914bab51f0fb8228e9c", "title": "Step 71" @@ -29895,8 +27404,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-76", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-76" }, "id": "60ba929345ab0714a3743655", "title": "Step 76" @@ -29907,8 +27415,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-77", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-77" }, "id": "60ba9296d4d6b414c1b10995", "title": "Step 77" @@ -29919,8 +27426,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-78", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-78" }, "id": "60ba92987c1e4914dfa7a0b9", "title": "Step 78" @@ -29931,8 +27437,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-41", - "blockName": "Learn Intermediate CSS by Building a Picasso Painting" + "slug": "/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-picasso-painting/step-41" }, "id": "60bad32219ebcb4a8810ac6a", "title": "Step 41" @@ -29943,8 +27448,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-1", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-1" }, "id": "61fd5a93fd62bb35968adeab", "title": "Step 1" @@ -29955,8 +27459,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-2", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-2" }, "id": "61fd6343fb42013d99bcd7f3", "title": "Step 2" @@ -29967,8 +27470,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-3", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-3" }, "id": "61fd66c687e610436494c6f1", "title": "Step 3" @@ -29979,8 +27481,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-4", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-4" }, "id": "61fd67a656743144844941cb", "title": "Step 4" @@ -29991,8 +27492,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-5", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-5" }, "id": "61fd6ab779390f49148773bb", "title": "Step 5" @@ -30003,8 +27503,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-6", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-6" }, "id": "61fd6b7c83dbf54a08cf0498", "title": "Step 6" @@ -30015,8 +27514,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-7", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-7" }, "id": "61fd6cc9475a784b7776233e", "title": "Step 7" @@ -30027,8 +27525,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-8", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-8" }, "id": "61fd70336ebb3e4f62ee81ba", "title": "Step 8" @@ -30039,8 +27536,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-9", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-9" }, "id": "61fd719788899952e67692b9", "title": "Step 9" @@ -30051,8 +27547,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-10", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-10" }, "id": "61fd71d596e8f253b9408b39", "title": "Step 10" @@ -30063,8 +27558,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-11", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-11" }, "id": "61fd75ea7f663457612dba02", "title": "Step 11" @@ -30075,8 +27569,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-12", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-12" }, "id": "61fd7648a7ba2e5882436831", "title": "Step 12" @@ -30087,8 +27580,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-13", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-13" }, "id": "61fd778081276b59d59abad6", "title": "Step 13" @@ -30099,8 +27591,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-14", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-14" }, "id": "61fd77f7ad2aeb5ae34d07d6", "title": "Step 14" @@ -30111,8 +27602,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-15", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-15" }, "id": "61fd78621573aa5e8b512f5e", "title": "Step 15" @@ -30123,8 +27613,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-16", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-16" }, "id": "61fd7a160ed17960e971f28b", "title": "Step 16" @@ -30135,8 +27624,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-17", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-17" }, "id": "61fd7b3fcaa5406257abc5d1", "title": "Step 17" @@ -30147,8 +27635,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-18", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-18" }, "id": "61fd8e491324ce717da97ffe", "title": "Step 18" @@ -30159,8 +27646,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-19", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-19" }, "id": "61fd8fd08af43372f02952d0", "title": "Step 19" @@ -30171,8 +27657,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-20", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-20" }, "id": "61fd9126aa72a474301fc49f", "title": "Step 20" @@ -30183,8 +27668,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-21", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-21" }, "id": "61fd933ba685de776a94997e", "title": "Step 21" @@ -30195,8 +27679,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-22", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-22" }, "id": "61fd94056e0355785fbba4d3", "title": "Step 22" @@ -30207,8 +27690,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-23", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-23" }, "id": "61fd986ddbcbd47ba8fbc5ec", "title": "Step 23" @@ -30219,8 +27701,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-24", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-24" }, "id": "61fd990577d8227dd93fbeeb", "title": "Step 24" @@ -30231,8 +27712,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-25", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-25" }, "id": "61fd9a4ff2fc4481b9157bd7", "title": "Step 25" @@ -30243,8 +27723,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-26", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-26" }, "id": "61fd9ad665a4a282c8106be3", "title": "Step 26" @@ -30255,8 +27734,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-27", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-27" }, "id": "61fd9b7285bde783ad5b8aac", "title": "Step 27" @@ -30267,8 +27745,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-28", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-28" }, "id": "61fd9d9fbdfe078800317055", "title": "Step 28" @@ -30279,8 +27756,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-29", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-29" }, "id": "61fda307bde0b091cf7d884a", "title": "Step 29" @@ -30291,8 +27767,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-30", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-30" }, "id": "61fda339eadcfd92a6812bed", "title": "Step 30" @@ -30303,8 +27778,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-31", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-31" }, "id": "61fdac1e31692f9a9ad97295", "title": "Step 31" @@ -30315,8 +27789,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-32", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-32" }, "id": "61fdaea3999cb19d76ce717b", "title": "Step 32" @@ -30327,8 +27800,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-33", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-33" }, "id": "61fdaf9ff894b6a084ecdc1b", "title": "Step 33" @@ -30339,8 +27811,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-34", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-34" }, "id": "61fdafe6f07fd7a1c6785bc2", "title": "Step 34" @@ -30351,8 +27822,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-35", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-35" }, "id": "61fdb04d9939f0a26ca51c2b", "title": "Step 35" @@ -30363,8 +27833,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-36", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-36" }, "id": "620159cd5431aa34bc6a4c9c", "title": "Step 36" @@ -30375,8 +27844,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-37", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-37" }, "id": "62015a5da1c95c358f079ebb", "title": "Step 37" @@ -30387,8 +27855,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-38", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-38" }, "id": "62015cd2654a1139321a89d2", "title": "Step 38" @@ -30399,8 +27866,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-39", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-39" }, "id": "62015d8942384c3aed48329e", "title": "Step 39" @@ -30411,8 +27877,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-40", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-40" }, "id": "620167374bb8b4455cd11125", "title": "Step 40" @@ -30423,8 +27888,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-41", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-41" }, "id": "620174ed519dd7506c1a4b61", "title": "Step 41" @@ -30435,8 +27899,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-42", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-42" }, "id": "620175b3710a0951cfa86edf", "title": "Step 42" @@ -30447,8 +27910,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-43", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-43" }, "id": "6201782cc420715562f36271", "title": "Step 43" @@ -30459,8 +27921,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-44", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-44" }, "id": "620179bc0a6a2358c72b90ad", "title": "Step 44" @@ -30471,8 +27932,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-45", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-45" }, "id": "62017b6f47454059bf2d3bd1", "title": "Step 45" @@ -30483,8 +27943,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-46", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-46" }, "id": "62017f47c87be96457c49f46", "title": "Step 46" @@ -30495,8 +27954,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-47", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-47" }, "id": "62017fa5bbef406580ceb44f", "title": "Step 47" @@ -30507,8 +27965,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-48", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-48" }, "id": "62018243f046a368fab8ffb6", "title": "Step 48" @@ -30519,8 +27976,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-49", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-49" }, "id": "6201830cb0c74b69f1b41635", "title": "Step 49" @@ -30531,8 +27987,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-50", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-50" }, "id": "620186f4b6b8356d2def576b", "title": "Step 50" @@ -30543,8 +27998,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-51", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-51" }, "id": "62018ba1aa263770c953be66", "title": "Step 51" @@ -30555,8 +28009,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-52", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-52" }, "id": "62018c3e94434a71af1d5eaa", "title": "Step 52" @@ -30567,8 +28020,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-53", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-53" }, "id": "62018ec29b3ae674f40bef31", "title": "Step 53" @@ -30579,8 +28031,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-54", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-54" }, "id": "62019093fe30e278e797d2f6", "title": "Step 54" @@ -30591,8 +28042,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-55", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-55" }, "id": "620191707bc65579ddd3ce15", "title": "Step 55" @@ -30603,8 +28053,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-56", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-56" }, "id": "620192a767533a7ad19d96d7", "title": "Step 56" @@ -30615,8 +28064,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-57", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-57" }, "id": "6201995d9ab88e80f1989dce", "title": "Step 57" @@ -30627,8 +28075,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-58", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-58" }, "id": "620199c7a7a32c81d4db3410", "title": "Step 58" @@ -30639,8 +28086,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-59", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-59" }, "id": "6201a1a7af32c287bd6b8183", "title": "Step 59" @@ -30651,8 +28097,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-60", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-60" }, "id": "6201a1cc668a34888f5b2f52", "title": "Step 60" @@ -30663,8 +28108,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-61", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-61" }, "id": "6201a20d742f5c89736c8cfb", "title": "Step 61" @@ -30675,8 +28119,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-62", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-62" }, "id": "6201a42e39bf3b95b6a33bf3", "title": "Step 62" @@ -30687,8 +28130,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-63", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-63" }, "id": "6201a4adcc6414968b391592", "title": "Step 63" @@ -30699,8 +28141,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-64", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-64" }, "id": "6201a5258af7b398b030bfaf", "title": "Step 64" @@ -30711,8 +28152,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-65", - "blockName": "Learn More About CSS Pseudo Selectors by Building A Balance Sheet" + "slug": "/learn/2022/responsive-web-design/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-65" }, "id": "6201a59be346d399c21d10b1", "title": "Step 65" @@ -30723,8 +28163,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-1", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-1" }, "id": "612e6afc009b450a437940a1", "title": "Step 1" @@ -30735,8 +28174,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-2", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-2" }, "id": "612e77aba7ca691f598feb02", "title": "Step 2" @@ -30747,8 +28185,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-3", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-3" }, "id": "612e78af05201622d4bab8aa", "title": "Step 3" @@ -30759,8 +28196,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-4", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-4" }, "id": "612e7d1c29fb872d6384379c", "title": "Step 4" @@ -30771,8 +28207,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-5", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-5" }, "id": "612e804c54d5e7308d7ebe56", "title": "Step 5" @@ -30783,8 +28218,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-6", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-6" }, "id": "612e813b3ba67633222cbe54", "title": "Step 6" @@ -30795,8 +28229,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-7", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-7" }, "id": "612e8279827a28352ce83a72", "title": "Step 7" @@ -30807,8 +28240,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-8", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-8" }, "id": "612e83ec2eca1e370f830511", "title": "Step 8" @@ -30819,8 +28251,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-9", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-9" }, "id": "612e89562043183c86df287c", "title": "Step 9" @@ -30831,8 +28262,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-10", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-10" }, "id": "612e89d254fe5d3df7d6693d", "title": "Step 10" @@ -30843,8 +28273,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-11", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-11" }, "id": "612e8eebe3a6dc3fcc33a66f", "title": "Step 11" @@ -30855,8 +28284,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-12", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-12" }, "id": "612e95ef2e4bdf41f69067f9", "title": "Step 12" @@ -30867,8 +28295,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-13", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-13" }, "id": "612e96fc87fe8e44f69f7ec5", "title": "Step 13" @@ -30879,8 +28306,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-14", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-14" }, "id": "612e98f3245c98475e49cfc6", "title": "Step 14" @@ -30891,8 +28317,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-15", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-15" }, "id": "612e9a21381a1949327512e6", "title": "Step 15" @@ -30903,8 +28328,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-16", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-16" }, "id": "612e9d142affc44a453655db", "title": "Step 16" @@ -30915,8 +28339,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-17", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-17" }, "id": "612e9f1e7e5ccd4fa9ada0be", "title": "Step 17" @@ -30927,8 +28350,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-18", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-18" }, "id": "612ea4c4993aba52ab4aa32e", "title": "Step 18" @@ -30939,8 +28361,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-19", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-19" }, "id": "612ea97df5742154772f312e", "title": "Step 19" @@ -30951,8 +28372,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-20", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-20" }, "id": "612ead8788d28655ef8db056", "title": "Step 20" @@ -30963,8 +28383,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-21", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-21" }, "id": "612eaf56b7ba3257fdbfb0db", "title": "Step 21" @@ -30975,8 +28394,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-22", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-22" }, "id": "612eb4893b63c75bb9251ddf", "title": "Step 22" @@ -30987,8 +28405,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-23", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-23" }, "id": "612eb75153591b5e3b1ab65e", "title": "Step 23" @@ -30999,8 +28416,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-24", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-24" }, "id": "612eb7ca8c275d5f89c73333", "title": "Step 24" @@ -31011,8 +28427,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-25", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-25" }, "id": "612eb8e984cd73677a92b7e9", "title": "Step 25" @@ -31023,8 +28438,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-26", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-26" }, "id": "612eb934f64a4d6890a45518", "title": "Step 26" @@ -31035,8 +28449,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-27", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-27" }, "id": "612ebcba99bfa46a15370b11", "title": "Step 27" @@ -31047,8 +28460,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-28", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-28" }, "id": "612ebe7fe6d07e6b76d1cae2", "title": "Step 28" @@ -31059,8 +28471,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-29", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-29" }, "id": "612ebedec97e096c8bf64999", "title": "Step 29" @@ -31071,8 +28482,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-30", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-30" }, "id": "612ebf9a210f2b6d77001e68", "title": "Step 30" @@ -31083,8 +28493,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-31", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-31" }, "id": "612ec0490ae8626e9adf82e4", "title": "Step 31" @@ -31095,8 +28504,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-32", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-32" }, "id": "612ec19d5268da7074941f84", "title": "Step 32" @@ -31107,8 +28515,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-33", - "blockName": "Learn Responsive Web Design by Building a Piano" + "slug": "/learn/2022/responsive-web-design/learn-responsive-web-design-by-building-a-piano/step-33" }, "id": "612ec29c84b9a6718b1f5cec", "title": "Step 33" @@ -31119,8 +28526,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-1", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-1" }, "id": "60a3e3396c7b40068ad6996a", "title": "Step 1" @@ -31131,8 +28537,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-2", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-2" }, "id": "60a3e3396c7b40068ad6996b", "title": "Step 2" @@ -31143,8 +28548,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-3", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-3" }, "id": "60a3e3396c7b40068ad6996c", "title": "Step 3" @@ -31155,8 +28559,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-4", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-4" }, "id": "60a3e3396c7b40068ad6996d", "title": "Step 4" @@ -31167,8 +28570,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-5", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-5" }, "id": "60a3e3396c7b40068ad6996e", "title": "Step 5" @@ -31179,8 +28581,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-6", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-6" }, "id": "60a3e3396c7b40068ad6996f", "title": "Step 6" @@ -31191,8 +28592,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-7", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-7" }, "id": "60a3e3396c7b40068ad69970", "title": "Step 7" @@ -31203,8 +28603,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-8", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-8" }, "id": "60a3e3396c7b40068ad69971", "title": "Step 8" @@ -31215,8 +28614,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-9", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-9" }, "id": "60a3e3396c7b40068ad69972", "title": "Step 9" @@ -31227,8 +28625,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-10", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-10" }, "id": "60a3e3396c7b40068ad69973", "title": "Step 10" @@ -31239,8 +28636,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-11", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-11" }, "id": "60a3e3396c7b40068ad69974", "title": "Step 11" @@ -31251,8 +28647,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-12", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-12" }, "id": "60a3e3396c7b40068ad69975", "title": "Step 12" @@ -31263,8 +28658,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-13", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-13" }, "id": "60a3e3396c7b40068ad69976", "title": "Step 13" @@ -31275,8 +28669,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-14", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-14" }, "id": "60a3e3396c7b40068ad69977", "title": "Step 14" @@ -31287,8 +28680,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-15", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-15" }, "id": "60a3e3396c7b40068ad69978", "title": "Step 15" @@ -31299,8 +28691,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-16", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-16" }, "id": "60a3e3396c7b40068ad69979", "title": "Step 16" @@ -31311,8 +28702,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-17", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-17" }, "id": "60a3e3396c7b40068ad6997a", "title": "Step 17" @@ -31323,8 +28713,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-18", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-18" }, "id": "60a3e3396c7b40068ad6997b", "title": "Step 18" @@ -31335,8 +28724,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-19", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-19" }, "id": "60a3e3396c7b40068ad6997c", "title": "Step 19" @@ -31347,8 +28735,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-20", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-20" }, "id": "60a3e3396c7b40068ad6997d", "title": "Step 20" @@ -31359,8 +28746,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-21", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-21" }, "id": "60a3e3396c7b40068ad6997e", "title": "Step 21" @@ -31371,8 +28757,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-22", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-22" }, "id": "60a3e3396c7b40068ad6997f", "title": "Step 22" @@ -31383,8 +28768,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-23", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-23" }, "id": "60a3e3396c7b40068ad69980", "title": "Step 23" @@ -31395,8 +28779,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-24", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-24" }, "id": "60a3e3396c7b40068ad69981", "title": "Step 24" @@ -31407,8 +28790,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-25", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-25" }, "id": "60a3e3396c7b40068ad69982", "title": "Step 25" @@ -31419,8 +28801,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-26", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-26" }, "id": "60a3e3396c7b40068ad69983", "title": "Step 26" @@ -31431,8 +28812,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-27", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-27" }, "id": "60a3e3396c7b40068ad69984", "title": "Step 27" @@ -31443,8 +28823,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-28", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-28" }, "id": "60a3e3396c7b40068ad69986", "title": "Step 28" @@ -31455,8 +28834,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-29", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-29" }, "id": "60a3e3396c7b40068ad69987", "title": "Step 29" @@ -31467,8 +28845,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-30", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-30" }, "id": "60a3e3396c7b40068ad69988", "title": "Step 30" @@ -31479,8 +28856,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-31", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-31" }, "id": "60a3e3396c7b40068ad69989", "title": "Step 31" @@ -31491,8 +28867,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-32", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-32" }, "id": "60a3e3396c7b40068ad6998a", "title": "Step 32" @@ -31503,8 +28878,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-33", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-33" }, "id": "60a3e3396c7b40068ad6998b", "title": "Step 33" @@ -31515,8 +28889,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-34", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-34" }, "id": "60a3e3396c7b40068ad6998c", "title": "Step 34" @@ -31527,8 +28900,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-35", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-35" }, "id": "60a3e3396c7b40068ad6998d", "title": "Step 35" @@ -31539,8 +28911,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-36", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-36" }, "id": "60a3e3396c7b40068ad6998e", "title": "Step 36" @@ -31551,8 +28922,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-37", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-37" }, "id": "60a3e3396c7b40068ad6998f", "title": "Step 37" @@ -31563,8 +28933,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-38", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-38" }, "id": "60a3e3396c7b40068ad69990", "title": "Step 38" @@ -31575,8 +28944,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-39", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-39" }, "id": "60a3e3396c7b40068ad69991", "title": "Step 39" @@ -31587,8 +28955,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-40", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-40" }, "id": "60a3e3396c7b40068ad69992", "title": "Step 40" @@ -31599,8 +28966,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-41", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-41" }, "id": "60a3e3396c7b40068ad69993", "title": "Step 41" @@ -31611,8 +28977,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-42", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-42" }, "id": "60a3e3396c7b40068ad69994", "title": "Step 42" @@ -31623,8 +28988,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-43", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-43" }, "id": "60a3e3396c7b40068ad69995", "title": "Step 43" @@ -31635,8 +28999,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-44", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-44" }, "id": "60a3e3396c7b40068ad69996", "title": "Step 44" @@ -31647,8 +29010,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-45", - "blockName": "Learn the CSS Box Model by Building a Rothko Painting" + "slug": "/learn/2022/responsive-web-design/learn-the-css-box-model-by-building-a-rothko-painting/step-45" }, "id": "60a3e3396c7b40068ad69997", "title": "Step 45" @@ -31659,8 +29021,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-1", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-1" }, "id": "615f2abbe7d18d49a1e0e1c8", "title": "Step 1" @@ -31671,8 +29032,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-2", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-2" }, "id": "615f2d4150fe0d4cbd0f2628", "title": "Step 2" @@ -31683,8 +29043,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-3", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-3" }, "id": "615f34948891834dd77655a6", "title": "Step 3" @@ -31695,8 +29054,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-4", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-4" }, "id": "615f34ecc1091b4fd5a8a484", "title": "Step 4" @@ -31707,8 +29065,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-5", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-5" }, "id": "615f357957e370510f21ea16", "title": "Step 5" @@ -31719,8 +29076,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-6", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-6" }, "id": "615f378014c2da526a109c81", "title": "Step 6" @@ -31731,8 +29087,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-7", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-7" }, "id": "615f38279e5c3d53692ea441", "title": "Step 7" @@ -31743,8 +29098,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-8", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-8" }, "id": "615f38cabc64e3556f98cc1a", "title": "Step 8" @@ -31755,8 +29109,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-9", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-9" }, "id": "615f3949f58e12577dcefb00", "title": "Step 9" @@ -31767,8 +29120,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-10", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-10" }, "id": "615f39d7da41b15851fa3fb9", "title": "Step 10" @@ -31779,8 +29131,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-11", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-11" }, "id": "615f3b091162165948e1cb33", "title": "Step 11" @@ -31791,8 +29142,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-12", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-12" }, "id": "615f3cafd794015aa9547a6d", "title": "Step 12" @@ -31803,8 +29153,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-13", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-13" }, "id": "615f3d9e59db4b5b8e960762", "title": "Step 13" @@ -31815,8 +29164,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-14", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-14" }, "id": "615f3e1b7233ee5c7595771f", "title": "Step 14" @@ -31827,8 +29175,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-15", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-15" }, "id": "615f3e4af8008c5d494d3afe", "title": "Step 15" @@ -31839,8 +29186,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-16", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-16" }, "id": "615f3ed16592445e57941aec", "title": "Step 16" @@ -31851,8 +29197,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-17", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-17" }, "id": "615f405b89a7ec5f8e2d11f4", "title": "Step 17" @@ -31863,8 +29208,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-18", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-18" }, "id": "615f40b01f680e608d360ed4", "title": "Step 18" @@ -31875,8 +29219,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-19", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-19" }, "id": "615f4172e9eec061d6456221", "title": "Step 19" @@ -31887,8 +29230,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-20", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-20" }, "id": "615f41c979787462e76dab90", "title": "Step 20" @@ -31899,8 +29241,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-21", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-21" }, "id": "615f423cf65d5864132a0956", "title": "Step 21" @@ -31911,8 +29252,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-22", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-22" }, "id": "615f42a021625f656101ef93", "title": "Step 22" @@ -31923,8 +29263,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-23", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-23" }, "id": "615f4bfb9de4a16703b56eb6", "title": "Step 23" @@ -31935,8 +29274,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-24", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-24" }, "id": "615f4ce9d877b668417c0c42", "title": "Step 24" @@ -31947,8 +29285,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-25", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-25" }, "id": "615f4dde9d72e3694cb9ee3b", "title": "Step 25" @@ -31959,8 +29296,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-26", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-26" }, "id": "615f4ec58334106a4170c2a8", "title": "Step 26" @@ -31971,8 +29307,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-27", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-27" }, "id": "615f4f9e4a40566b776a8f38", "title": "Step 27" @@ -31983,8 +29318,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-28", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-28" }, "id": "615f50473cc0196c6dd3892a", "title": "Step 28" @@ -31995,8 +29329,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-29", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-29" }, "id": "615f51257a8a516d80b6c743", "title": "Step 29" @@ -32007,8 +29340,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-30", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-30" }, "id": "615f51e4e5b24a6e80eccce1", "title": "Step 30" @@ -32019,8 +29351,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-31", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-31" }, "id": "615f522dea4f776f64dc3e91", "title": "Step 31" @@ -32031,8 +29362,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-32", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-32" }, "id": "615f5486b8fd4b71633f69b0", "title": "Step 32" @@ -32043,8 +29373,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-33", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-33" }, "id": "615f575b50b91e72af079480", "title": "Step 33" @@ -32055,8 +29384,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-34", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-34" }, "id": "615f5af373a68e744a3c5a76", "title": "Step 34" @@ -32067,8 +29395,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-35", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-35" }, "id": "615f5c1cb7575c7551ed8a40", "title": "Step 35" @@ -32079,8 +29406,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-36", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-36" }, "id": "615f5fd85d0062761f288364", "title": "Step 36" @@ -32091,8 +29417,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-37", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-37" }, "id": "615f61338c8ca176d6445574", "title": "Step 37" @@ -32103,8 +29428,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-38", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-38" }, "id": "615f666ac5edea782feb7e75", "title": "Step 38" @@ -32115,8 +29439,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-39", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-39" }, "id": "615f671b6d1919792745aa5d", "title": "Step 39" @@ -32127,8 +29450,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-40", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-40" }, "id": "615f6823d0815b7a991f2a75", "title": "Step 40" @@ -32139,8 +29461,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-41", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-41" }, "id": "615f6a7d4ba8037bc086c2c7", "title": "Step 41" @@ -32151,8 +29472,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-42", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-42" }, "id": "615f6b2d164f81809efd9bdc", "title": "Step 42" @@ -32163,8 +29483,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-43", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-43" }, "id": "615f6cc778f7698258467596", "title": "Step 43" @@ -32175,8 +29494,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-44", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-44" }, "id": "615f6fddaac1e083502d3e6a", "title": "Step 44" @@ -32187,8 +29505,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-45", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-45" }, "id": "615f70077a4ff98424236c1e", "title": "Step 45" @@ -32199,8 +29516,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-46", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-46" }, "id": "615f72a872354a850d4f533e", "title": "Step 46" @@ -32211,8 +29527,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-47", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-47" }, "id": "615f74a71f1e498619e38ee8", "title": "Step 47" @@ -32223,8 +29538,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-48", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-48" }, "id": "615f7ad94380408d971d14f6", "title": "Step 48" @@ -32235,8 +29549,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-49", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-49" }, "id": "615f7bc680f7168ea01ebf99", "title": "Step 49" @@ -32247,8 +29560,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-50", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-50" }, "id": "615f7c71eab8218f846e4503", "title": "Step 50" @@ -32259,8 +29571,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-51", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-51" }, "id": "615f7d489a581590d1350288", "title": "Step 51" @@ -32271,8 +29582,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-52", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-52" }, "id": "615f7de4487b64919bb4aa5e", "title": "Step 52" @@ -32283,8 +29593,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-53", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-53" }, "id": "615f7e7281626a92bbd62da8", "title": "Step 53" @@ -32295,8 +29604,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-54", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-54" }, "id": "615f7ecb09de9a938ef94756", "title": "Step 54" @@ -32307,8 +29615,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-55", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-55" }, "id": "615f7fa959ab75948f96a0d6", "title": "Step 55" @@ -32319,8 +29626,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-56", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-56" }, "id": "615f808d85793195b0f53be9", "title": "Step 56" @@ -32331,8 +29637,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-57", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-57" }, "id": "615f829d07b18f96f6f6684b", "title": "Step 57" @@ -32343,8 +29648,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-58", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-58" }, "id": "615f83ef928ec9982b785b6a", "title": "Step 58" @@ -32355,8 +29659,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-59", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-59" }, "id": "615f84f246e8ba98e3cd97be", "title": "Step 59" @@ -32367,8 +29670,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-60", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-60" }, "id": "615f887466db4ba14b5342cc", "title": "Step 60" @@ -32379,8 +29681,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-61", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-61" }, "id": "615f89e055040ba294719d2f", "title": "Step 61" @@ -32391,8 +29692,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-62", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-62" }, "id": "615f8bfe0f30a1a3c340356b", "title": "Step 62" @@ -32403,8 +29703,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-63", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-63" }, "id": "615f8f1223601fa546e93f31", "title": "Step 63" @@ -32415,8 +29714,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-64", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-64" }, "id": "615f905fbd1017a65ca224eb", "title": "Step 64" @@ -32427,8 +29725,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-65", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-65" }, "id": "615f94786869e1a7fec54375", "title": "Step 65" @@ -32439,8 +29736,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-66", - "blockName": "Learn Typography by Building a Nutrition Label" + "slug": "/learn/2022/responsive-web-design/learn-typography-by-building-a-nutrition-label/step-66" }, "id": "615f951dff9317a900ef683f", "title": "Step 66" @@ -32451,8 +29747,7 @@ "node": { "challenge": { "fields": { - "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-23", - "blockName": "Learn CSS Transforms by Building a Penguin" + "slug": "/learn/2022/responsive-web-design/learn-css-transforms-by-building-a-penguin/step-23" }, "id": "6196d1ac33c68d27dcda5796", "title": "Step 23" diff --git a/client/src/components/profile/components/time-line.tsx b/client/src/components/profile/components/time-line.tsx index 7f896a1837e..73e0c6aa884 100644 --- a/client/src/components/profile/components/time-line.tsx +++ b/client/src/components/profile/components/time-line.tsx @@ -254,9 +254,9 @@ function useIdToNameMap(t: TFunction): Map { edges { node { challenge { + block fields { slug - blockName } id superBlock @@ -281,6 +281,8 @@ function useIdToNameMap(t: TFunction): Map { ({ node: { challenge: { + // @ts-expect-error Graphql needs typing + block, // @ts-expect-error Graphql needs typing id, // @ts-expect-error Graphql needs typing @@ -288,13 +290,13 @@ function useIdToNameMap(t: TFunction): Map { // @ts-expect-error Graphql needs typing title, // @ts-expect-error Graphql needs typing - fields: { slug, blockName }, + fields: { slug }, // @ts-expect-error Graphql needs typing hasEditableBoundaries } } }) => { - const blockNameTitle = t(`intro:${superBlock}.blocks.${blockName}.title`); + const blockNameTitle = t(`intro:${superBlock}.blocks.${block}.title`); const shouldAppendBlockNameToTitle = hasEditableBoundaries || superBlock === SuperBlocks.A2English; idToNameMap.set(id, { diff --git a/client/src/redux/prop-types.ts b/client/src/redux/prop-types.ts index 6100c2439d2..78f6af19aa3 100644 --- a/client/src/redux/prop-types.ts +++ b/client/src/redux/prop-types.ts @@ -54,8 +54,6 @@ export type FillInTheBlank = { export type Fields = { slug: string; blockHashSlug: string; - blockName: string; - tests: Test[]; }; type Required = { link: string; @@ -293,10 +291,7 @@ export type DailyCodingChallengeNode = { helpCategory: 'JavaScript' | 'Python'; challengeType: 28 | 29; - fields: { - blockName: 'daily-coding-challenge'; - tests: Test[]; - }; + tests: Test[]; challengeFiles: ChallengeFiles; // props to satisfy the show classic component diff --git a/client/src/templates/Challenges/classic/show.tsx b/client/src/templates/Challenges/classic/show.tsx index 50a62b96347..8aa05a35e01 100644 --- a/client/src/templates/Challenges/classic/show.tsx +++ b/client/src/templates/Challenges/classic/show.tsx @@ -203,7 +203,7 @@ function ShowClassic({ description, instructions, hooks, - fields: { tests, blockName }, + tests, challengeType, hasEditableBoundaries = false, superBlock, @@ -317,7 +317,7 @@ function ShowClassic({ // Independent lower jaw is only enabled for the urriculum outline workshop const showIndependentLowerJaw = - blockName === 'workshop-curriculum-outline' && + block === 'workshop-curriculum-outline' && isIndependentLowerJawEnabled && !isMobile; @@ -547,7 +547,7 @@ function ShowClassic({ @@ -596,12 +596,7 @@ export const query = graphql` afterAll } fields { - blockName slug - tests { - text - testString - } } required { link @@ -618,6 +613,10 @@ export const query = graphql` editableRegionBoundaries history } + tests { + text + testString + } } } } diff --git a/client/src/templates/Challenges/codeally/show.tsx b/client/src/templates/Challenges/codeally/show.tsx index 16026f62410..8c391f46ac8 100644 --- a/client/src/templates/Challenges/codeally/show.tsx +++ b/client/src/templates/Challenges/codeally/show.tsx @@ -137,7 +137,7 @@ function ShowCodeAlly({ challenge: { block, challengeType, - fields: { tests }, + tests, description, helpCategory, id: challengeId, @@ -385,12 +385,6 @@ export const query = graphql` challengeNode(id: { eq: $id }) { challenge { block - fields { - tests { - text - testString - } - } challengeType description helpCategory @@ -398,6 +392,10 @@ export const query = graphql` instructions notes superBlock + tests { + text + testString + } title translationPending url diff --git a/client/src/templates/Challenges/exam/show.tsx b/client/src/templates/Challenges/exam/show.tsx index b96b3c2752d..775c912d615 100644 --- a/client/src/templates/Challenges/exam/show.tsx +++ b/client/src/templates/Challenges/exam/show.tsx @@ -149,7 +149,6 @@ function ShowExam(props: ShowExamProps) { block, dashedName, description, - fields: { blockName }, instructions, prerequisites, superBlock, @@ -186,12 +185,7 @@ function ShowExam(props: ShowExamProps) { challengeMounted, data: { challengeNode: { - challenge: { - fields: { tests }, - challengeType, - helpCategory, - title - } + challenge: { tests, challengeType, helpCategory, title } } }, pageContext: { challengeMeta }, @@ -530,7 +524,7 @@ function ShowExam(props: ShowExamProps) { @@ -558,11 +552,6 @@ export const query = graphql` description fields { blockHashSlug - blockName - tests { - text - testString - } } helpCategory id @@ -572,6 +561,10 @@ export const query = graphql` title } superBlock + tests { + text + testString + } title translationPending } diff --git a/client/src/templates/Challenges/fill-in-the-blank/show.tsx b/client/src/templates/Challenges/fill-in-the-blank/show.tsx index ddbbf3de3fd..453ffa6bed5 100644 --- a/client/src/templates/Challenges/fill-in-the-blank/show.tsx +++ b/client/src/templates/Challenges/fill-in-the-blank/show.tsx @@ -86,11 +86,11 @@ const ShowFillInTheBlank = ({ superBlock, block, translationPending, - fields: { blockName, tests }, challengeType, fillInTheBlank, helpCategory, - scene + scene, + tests } } }, @@ -260,7 +260,7 @@ const ShowFillInTheBlank = ({ @@ -288,12 +288,7 @@ export const query = graphql` superBlock block fields { - blockName slug - tests { - text - testString - } } fillInTheBlank { sentence @@ -302,6 +297,10 @@ export const query = graphql` feedback } } + tests { + text + testString + } transcript scene { setup { diff --git a/client/src/templates/Challenges/generic/show.tsx b/client/src/templates/Challenges/generic/show.tsx index bb731ef3abf..34d63347df5 100644 --- a/client/src/templates/Challenges/generic/show.tsx +++ b/client/src/templates/Challenges/generic/show.tsx @@ -104,10 +104,10 @@ const ShowGeneric = ({ nodules, explanation, challengeType, - fields: { blockName, tests }, helpCategory, instructions, questions, + tests, title, transcript, translationPending, @@ -358,7 +358,7 @@ const ShowGeneric = ({ @@ -394,12 +394,7 @@ export const query = graphql` helpCategory instructions fields { - blockName slug - tests { - text - testString - } } questions { text @@ -448,6 +443,10 @@ export const query = graphql` } } superBlock + tests { + text + testString + } title transcript translationPending diff --git a/client/src/templates/Challenges/ms-trophy/show.tsx b/client/src/templates/Challenges/ms-trophy/show.tsx index 4b7acb29888..3f482aca4e5 100644 --- a/client/src/templates/Challenges/ms-trophy/show.tsx +++ b/client/src/templates/Challenges/ms-trophy/show.tsx @@ -97,12 +97,7 @@ function MsTrophy(props: MsTrophyProps) { challengeMounted, data: { challengeNode: { - challenge: { - fields: { tests }, - title, - challengeType, - helpCategory - } + challenge: { tests, title, challengeType, helpCategory } } }, pageContext: { challengeMeta }, @@ -141,8 +136,7 @@ function MsTrophy(props: MsTrophyProps) { instructions, superBlock, block, - translationPending, - fields: { blockName } + translationPending } } }, @@ -204,7 +198,7 @@ function MsTrophy(props: MsTrophyProps) { @@ -231,12 +225,9 @@ export const query = graphql` superBlock block translationPending - fields { - blockName - tests { - text - testString - } + tests { + text + testString } } } diff --git a/client/src/templates/Challenges/projects/backend/show.tsx b/client/src/templates/Challenges/projects/backend/show.tsx index c697aa9f47e..33f6d685591 100644 --- a/client/src/templates/Challenges/projects/backend/show.tsx +++ b/client/src/templates/Challenges/projects/backend/show.tsx @@ -112,12 +112,7 @@ const ShowBackEnd = (props: BackEndProps) => { updateChallengeMeta, data: { challengeNode: { - challenge: { - fields: { tests }, - title, - challengeType, - helpCategory - } + challenge: { challengeType, helpCategory, tests, title } } }, pageContext: { challengeMeta } @@ -143,7 +138,6 @@ const ShowBackEnd = (props: BackEndProps) => { data: { challengeNode: { challenge: { - fields: { blockName }, challengeType, forumTopicId, title, @@ -212,7 +206,7 @@ const ShowBackEnd = (props: BackEndProps) => { @@ -241,12 +235,11 @@ export const query = graphql` block translationPending fields { - blockName slug - tests { - text - testString - } + } + tests { + text + testString } } } diff --git a/client/src/templates/Challenges/projects/frontend/show.tsx b/client/src/templates/Challenges/projects/frontend/show.tsx index a2fe30989db..22bbb6b895f 100644 --- a/client/src/templates/Challenges/projects/frontend/show.tsx +++ b/client/src/templates/Challenges/projects/frontend/show.tsx @@ -86,14 +86,14 @@ const ShowFrontEndProject = (props: ProjectProps) => { challengeMounted, data: { challengeNode: { - challenge: { fields, title, challengeType, helpCategory } + challenge: { tests, title, challengeType, helpCategory } } }, pageContext: { challengeMeta }, initTests, updateChallengeMeta } = props; - initTests(fields.tests); + initTests(tests); const challengePaths = getChallengePaths({ currentCurriculumPaths: challengeMeta }); @@ -115,7 +115,6 @@ const ShowFrontEndProject = (props: ProjectProps) => { challengeNode: { challenge: { challengeType, - fields: { blockName }, forumTopicId, title, description, @@ -172,7 +171,7 @@ const ShowFrontEndProject = (props: ProjectProps) => { @@ -201,12 +200,11 @@ export const query = graphql` block translationPending fields { - blockName slug - tests { - text - testString - } + } + tests { + text + testString } } } diff --git a/client/src/templates/Challenges/quiz/show.tsx b/client/src/templates/Challenges/quiz/show.tsx index b22705d573c..4d14cc9e32c 100644 --- a/client/src/templates/Challenges/quiz/show.tsx +++ b/client/src/templates/Challenges/quiz/show.tsx @@ -92,13 +92,14 @@ const ShowQuiz = ({ data: { challengeNode: { challenge: { - fields: { tests, blockHashSlug }, + fields: { blockHashSlug }, title, description, challengeType, helpCategory, superBlock, block, + tests, translationPending, quizzes } @@ -396,12 +397,7 @@ export const query = graphql` block fields { blockHashSlug - blockName slug - tests { - text - testString - } } quizzes { questions { @@ -410,6 +406,10 @@ export const query = graphql` answer } } + tests { + text + testString + } translationPending } } diff --git a/client/src/templates/Introduction/super-block-intro.tsx b/client/src/templates/Introduction/super-block-intro.tsx index 1f8b254e7ef..7caf822e541 100644 --- a/client/src/templates/Introduction/super-block-intro.tsx +++ b/client/src/templates/Introduction/super-block-intro.tsx @@ -57,7 +57,7 @@ type FetchState = { type ChallengeNode = { challenge: { - fields: { slug: string; blockName: string }; + fields: { slug: string }; id: string; block: string; blockLabel: BlockLabel; @@ -371,7 +371,6 @@ export const query = graphql` challenge { fields { slug - blockName } id block diff --git a/tools/client-plugins/gatsby-source-challenges/create-challenge-nodes.js b/tools/client-plugins/gatsby-source-challenges/create-challenge-nodes.js index e879e3d3cdd..d590931c406 100644 --- a/tools/client-plugins/gatsby-source-challenges/create-challenge-nodes.js +++ b/tools/client-plugins/gatsby-source-challenges/create-challenge-nodes.js @@ -17,14 +17,12 @@ function createChallengeNode( }; if (internal.type === 'ChallengeNode') { - const { tests = [], block, dashedName, superBlock } = challenge; + const { block, dashedName, superBlock } = challenge; const slug = `/learn/${superBlock}/${block}/${dashedName}`; const blockHashSlug = `/learn/${superBlock}/#${block}`; challenge.fields = { slug, - blockName: block, - tests, blockHashSlug }; } diff --git a/tools/daily-challenges/helpers.ts b/tools/daily-challenges/helpers.ts index 2bcc18b114d..8db5c518816 100644 --- a/tools/daily-challenges/helpers.ts +++ b/tools/daily-challenges/helpers.ts @@ -37,11 +37,9 @@ query { id title description - fields { - tests { + tests { testString text - } } challengeFiles { contents @@ -78,14 +76,14 @@ export function combineChallenges({ id: jsId, title: jsTitle, description: jsDescription, - fields: { tests: jsTests }, + tests: jsTests, challengeFiles: jsChallengeFiles } = jsChallenge; const { title: pyTitle, description: pyDescription, - fields: { tests: pyTests }, + tests: pyTests, challengeFiles: pyChallengeFiles } = pyChallenge; diff --git a/tools/daily-challenges/types.ts b/tools/daily-challenges/types.ts index c69abdb4749..4707dd7a632 100644 --- a/tools/daily-challenges/types.ts +++ b/tools/daily-challenges/types.ts @@ -15,12 +15,10 @@ export type Challenge = { title: string; date: Date; description: string; - fields: { - tests: { - testString: string; - text: string; - }[]; - }; + tests: { + testString: string; + text: string; + }[]; challengeFiles: { contents: string; filekey: string; From 8b4fba6c3135d72f0540f04806586647a18c6290 Mon Sep 17 00:00:00 2001 From: Chiranth D V <150377345+Chiranthdv@users.noreply.github.com> Date: Tue, 11 Nov 2025 21:29:36 +0530 Subject: [PATCH 13/21] fix(curriculum): capitalize 'You' in Step 3 hint (#63725) --- .../workshop-quincys-job-tips/68e90335bd53a901c41dfc13.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/curriculum/challenges/english/blocks/workshop-quincys-job-tips/68e90335bd53a901c41dfc13.md b/curriculum/challenges/english/blocks/workshop-quincys-job-tips/68e90335bd53a901c41dfc13.md index 9fda5fd9d4e..0f986930b5b 100644 --- a/curriculum/challenges/english/blocks/workshop-quincys-job-tips/68e90335bd53a901c41dfc13.md +++ b/curriculum/challenges/english/blocks/workshop-quincys-job-tips/68e90335bd53a901c41dfc13.md @@ -47,7 +47,7 @@ Inside your `q` element, the text must not have leading or trailing whitespace ( assert.equal(document.querySelector('h1 + p > q')?.textContent, 'You can become a developer.'); ``` -You should only add `q` tags around the appropriate part of the sentence without changing the original text. The `p` element should still read: `Learning to code is hard, but as Quincy Larson says, you can become a developer.` +You should only add `q` tags around the appropriate part of the sentence without changing the original text. The `p` element should still read: `Learning to code is hard, but as Quincy Larson says, You can become a developer.` ```js const pElCleanedText = document.querySelector('h1 + p')?.innerText.trim().replaceAll(/ {2,}/g, ' '); From bbfcf91fdb7c85f07d1ee4afaa7e2470accf60b6 Mon Sep 17 00:00:00 2001 From: Daniel Czarnievicz <16988051+daczarne@users.noreply.github.com> Date: Tue, 11 Nov 2025 17:01:48 +0100 Subject: [PATCH 14/21] fix(curriculum): removes duplicated "title" in UTF lesson (#63731) --- .../670839051794aa19fcef6dc8.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/curriculum/challenges/english/blocks/lecture-understanding-the-html-boilerplate/670839051794aa19fcef6dc8.md b/curriculum/challenges/english/blocks/lecture-understanding-the-html-boilerplate/670839051794aa19fcef6dc8.md index 3d9f6e7a036..96674a81985 100644 --- a/curriculum/challenges/english/blocks/lecture-understanding-the-html-boilerplate/670839051794aa19fcef6dc8.md +++ b/curriculum/challenges/english/blocks/lecture-understanding-the-html-boilerplate/670839051794aa19fcef6dc8.md @@ -7,8 +7,6 @@ dashedName: what-is-utf-8-character-encoding # --description-- -What is UTF-8 character encoding, and why is it needed? - UTF-8, or UCS Transformation Format 8, is a standardized character encoding widely used on the web. Character encoding is the method computers use to store characters as data. Essentially, all text on a web page is a sequence of characters stored as one or more bytes. In computing, a byte is a unit of data consisting of 8 bits, or binary digits. UTF-8 supports every character in the Unicode character set - and this includes characters and symbols from all writing systems, languages, and technical symbols. Here is an example of using the `meta` element with the `charset` attribute to set the character encoding to `UTF-8`: ```html From 666108c9a58a2e50ed963e8d3611c68e1f14d8fc Mon Sep 17 00:00:00 2001 From: Diem-Trang Pham <6422507+pdtrang@users.noreply.github.com> Date: Tue, 11 Nov 2025 10:14:57 -0600 Subject: [PATCH 15/21] fix(curriculum): Update good structural hierarchy lesson (#63706) --- .../672985445d7da807c6b4f406.md | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/curriculum/challenges/english/blocks/lecture-importance-of-semantic-html/672985445d7da807c6b4f406.md b/curriculum/challenges/english/blocks/lecture-importance-of-semantic-html/672985445d7da807c6b4f406.md index 6a278054f8b..eb07ea02e73 100644 --- a/curriculum/challenges/english/blocks/lecture-importance-of-semantic-html/672985445d7da807c6b4f406.md +++ b/curriculum/challenges/english/blocks/lecture-importance-of-semantic-html/672985445d7da807c6b4f406.md @@ -16,13 +16,11 @@ Your `h2` element is your subheading. It should always come after your `h1` and Following the pattern, your `h3` element should always come after an `h2` element. That is, you should never skip directly from `h1` to `h3`. You can, however, have multiple heading elements at the same level. For example, this code is correct: ```html -
-
-

freeCodeCamp

-

Learn Front-End Development

-

Learn Back-End Development

-
-
+
+

freeCodeCamp

+

Learn Front-End Development

+

Learn Back-End Development

+
``` But this code would not be correct, because `h3` comes before `h2`. @@ -32,19 +30,19 @@ Move the `h2` element above the `h3` so it is semantically correct. To interact :::interactive_editor ```html -
-
-

freeCodeCamp

-

Introduction to HTML

-

Learn Frontend Development

-
-
+
+

freeCodeCamp

+

Introduction to HTML

+

Learn Frontend Development

+
``` ::: It may be tempting to use a specific heading element because of its styling, such as `h1` for large text: +:::interactive_editor + ```html

@@ -54,6 +52,8 @@ It may be tempting to use a specific heading element because of its styling, suc

``` +::: + Instead, you should choose the appropriate element for your document structure and use CSS to achieve the styling you'd like. Using the right hierarchy is important for accessibility. Assistive technologies, like screen readers, rely on the structure of a web page to determine how to parse and announce that web page to the user. Using an `h3` element after an `h1` might cause a screen reader user to believe they have accidentally skipped over important content, due to the lack of an `h2` element. From ff881eea27a696a80956ebe45bcb36af34e31cfa Mon Sep 17 00:00:00 2001 From: Fernando Belmonte Archetti <110430578+farchettiensis@users.noreply.github.com> Date: Tue, 11 Nov 2025 13:29:30 -0300 Subject: [PATCH 16/21] feat: add interactive examples for e.preventDefault lesson (#63733) --- .../6733d3a33abdd27cd562bdf2.md | 196 +++++++++++++++++- 1 file changed, 192 insertions(+), 4 deletions(-) diff --git a/curriculum/challenges/english/blocks/lecture-understanding-form-validation/6733d3a33abdd27cd562bdf2.md b/curriculum/challenges/english/blocks/lecture-understanding-form-validation/6733d3a33abdd27cd562bdf2.md index 2b493c7fda9..dbaa5df8522 100644 --- a/curriculum/challenges/english/blocks/lecture-understanding-form-validation/6733d3a33abdd27cd562bdf2.md +++ b/curriculum/challenges/english/blocks/lecture-understanding-form-validation/6733d3a33abdd27cd562bdf2.md @@ -5,7 +5,7 @@ challengeType: 19 dashedName: what-is-the-purpose-of-e-preventdefault --- -# --description-- +# --interactive-- Let's learn about the purpose of the `preventDefault()` method on events. @@ -13,24 +13,104 @@ Every event that triggers in the DOM has some sort of default behavior. The `cli Let's take a look at an example. Let's define an `input` element for a user to type in: +:::interactive_editor + ```html + ``` +```css +label { + display: flex; + flex-direction: column; + font-family: Arial, sans-serif; + font-size: 14px; + color: #333; + margin-bottom: 12px; +} + +input[type="text"] { + padding: 8px 12px; + border: 1px solid #ccc; + border-radius: 4px; + font-size: 14px; + margin-top: 4px; + width: 100%; + box-sizing: border-box; + transition: border-color 0.2s, box-shadow 0.2s; +} + +input[type="text"]:focus { + border-color: #0078d4; + box-shadow: 0 0 3px rgba(0, 120, 212, 0.5); + outline: none; +} + +``` + +::: + And if we look at the result, we can type in the input field as expected. But maybe we don't want that. Maybe, instead, we'd like to show the character the user types in a separate element. First, let's define our element for that: +:::interactive_editor + ```html +

``` +```css +body { + font-family: Arial, sans-serif; + background-color: #f0f0f0; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 100vh; + margin: 0; +} + +label { + font-size: 1.2rem; + color: #333; + margin-bottom: 1rem; + display: flex; + flex-direction: column; +} + +input[type="text"] { + padding: 0.5rem; + font-size: 1rem; + border: 2px solid #ccc; + border-radius: 5px; + margin-top: 0.5rem; + outline: none; +} + +input[type="text"]:focus { + border-color: #007BFF; +} + +#output { + margin-top: 1rem; + font-size: 1.1rem; + color: #555; +} + +``` + +::: + And then, we need to hook into the `keydown` event to listen for a character being typed on the keyboard. Note that we do not want the `change` or `input` events here, because we need the keyboard information. -```javascript +```js const input = document.querySelector("input"); input.addEventListener("keydown", (e) => { @@ -40,7 +120,59 @@ input.addEventListener("keydown", (e) => { The `keydown` event fires when you press down on a keyboard key. When this happens, let's display the character in our `p` element. -```javascript +:::interactive_editor + +```html + + +

+ +``` + +```css +body { + font-family: Arial, sans-serif; + background-color: #f0f0f0; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 100vh; + margin: 0; +} + +label { + font-size: 1.2rem; + color: #333; + margin-bottom: 1rem; + display: flex; + flex-direction: column; +} + +input[type="text"] { + padding: 0.5rem; + font-size: 1rem; + border: 2px solid #ccc; + border-radius: 5px; + margin-top: 0.5rem; + outline: none; +} + +input[type="text"]:focus { + border-color: #007BFF; +} + +#output { + margin-top: 1rem; + font-size: 1.1rem; + color: #555; +} + +``` + +```js const input = document.querySelector("input"); const output = document.getElementById("output"); @@ -49,13 +181,67 @@ input.addEventListener("keydown", (e) => { }); ``` +::: + `e.key` gives you the value of the key pressed, such as `a` for the `a` key or `Enter` for the `Enter` key. With the above code, when you type in the `input`, the character you type will be displayed in the `p` element. This is great, but we don't want to show the characters in the `input` as well. This is where our `preventDefault()` method comes in. The default behavior of a `keydown` is to render the character in the input. Let's avoid that by calling `e.preventDefault()`: -```javascript +:::interactive_editor + +```html + + +

+ +``` + +```css +body { + font-family: Arial, sans-serif; + background-color: #f0f0f0; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 100vh; + margin: 0; +} + +label { + font-size: 1.2rem; + color: #333; + margin-bottom: 1rem; + display: flex; + flex-direction: column; +} + +input[type="text"] { + padding: 0.5rem; + font-size: 1rem; + border: 2px solid #ccc; + border-radius: 5px; + margin-top: 0.5rem; + outline: none; +} + +input[type="text"]:focus { + border-color: #007BFF; +} + +#output { + margin-top: 1rem; + font-size: 1.1rem; + color: #555; +} + +``` + +```js const input = document.querySelector("input"); const output = document.getElementById("output"); @@ -65,6 +251,8 @@ input.addEventListener("keydown", (e) => { }); ``` +::: + And just like that, you have prevented the default behavior to allow yourself to implement your own custom event handling. Another common example of when to use the `e.preventDefault` method has to deal with form submissions. By default, submitting a form sends data to the server and reloads the page. Using `e.preventDefault()` prevents this from happening. From 2ac117f186140786e4bc18aa072b21ff548a92da Mon Sep 17 00:00:00 2001 From: dimssu <146713101+dimssu@users.noreply.github.com> Date: Tue, 11 Nov 2025 22:09:11 +0530 Subject: [PATCH 17/21] fix: add code examples to semantic HTML review page (#63723) --- .../671a83934b61f64cefe87a61.md | 245 +++++++++++------- 1 file changed, 146 insertions(+), 99 deletions(-) diff --git a/curriculum/challenges/english/blocks/review-semantic-html/671a83934b61f64cefe87a61.md b/curriculum/challenges/english/blocks/review-semantic-html/671a83934b61f64cefe87a61.md index 349859a23db..d506a4bc237 100644 --- a/curriculum/challenges/english/blocks/review-semantic-html/671a83934b61f64cefe87a61.md +++ b/curriculum/challenges/english/blocks/review-semantic-html/671a83934b61f64cefe87a61.md @@ -16,165 +16,212 @@ dashedName: review-semantic-html ## Semantic HTML Elements - **Header element**: used to define the header of a document or section. + + ```html +
+

CatPhotoApp

+

Welcome to our cat gallery.

+
+ ``` + - **Main element**: used to contain the main content of the web page. + + ```html +
+
+

Cat Photos

+

Browse adorable cat pictures.

+
+
+ ``` + - **Section element**: used to divide up content into smaller sections. + + ```html +
+

About Me

+

Hi, I am Jane Doe and I am a web developer.

+
+ ``` + - **Navigation Section (`nav`) element**: represents a section with navigation links. + + ```html + + ``` + - **Figure element**: used to contain illustrations and diagrams. + + ```html +
+ Two tabby kittens sleeping together on a couch. +
Cats hate other cats.
+
+ ``` + - **Emphasis (`em`) element**: marks text that has stress emphasis. -```html -

- Never give up on your dreams. -

-``` + ```html +

+ Never give up on your dreams. +

+ ``` - **Idiomatic Text (`i`) element**: used for highlighting alternative voice or mood, idiomatic terms from another language, technical terms, and thoughts. -```html -

- There is a certain je ne sais quoi in the air. -

-``` + ```html +

+ There is a certain je ne sais quoi in the air. +

+ ``` The `lang` attribute inside the open `i` tag is used to specify the language of the content. In this case, the language would be French. The `i` element does not indicate if the text is important or not, it only shows that it's somehow different from the surrounding text. - **Strong Importance (`strong`) element**: marks text that has strong importance. -```html -

- Warning: This product may cause allergic reactions. -

-``` + ```html +

+ Warning: This product may cause allergic reactions. +

+ ``` - **Bring Attention To (`b`) element**: used to bring attention to text that is not important for the meaning of the content. It's commonly used to highlight keywords in summaries or product names in reviews. -```html -

- We tested several products, including the SuperSound 3000 for audio quality, the QuickCharge Pro for fast charging, and the Ecoclean Vacuum for cleaning. The first two performed well, but the Ecoclean Vacuum did not meet expectations. -

-``` + ```html +

+ We tested several products, including the SuperSound 3000 for audio quality, the QuickCharge Pro for fast charging, and the Ecoclean Vacuum for cleaning. The first two performed well, but the Ecoclean Vacuum did not meet expectations. +

+ ``` - **Description List (`dl`) element**: used to represent a list of term-description groupings. - **Description Term (`dt`) element**: used to represent the term being defined. - **Description Details (`dd`) element**: used to represent the description of the term. -```html -
-
HTML
-
HyperText Markup Language
-
CSS
-
Cascading Style Sheets
-
-``` + ```html +
+
HTML
+
HyperText Markup Language
+
CSS
+
Cascading Style Sheets
+
+ ``` - **Block Quotation (`blockquote`) element**: used to represent a section that is quoted from another source. This element has a `cite` attribute. The value of the `cite` attribute is the URL of the source. -```html -
- "Can you imagine what it would be like to be a successful developer? To have built software systems that people rely upon?" -
-``` - -- **Citation (`cite`) element**: used to attribute the source of the referenced work visually. Marks up the title of the reference. - -```html -
+ ```html
"Can you imagine what it would be like to be a successful developer? To have built software systems that people rely upon?"
-

- -Quincy Larson, How to learn to Code and Get a Developer Job [Full Book]. -

-
-``` + ``` + +- **Citation (`cite`) element**: used to attribute the source of the referenced work visually. Marks up the title of the reference. + + ```html +
+
+ "Can you imagine what it would be like to be a successful developer? To have built software systems that people rely upon?" +
+

+ -Quincy Larson, How to learn to Code and Get a Developer Job [Full Book]. +

+
+ ``` - **Inline Quotation (`q`) element**: used to represent a short inline quotation. -```html -

- As Quincy Larson said, - - Momentum is everything. - -

-``` + ```html +

+ As Quincy Larson said, + + Momentum is everything. + +

+ ``` - **Abbreviation (`abbr`) element**: used to represent an abbreviation or acronym. To help users understand what the abbreviation or acronym is, you can show its full form, a human readable description, with the `title` attribute. -```html -

- HTML is the foundation of the web. -

-``` + ```html +

+ HTML is the foundation of the web. +

+ ``` - **Contact Address (`address`) element**: used to represent the contact information. - **(Date) Time (`time`) element**: used to represent a date and/or time. The `datetime` attribute is used to translate dates and times into a machine-readable format. -```html -

- The reservations are for the -

-``` + ```html +

+ The reservations are for the +

+ ``` - **ISO 8601 Date (`datetime`) attribute**: used to represent dates and times in a machine-readable format. The standard format is `YYYY-MM-DDThh:mm:ss`, with the capital `T` being a separator between the date and time. - **Superscript (`sup`) element**: used to represent superscript text. Common use cases for the `sup` element would include exponents, superior lettering and ordinal numbers. -```html -

- 22 (2 squared) is 4. -

-``` + ```html +

+ 22 (2 squared) is 4. +

+ ``` - **Subscript (`sub`) element**: used to represent subscript text. Common use cases for the subscript element include chemical formulas, footnotes, and variable subscripts. -```html -

- CO2 -

-``` + ```html +

+ CO2 +

+ ``` - **Inline Code (`code`) element**: used to represent a fragment of computer code. - **Preformatted Text (`pre`) element**: represents preformatted text -```html -
-  
-    body {
-      color: red;
-    }
-  
-
-``` + ```html +
+    
+      body {
+        color: red;
+      }
+    
+  
+ ``` - **Unarticulated Annotation (`u`) element**: used to represent a span of inline text which should be rendered in a way that indicates that it has a non-textual annotation. -```html -

- You can use the unarticulated annotation element to highlight - inccccort spling issses. -

-``` + ```html +

+ You can use the unarticulated annotation element to highlight + inccccort spling issses. +

+ ``` - **Ruby Annotation (`ruby`) element**: used for annotating text with pronunciation or meaning explanations. An example usage is for East Asian typography. - **Ruby fallback parenthesis (`rp`) element**: used as a fallback for browsers lacking support for displaying ruby annotations. - **Ruby text (`rt`) element**: used to indicate text for the ruby annotation. Usually used for pronunciation, or translation details in East Asian typography. -```html - - 明日 (Ashita) - -``` + ```html + + 明日 (Ashita) + + ``` - **Strikethrough (`s`) element**: used to represent content that is no longer accurate or relevant. -```html -

- Tomorrow's hike will be meeting at noon. -

-

- Due to unforeseen weather conditions, the hike has been canceled. -

-``` + ```html +

+ Tomorrow's hike will be meeting at noon. +

+

+ Due to unforeseen weather conditions, the hike has been canceled. +

+ ``` # --assignment-- From 52a942fae9abd5b8f575d4c441a59e5daf92d72d Mon Sep 17 00:00:00 2001 From: Oliver Eyton-Williams Date: Tue, 11 Nov 2025 18:16:09 +0100 Subject: [PATCH 18/21] fix(client): same font size for equivalent superblock headers (#63722) --- client/src/templates/Introduction/intro.css | 1 + 1 file changed, 1 insertion(+) diff --git a/client/src/templates/Introduction/intro.css b/client/src/templates/Introduction/intro.css index 29798226ff1..75b0d37509d 100644 --- a/client/src/templates/Introduction/intro.css +++ b/client/src/templates/Introduction/intro.css @@ -106,6 +106,7 @@ a.cert-tag:active { } .block-grid-title { + font-size: 1rem; margin: 0; overflow-wrap: break-word; } From 92bafa49c7686172b11eae1699b076dc7d9f849b Mon Sep 17 00:00:00 2001 From: Shawukie Patrick <218472027+shawukie4them@users.noreply.github.com> Date: Tue, 11 Nov 2025 22:12:25 +0300 Subject: [PATCH 19/21] fix(client): improve FormFields type safety and accessibility (#62849) --- client/src/components/formHelpers/form-fields.tsx | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/client/src/components/formHelpers/form-fields.tsx b/client/src/components/formHelpers/form-fields.tsx index 9a0b696f495..39cc2167bdc 100644 --- a/client/src/components/formHelpers/form-fields.tsx +++ b/client/src/components/formHelpers/form-fields.tsx @@ -25,7 +25,7 @@ export type FormOptions = { isLocalLinkAllowed?: boolean; isSourceCodeLinkRequired?: boolean; required?: string[]; - types?: { [key: string]: string }; + types?: { [key: string]: React.HTMLInputTypeAttribute }; placeholders?: { [key: string]: string }; }; @@ -46,11 +46,12 @@ function FormFields({ formFields, options }: FormFieldsProps): JSX.Element { } = options; const nullOrWarning = ( - value: string, + value: string | undefined, error: unknown, isURL: boolean, name: string ) => { + if (!value) return null; let validationError: string | undefined; if (value && isURL) { try { @@ -82,7 +83,7 @@ function FormFields({ formFields, options }: FormFieldsProps): JSX.Element { validationError || validationWarning) as string; return message ? ( - + {message} @@ -94,8 +95,7 @@ function FormFields({ formFields, options }: FormFieldsProps): JSX.Element { {formFields .filter(formField => !ignored.includes(formField.name)) .map(({ name, label }) => ( - // TODO: verify if the value is always a string - + key={`${name}-field`} name={name}> {({ input: { value, onChange }, meta: { pristine, error } }) => { const placeholder = name in placeholders ? placeholders[name] : ''; @@ -115,8 +115,9 @@ function FormFields({ formFields, options }: FormFieldsProps): JSX.Element { placeholder={placeholder} required={required.includes(name)} rows={4} - type='url' + type={types[name] || 'text'} value={value as string} + aria-describedby={`${name}-message`} data-playwright-test-label={`${name}-form-control`} /> {nullOrWarning( From e9e5347ccca67efda03ccb83701f3e052a0b3002 Mon Sep 17 00:00:00 2001 From: Diem-Trang Pham <6422507+pdtrang@users.noreply.github.com> Date: Tue, 11 Nov 2025 13:13:18 -0600 Subject: [PATCH 20/21] fix(client): remove unused test label in components preview (#63745) --- client/src/templates/Challenges/components/preview.tsx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/client/src/templates/Challenges/components/preview.tsx b/client/src/templates/Challenges/components/preview.tsx index 110822c7357..d7d164ef594 100644 --- a/client/src/templates/Challenges/components/preview.tsx +++ b/client/src/templates/Challenges/components/preview.tsx @@ -38,10 +38,7 @@ function Preview({ const id = previewId ?? mainPreviewId; return ( -
+