From 56912f6ed18a4f4881854d2f29fa4a55911f4a6b Mon Sep 17 00:00:00 2001 From: Dan Holdsworth Date: Fri, 24 May 2024 12:27:42 +0100 Subject: [PATCH 1/9] update contribution doc with develop rules --- contributing.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/contributing.md b/contributing.md index 48475098c..883a5ffc3 100644 --- a/contributing.md +++ b/contributing.md @@ -2,11 +2,23 @@ First of all thank you for considering to contribute. Please look at the details below: +- [Create a New Branch](#create-a-new-branch) - [New Roadmaps](#new-roadmaps) - [Existing Roadmaps](#existing-roadmaps) - [Adding Content](#adding-content) - [Guidelines](#guidelines) +## Create A New Branch + +To create a new branch against `develop` for your contribution please do the following: + +```bash +git clone https://github.com/kamranahmedse/developer-roadmap.git # Clone Repo +cd developer-roadmap # Change Directory +git switch develop && git pull # Switch and pull +git checkout -b "a-sensible-branch-name" # Create your branch +``` + ## New Roadmaps For new roadmaps, you can either: @@ -46,6 +58,10 @@ Visit the following resources to learn more: ## Guidelines +-

Please open your pull request (PR) against the develop branch.
+ + To keep caching and deployments under control, please open your PR's against the `develop` branch, which will then be merged into `master` at the end of the day. + -

Adding everything available out there is not the goal!
The roadmaps represent the skillset most valuable today, i.e., if you were to enter any of the listed fields today, what would you learn? There might be things that are of-course being used today but prioritize the things that are most in demand today, e.g., agreed that lots of people are using angular.js today but you wouldn't want to learn that instead of React, Angular, or Vue. Use your critical thinking to filter out non-essential stuff. Give honest arguments for why the resource should be included.

From 279aa5c8a7d8917d525657d9bafe8932b85f55ec Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Fri, 24 May 2024 19:09:02 +0100 Subject: [PATCH 2/9] Fix formatting --- src/data/roadmaps/api-design/api-design.json | 4763 +++++++++++++++++- 1 file changed, 4762 insertions(+), 1 deletion(-) diff --git a/src/data/roadmaps/api-design/api-design.json b/src/data/roadmaps/api-design/api-design.json index a4b9f145d..805510d61 100644 --- a/src/data/roadmaps/api-design/api-design.json +++ b/src/data/roadmaps/api-design/api-design.json @@ -1 +1,4762 @@ -{"nodes":[{"id":"SP-d4YngpYXkeIB9SSD-K","type":"section","position":{"x":240.93596412339082,"y":1861.570310981244},"selected":true,"data":{"label":"","style":{"width":150,"height":100,"fontSize":17,"borderColor":"TRANSPARENt","backgroundColor":"TRANSPARENt"},"oldId":"7s60T3OiXeo29-xN6fGjJ"},"zIndex":-999,"width":202,"height":114,"style":{"width":202,"height":114},"positionAbsolute":{"x":240.93596412339082,"y":1861.570310981244},"dragging":false,"resizing":false,"selectable":true,"focusable":true},{"id":"XzXLGjJr2F8Ln7gP0e5N8","type":"paragraph","position":{"x":-151.46804969796983,"y":2375.4716162213053},"selected":true,"data":{"label":"Continue Learning with following relevant tracks","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center","borderColor":"#000000"},"oldId":"jXtqI8k4Abz-vr01IcpWL"},"zIndex":999,"width":436,"height":118,"positionAbsolute":{"x":-151.46804969796983,"y":2375.4716162213053},"dragging":false,"style":{"width":436,"height":118},"resizing":true,"selectable":true,"focusable":true},{"id":"zL4QEM5xZO8XWXXWrdPuj","type":"section","position":{"x":244.19846699906657,"y":1501.3654630729577},"selected":true,"data":{"label":"","style":{"width":150,"height":100,"fontSize":17,"borderColor":"TRANSPARENt","backgroundColor":"TRANSPARENt"}},"zIndex":-999,"width":200,"height":217,"style":{"width":200,"height":217},"positionAbsolute":{"x":244.19846699906657,"y":1501.3654630729577},"dragging":false,"resizing":true,"selectable":true,"focusable":true},{"id":"o3XFXW2HHLBoxlbEnoWdZ","type":"section","position":{"x":-592.469505701316,"y":1567.7437339754388},"selected":true,"data":{"label":"","style":{"width":150,"height":100,"fontSize":17,"backgroundColor":"TRANSPARENt","borderColor":"TRANSPARENt"}},"zIndex":-999,"width":247,"height":381,"style":{"width":247,"height":381},"positionAbsolute":{"x":-592.469505701316,"y":1567.7437339754388},"dragging":false,"resizing":false,"focusable":true,"selectable":true},{"id":"ludceg3fQVkilNTKWznti","type":"section","position":{"x":-210.7109644352177,"y":1239.744561558562},"selected":true,"data":{"label":"","style":{"width":150,"height":100,"fontSize":17,"backgroundColor":"TRANSPARENt","borderColor":"TRANSPARENt"}},"zIndex":-999,"width":252,"height":114,"style":{"width":252,"height":114},"positionAbsolute":{"x":-210.7109644352177,"y":1239.744561558562},"dragging":false,"resizing":false,"selectable":true,"focusable":true},{"id":"RkPVaSF9XnX6uHUns_-oC","type":"section","position":{"x":228.3676576847514,"y":1267.1153073402706},"selected":true,"data":{"label":"","style":{"width":150,"height":100,"fontSize":17,"borderColor":"TRANSPARENt"}},"zIndex":-999,"width":219,"height":235,"style":{"width":219,"height":235},"positionAbsolute":{"x":228.3676576847514,"y":1267.1153073402706},"dragging":false,"resizing":false,"selectable":true,"focusable":true},{"id":"cGWZQjKazJQ0D3nz_AdAX","type":"section","position":{"x":-593.4010478029121,"y":982.3357132591475},"selected":true,"data":{"label":"","style":{"width":150,"height":100,"fontSize":17,"borderColor":"TRANSPARENt","backgroundColor":"TRANSPARENt"}},"zIndex":-999,"width":230,"height":279,"style":{"width":230,"height":279},"resizing":true,"dragging":false,"positionAbsolute":{"x":-593.4010478029121,"y":982.3357132591475},"selectable":true,"focusable":true},{"id":"iHtjFSkQWMoUNdltNttEd","type":"section","position":{"x":219.72110595703134,"y":644.8914213180542},"selected":true,"data":{"label":"","style":{"width":150,"height":100,"fontSize":17,"backgroundColor":"TRANSPARENt","borderColor":"TRANSPARENt"}},"zIndex":-999,"width":268,"height":297,"style":{"width":268,"height":297},"positionAbsolute":{"x":219.72110595703134,"y":644.8914213180542},"dragging":false,"resizing":false,"selectable":true,"focusable":true},{"id":"junprE7dbMyeovApqhSgr","type":"section","position":{"x":219.22110595703134,"y":281.3914213180542},"selected":true,"data":{"label":"","style":{"width":150,"height":100,"fontSize":17,"backgroundColor":"TRANSPARENt","borderColor":"TRANSPARENt"}},"zIndex":-999,"width":269,"height":228,"style":{"width":269,"height":228},"positionAbsolute":{"x":219.22110595703134,"y":281.3914213180542},"dragging":false,"resizing":false,"selectable":true,"focusable":true},{"id":"wTrcPqj0KpoeOvJf7k3iI","type":"section","position":{"x":-206.8881872719935,"y":451.40074822234897},"selected":true,"data":{"label":"","style":{"width":150,"height":100,"fontSize":17,"backgroundColor":"TRANSPARENt","borderColor":"TRANSPARENt"}},"zIndex":-999,"width":266,"height":234,"style":{"width":266,"height":234},"positionAbsolute":{"x":-206.8881872719935,"y":451.40074822234897},"dragging":false,"resizing":false,"focusable":true,"selectable":true},{"id":"IzMY2P54llvbVixWxAl7H","type":"section","position":{"x":-571.1381872719934,"y":123.90074822234897},"selected":true,"data":{"label":"","style":{"width":150,"height":100,"fontSize":17},"oldId":"wOyWgfUDwC3ORsLI8H5A0"},"zIndex":-999,"width":232,"height":437,"style":{"width":232,"height":437},"positionAbsolute":{"x":-571.1381872719934,"y":123.90074822234897},"dragging":false,"resizing":false,"selectable":true,"focusable":true},{"id":"AZoEY2N7PqAQgUl04E3KF","type":"title","position":{"x":-178.6381872719934,"y":-57.599251777651034},"selected":true,"data":{"label":"Building APIs","style":{"fontSize":28,"justifyContent":"flex-start","textAlign":"center"},"oldId":"EhPhMi4v4KT3vEUrInsxF"},"zIndex":999,"width":207,"height":68,"dragging":false,"positionAbsolute":{"x":-178.6381872719934,"y":-57.599251777651034},"selectable":true,"focusable":true},{"id":"duKkpzPjUU_-8kyJGHqRX","type":"topic","position":{"x":-198.1381872719934,"y":123.40074822234897},"selected":true,"data":{"label":"Learn the Basics","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"awdoiCHz7Yc3kYac_iy-a"},"zIndex":999,"width":246,"height":49,"positionAbsolute":{"x":-198.1381872719934,"y":123.40074822234897},"dragging":false,"selectable":true,"focusable":true,"style":{"width":246,"height":49},"resizing":false},{"id":"r8M3quACGO2piu0u_R4hO","type":"subtopic","position":{"x":-570.1381872719934,"y":63.400748222348966},"selected":true,"data":{"label":"What are APIs","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"Wghrrm4Riz2t7F41H5GK-"},"zIndex":999,"width":232,"height":49,"positionAbsolute":{"x":-570.1381872719934,"y":63.400748222348966},"dragging":false,"style":{"width":232,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"2HdKzAIQi15pr3YHHrbPp","type":"subtopic","position":{"x":-571.1381872719934,"y":122.60000000000008},"selected":true,"data":{"label":"HTTP","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"mbDiNvkeYo9v3T_DN5uNl"},"zIndex":999,"width":232,"height":49,"positionAbsolute":{"x":-571.1381872719934,"y":122.60000000000008},"dragging":false,"style":{"width":232,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"ACALE93mL4gnX5ThRIdRp","type":"subtopic","position":{"x":-560.6381872719934,"y":183.90074822234897},"selected":true,"data":{"label":"HTTP Versions","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"p0C6D4Rt2y_U9atm7X_kt"},"zIndex":999,"width":210,"height":49,"positionAbsolute":{"x":-560.6381872719934,"y":183.90074822234897},"selectable":true,"focusable":true,"dragging":false,"style":{"width":210,"height":49},"resizing":true},{"id":"rADHM-6NAxEjzmgiHefDX","type":"subtopic","position":{"x":-560.6381872719934,"y":236.40074822234897},"selected":true,"data":{"label":"HTTP Methods","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"ZGD2Y4TgLOzn-mDEhZGXX"},"zIndex":999,"width":210,"height":49,"positionAbsolute":{"x":-560.6381872719934,"y":236.40074822234897},"selectable":true,"focusable":true,"dragging":false,"style":{"width":210,"height":49}},{"id":"7szYyzLifKsepNU0c2KnN","type":"subtopic","position":{"x":-560.6381872719934,"y":288.90074822234897},"selected":true,"data":{"label":"HTTP Status Codes","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"--pZRMVsKFEAhMIgDpGwC"},"zIndex":999,"width":210,"height":49,"positionAbsolute":{"x":-560.6381872719934,"y":288.90074822234897},"selectable":true,"focusable":true,"dragging":false,"style":{"width":210,"height":49}},{"id":"rE-0yibRH6B2UBKp351cf","type":"subtopic","position":{"x":-560.6381872719934,"y":341.40074822234897},"selected":true,"data":{"label":"HTTP Headers","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"3iwD_eyT4XZRQNIorTF3a"},"zIndex":999,"width":210,"height":49,"positionAbsolute":{"x":-560.6381872719934,"y":341.40074822234897},"selectable":true,"focusable":true,"dragging":false,"style":{"width":210,"height":49}},{"id":"P-rGIk50Bg7nFmWieAW07","type":"subtopic","position":{"x":197.8618127280065,"y":52.100748222348955},"selected":true,"data":{"label":"URL, Query & Path Parameters","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"aBXHVaEfcChnyF4FPlqHp"},"zIndex":999,"width":283,"height":49,"positionAbsolute":{"x":197.8618127280065,"y":52.100748222348955},"dragging":false,"style":{"width":283,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"UFuX8wcxZQ7dvaQF_2Yp8","type":"subtopic","position":{"x":-560.6381872719934,"y":393.90074822234897},"selected":true,"data":{"label":"Cookies","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"2tNyxd-8rFQoOsQIClP4O"},"zIndex":999,"width":210,"height":49,"positionAbsolute":{"x":-560.6381872719934,"y":393.90074822234897},"dragging":false,"style":{"width":210,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"TX_hg7EobNJhmWKsMCaT1","type":"subtopic","position":{"x":197.8618127280065,"y":106.10074822234895},"selected":true,"data":{"label":"Content Negotiation","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"MKVcPM2EzAr2_Ieyp9Fu3"},"zIndex":999,"width":283,"height":49,"positionAbsolute":{"x":197.8618127280065,"y":106.10074822234895},"dragging":false,"style":{"width":283,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"GRlsBogOlOwuqhMMPyHN3","type":"subtopic","position":{"x":-559.6381872719934,"y":446.40074822234897},"selected":true,"data":{"label":"CORS","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"KQAus72RGqx5f-3-YeJby"},"zIndex":999,"width":210,"height":49,"positionAbsolute":{"x":-559.6381872719934,"y":446.40074822234897},"dragging":false,"style":{"width":210,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"KG3wO86F8Of27fU7QRcsn","type":"subtopic","position":{"x":197.8618127280065,"y":160.10074822234895},"selected":true,"data":{"label":"Understand TCP / IP","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"MKVcPM2EzAr2_Ieyp9Fu3"},"zIndex":999,"width":283,"height":49,"positionAbsolute":{"x":197.8618127280065,"y":160.10074822234895},"dragging":false,"style":{"width":283,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"v4nJYD9yiIEUviLPhVTCD","type":"subtopic","position":{"x":197.8618127280065,"y":214.10074822234895},"selected":true,"data":{"label":"Basics of DNS","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"5CxU3inGcSHp-TDg3BQiY"},"zIndex":999,"width":283,"height":49,"positionAbsolute":{"x":197.8618127280065,"y":214.10074822234895},"dragging":false,"style":{"width":283,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"o8i093VQv-T5Qf1yGqU0R","type":"topic","position":{"x":-198.1381872719934,"y":330.40074822234897},"selected":true,"data":{"label":"Different API Styles","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"5R9yKfN1vItuv__HgCwP7"},"zIndex":999,"width":246,"height":49,"positionAbsolute":{"x":-198.1381872719934,"y":330.40074822234897},"dragging":false,"selectable":true,"focusable":true,"style":{"width":246,"height":49},"resizing":false},{"id":"BvwdASMvuNQ9DNgzdSZ4o","type":"subtopic","position":{"x":-196.3881872719935,"y":453.90074822234897},"selected":true,"data":{"label":"RESTful APIs","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"MKVcPM2EzAr2_Ieyp9Fu3"},"zIndex":999,"width":245,"height":49,"positionAbsolute":{"x":-196.3881872719935,"y":453.90074822234897},"dragging":false,"style":{"width":245,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"TVR-SkErlOHbDKLBGfxep","type":"subtopic","position":{"x":-196.3881872719935,"y":507.90074822234897},"selected":true,"data":{"label":"Simple JSON APIs","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"MKVcPM2EzAr2_Ieyp9Fu3"},"zIndex":999,"width":245,"height":49,"positionAbsolute":{"x":-196.3881872719935,"y":507.90074822234897},"dragging":false,"style":{"width":245,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"Wwd-0PjrtViMFWxRGaQey","type":"subtopic","position":{"x":-196.3881872719935,"y":561.900748222349},"selected":true,"data":{"label":"SOAP APIs","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"MKVcPM2EzAr2_Ieyp9Fu3"},"zIndex":999,"width":245,"height":49,"positionAbsolute":{"x":-196.3881872719935,"y":561.900748222349},"dragging":false,"style":{"width":245,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"MKVcPM2EzAr2_Ieyp9Fu3","type":"subtopic","position":{"x":-196.3881872719935,"y":615.900748222349},"selected":true,"data":{"label":"GraphQL APIs","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"WVSgaWgGJKqJYumpdPTCG"},"zIndex":999,"width":245,"height":49,"positionAbsolute":{"x":-196.3881872719935,"y":615.900748222349},"dragging":false,"style":{"width":245,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"iA0C1mFlM_73GcL9XNJmF","type":"button","position":{"x":-576.1381872719934,"y":615.900748222349},"selected":true,"data":{"label":"Visit GraphQL Roadmap","href":"https://roadmap.sh/graphql","color":"#ffffff","backgroundColor":"#2a79e4","style":{"fontSize":17},"oldId":"MSeNU5cURBInhPlvnhVfO"},"zIndex":999,"width":244,"height":49,"positionAbsolute":{"x":-576.1381872719934,"y":615.900748222349},"dragging":false,"style":{"width":244,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"awdoiCHz7Yc3kYac_iy-a","type":"topic","position":{"x":212.7618127280066,"y":548.400748222349},"selected":true,"data":{"label":"Building JSON / RESTful APIs","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"qHEzyDhqjQSa6vs5UDm_M"},"zIndex":999,"width":282,"height":49,"positionAbsolute":{"x":212.7618127280066,"y":548.400748222349},"dragging":false,"selectable":true,"focusable":true,"style":{"width":282,"height":49},"resizing":false},{"id":"9WI_z34jIFXwoUQuChyRU","type":"subtopic","position":{"x":223.2618127280066,"y":290.40074822234897},"selected":true,"data":{"label":"REST Principles","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"5CxU3inGcSHp-TDg3BQiY"},"zIndex":999,"width":261,"height":49,"positionAbsolute":{"x":223.2618127280066,"y":290.40074822234897},"dragging":false,"style":{"width":261,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"b3qRTLwCC_9uDoPGrd9Bu","type":"subtopic","position":{"x":223.2618127280066,"y":344.40074822234897},"selected":true,"data":{"label":"URI Design","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"5CxU3inGcSHp-TDg3BQiY"},"zIndex":999,"width":261,"height":49,"positionAbsolute":{"x":223.2618127280066,"y":344.40074822234897},"dragging":false,"style":{"width":261,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"itILK2SXvLvAjk1Kul7EK","type":"subtopic","position":{"x":223.2618127280066,"y":398.40074822234897},"selected":true,"data":{"label":"Versioning Strategies","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"zXxEiM5HeOn7W-Vue0tQf"},"zIndex":999,"width":261,"height":49,"positionAbsolute":{"x":223.2618127280066,"y":398.40074822234897},"dragging":false,"style":{"width":261,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"pgJDzP3pJjhjr5wTRtPJO","type":"subtopic","position":{"x":223.2618127280066,"y":649.400748222349},"selected":true,"data":{"label":"Pagination","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"5CxU3inGcSHp-TDg3BQiY"},"zIndex":999,"width":261,"height":49,"positionAbsolute":{"x":223.2618127280066,"y":649.400748222349},"dragging":false,"style":{"width":261,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"O7wjldZ3yTA2s_F-UnJw_","type":"subtopic","position":{"x":223.2618127280066,"y":703.400748222349},"selected":true,"data":{"label":"Rate Limiting","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"5CxU3inGcSHp-TDg3BQiY"},"zIndex":999,"width":261,"height":49,"positionAbsolute":{"x":223.2618127280066,"y":703.400748222349},"dragging":false,"style":{"width":261,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"20KEgZH6cu_UokqWpV-9I","type":"subtopic","position":{"x":223.2618127280066,"y":757.400748222349},"selected":true,"data":{"label":"Idempotency","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"5CxU3inGcSHp-TDg3BQiY"},"zIndex":999,"width":261,"height":49,"positionAbsolute":{"x":223.2618127280066,"y":757.400748222349},"dragging":false,"style":{"width":261,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"LByD1vhzunhY1uY1YGZHP","type":"subtopic","position":{"x":223.2618127280066,"y":811.400748222349},"selected":true,"data":{"label":"HATEOAS","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"5CxU3inGcSHp-TDg3BQiY"},"zIndex":999,"width":261,"height":49,"positionAbsolute":{"x":223.2618127280066,"y":811.400748222349},"dragging":false,"style":{"width":261,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"zXxEiM5HeOn7W-Vue0tQf","type":"subtopic","position":{"x":223.2618127280066,"y":452.40074822234897},"selected":true,"data":{"label":"Handling CRUD Operations","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"5CxU3inGcSHp-TDg3BQiY"},"zIndex":999,"width":261,"height":49,"positionAbsolute":{"x":223.2618127280066,"y":452.40074822234897},"dragging":false,"style":{"width":261,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"8tELdagrOaGCf3nMVs8t3","type":"subtopic","position":{"x":223.2618127280066,"y":865.400748222349},"selected":true,"data":{"label":"Error Handling","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"5CxU3inGcSHp-TDg3BQiY"},"zIndex":999,"width":261,"height":49,"positionAbsolute":{"x":223.2618127280066,"y":865.400748222349},"dragging":false,"style":{"width":261,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"5CxU3inGcSHp-TDg3BQiY","type":"subtopic","position":{"x":-165.6381872719934,"y":865.400748222349},"selected":true,"data":{"label":"RFC 7807 - Problem Details for APIs","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"MKVcPM2EzAr2_Ieyp9Fu3"},"zIndex":999,"width":326,"height":49,"positionAbsolute":{"x":-165.6381872719934,"y":865.400748222349},"dragging":false,"style":{"width":326,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"eUsorPQ8VRLJs28J8dyk2","type":"paragraph","position":{"x":-318.1381872719934,"y":728.9974788763272},"selected":true,"data":{"label":"API Authentication and Authorization","style":{"fontSize":20,"justifyContent":"flex-start","textAlign":"left"}},"zIndex":999,"width":366,"height":69,"dragging":false,"positionAbsolute":{"x":-318.1381872719934,"y":728.9974788763272},"selectable":true,"focusable":true,"style":{"width":366,"height":69},"resizing":false},{"id":"qAolZHf_jp8hCdtqHZwC8","type":"subtopic","position":{"x":-559.1381872719934,"y":498.90074822234897},"selected":true,"data":{"label":"HTTP Caching","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"KQAus72RGqx5f-3-YeJby"},"zIndex":999,"width":210,"height":49,"positionAbsolute":{"x":-559.1381872719934,"y":498.90074822234897},"dragging":false,"style":{"width":210,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"cQnQ9v3mH27MGNwetz3JW","type":"topic","position":{"x":-601.4010478029121,"y":859.6211541412258},"selected":true,"data":{"label":"Authentication Methods","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"5R9yKfN1vItuv__HgCwP7"},"zIndex":999,"width":246,"height":49,"positionAbsolute":{"x":-601.4010478029121,"y":859.6211541412258},"dragging":false,"selectable":true,"focusable":true,"style":{"width":246,"height":49},"resizing":false},{"id":"0FzHERK5AeYL5wv1FBJbH","type":"subtopic","position":{"x":-583.4010478029121,"y":983.7533379465866},"selected":true,"data":{"label":"Basic Auth","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"dZTe_kxIUQsc9N3w920aR"},"zIndex":999,"width":210,"height":49,"positionAbsolute":{"x":-583.4010478029121,"y":983.7533379465866},"dragging":false,"style":{"width":210,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"QTH7sy9uQZWl6ieBz7erY","type":"subtopic","position":{"x":-583.4010478029121,"y":1037.7533379465865},"selected":true,"data":{"label":"Token Based Auth","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"KQAus72RGqx5f-3-YeJby"},"zIndex":999,"width":210,"height":49,"positionAbsolute":{"x":-583.4010478029121,"y":1037.7533379465865},"dragging":false,"style":{"width":210,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"tWg68AHLIr1gIZA1za3jp","type":"subtopic","position":{"x":-583.4010478029121,"y":1091.7533379465865},"selected":true,"data":{"label":"JWT ","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"KQAus72RGqx5f-3-YeJby"},"zIndex":999,"width":210,"height":49,"positionAbsolute":{"x":-583.4010478029121,"y":1091.7533379465865},"dragging":false,"style":{"width":210,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"TLuNtQ6HKYQXmglyVk8-t","type":"subtopic","position":{"x":-583.4010478029121,"y":1145.7533379465865},"selected":true,"data":{"label":"OAuth 2.0","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"KQAus72RGqx5f-3-YeJby"},"zIndex":999,"width":210,"height":49,"positionAbsolute":{"x":-583.4010478029121,"y":1145.7533379465865},"dragging":false,"style":{"width":210,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"eQWoy4CpYP3TJL2bbhPB_","type":"subtopic","position":{"x":-583.4010478029121,"y":1199.8443340956667},"selected":true,"data":{"label":"Session Based Auth","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"boYX1QcJullypfX4sevdy"},"zIndex":999,"width":210,"height":49,"positionAbsolute":{"x":-583.4010478029121,"y":1199.8443340956667},"dragging":false,"style":{"width":210,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"nHbn8_sMY7J8o6ckbD-ER","type":"topic","position":{"x":-210.6381872719934,"y":1033.5329320277096},"selected":true,"data":{"label":"Authorization Methods","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"5R9yKfN1vItuv__HgCwP7"},"zIndex":999,"width":246,"height":49,"positionAbsolute":{"x":-210.6381872719934,"y":1033.5329320277096},"dragging":false,"selectable":true,"focusable":true,"style":{"width":246,"height":49},"resizing":false},{"id":"wFsbmMi5Ey9UyDADdbdPW","type":"subtopic","position":{"x":165.00932230336673,"y":1004.0041963907498},"selected":true,"data":{"label":"Role Based Access Control (RBAC)","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"dZTe_kxIUQsc9N3w920aR"},"zIndex":999,"width":352,"height":49,"positionAbsolute":{"x":165.00932230336673,"y":1004.0041963907498},"dragging":false,"style":{"width":352,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"dZTe_kxIUQsc9N3w920aR","type":"subtopic","position":{"x":165.00932230336673,"y":1058.00419639075},"selected":true,"data":{"label":"Attribute Based Access Control (ABAC)","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"KQAus72RGqx5f-3-YeJby"},"zIndex":999,"width":351,"height":49,"positionAbsolute":{"x":165.00932230336673,"y":1058.00419639075},"dragging":false,"style":{"width":351,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"tzUJwXu_scwQHnPPT0oY-","type":"topic","position":{"x":-210.6381872719934,"y":1146.5329320277096},"selected":true,"data":{"label":"API Keys & Management","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"Wpk4TvxcZOJgAoXjrOsZF"},"zIndex":999,"width":246,"height":49,"positionAbsolute":{"x":-210.6381872719934,"y":1146.5329320277096},"dragging":false,"selectable":true,"focusable":true,"style":{"width":246,"height":49},"resizing":false},{"id":"5R9yKfN1vItuv__HgCwP7","type":"topic","position":{"x":214.72110595703134,"y":1146.5329320277096},"selected":true,"data":{"label":"API Documentation Tools","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"awdoiCHz7Yc3kYac_iy-a"},"zIndex":999,"width":246,"height":49,"positionAbsolute":{"x":214.72110595703134,"y":1146.5329320277096},"dragging":false,"selectable":true,"focusable":true,"style":{"width":246,"height":49},"resizing":false},{"id":"5RY7AlfRQydjxWK65Z4cv","type":"subtopic","position":{"x":232.85884761415554,"y":1270.9481617844106},"selected":true,"data":{"label":"Swagger / Open API","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"OpS2NX1lPTOtfjV1wKtC4"},"zIndex":999,"width":210,"height":49,"positionAbsolute":{"x":232.85884761415554,"y":1270.9481617844106},"dragging":false,"style":{"width":210,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"KQAus72RGqx5f-3-YeJby","type":"subtopic","position":{"x":232.85884761415554,"y":1427.5717249610107},"selected":true,"data":{"label":"Postman","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"CDLaORTdB5PWk7VbcU1bz"},"zIndex":999,"width":210,"height":49,"positionAbsolute":{"x":232.85884761415554,"y":1427.5717249610107},"dragging":false,"style":{"width":210,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"LxWHkhlikUaMT2G8YmVDQ","type":"subtopic","position":{"x":232.85884761415554,"y":1323.1560161766106},"selected":true,"data":{"label":"Readme.com","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"OpS2NX1lPTOtfjV1wKtC4"},"zIndex":999,"width":210,"height":49,"positionAbsolute":{"x":232.85884761415554,"y":1323.1560161766106},"dragging":false,"style":{"width":210,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"OpS2NX1lPTOtfjV1wKtC4","type":"subtopic","position":{"x":232.85884761415554,"y":1375.3638705688106},"selected":true,"data":{"label":"Stoplight","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"KQAus72RGqx5f-3-YeJby"},"zIndex":999,"width":210,"height":49,"positionAbsolute":{"x":232.85884761415554,"y":1375.3638705688106},"dragging":false,"style":{"width":210,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"qIJ6dUppjAjOTA8eQbp0n","type":"topic","position":{"x":-207.7109644352177,"y":1398.532340911712},"selected":true,"data":{"label":"API Security","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"Wpk4TvxcZOJgAoXjrOsZF"},"zIndex":999,"width":246,"height":49,"positionAbsolute":{"x":-207.7109644352177,"y":1398.532340911712},"dragging":false,"selectable":true,"focusable":true,"style":{"width":246,"height":49},"resizing":false},{"id":"G70wvcOM1Isrx5ZBvS2xP","type":"subtopic","position":{"x":-205.2109644352177,"y":1251.6104620579213},"selected":true,"data":{"label":"Common Vulnerabilities","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"q1yaf-RbHIQsOqfzjn4k4"},"zIndex":999,"width":241,"height":49,"positionAbsolute":{"x":-205.2109644352177,"y":1251.6104620579213},"dragging":false,"style":{"width":241,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"q1yaf-RbHIQsOqfzjn4k4","type":"subtopic","position":{"x":-205.2109644352177,"y":1303.8183164501213},"selected":true,"data":{"label":"Best Practices","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"KQAus72RGqx5f-3-YeJby"},"zIndex":999,"width":241,"height":49,"positionAbsolute":{"x":-205.2109644352177,"y":1303.8183164501213},"dragging":false,"style":{"width":241,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"92-ebM0EwQ3nLjZKtvCZX","type":"button","position":{"x":-612.1381872719934,"y":1303.8183164501213},"selected":true,"data":{"label":"API Security Best Practices","href":"","color":"#ffffff","backgroundColor":"#2a79e4","style":{"fontSize":17},"oldId":"MSeNU5cURBInhPlvnhVfO"},"zIndex":999,"width":290,"height":49,"positionAbsolute":{"x":-612.1381872719934,"y":1303.8183164501213},"dragging":false,"style":{"width":290,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"d9ZXdU73jiCdeNHQv1_DH","type":"topic","position":{"x":-590.469505701316,"y":1467.491632075372},"selected":true,"data":{"label":"API Performance","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"Wpk4TvxcZOJgAoXjrOsZF"},"zIndex":999,"width":246,"height":49,"positionAbsolute":{"x":-590.469505701316,"y":1467.491632075372},"dragging":false,"selectable":true,"focusable":true,"style":{"width":246,"height":49},"resizing":false},{"id":"nQpczZUcn-TvrfT80dv0Q","type":"subtopic","position":{"x":-585.469505701316,"y":1568.4353183589587},"selected":true,"data":{"label":"Performance Metrics","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"boYX1QcJullypfX4sevdy"},"zIndex":999,"width":236,"height":49,"positionAbsolute":{"x":-585.469505701316,"y":1568.4353183589587},"dragging":false,"style":{"width":236,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"PrvRCR4HCdGar0vcUbG_a","type":"subtopic","position":{"x":-585.469505701316,"y":1619.7437339754388},"selected":true,"data":{"label":"Caching Strategies","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"boYX1QcJullypfX4sevdy"},"zIndex":999,"width":236,"height":49,"positionAbsolute":{"x":-585.469505701316,"y":1619.7437339754388},"dragging":false,"style":{"width":236,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"p5wsniYnOS7cbHd92RxGk","type":"subtopic","position":{"x":-585.469505701316,"y":1671.0521495919188},"selected":true,"data":{"label":"Load Balancing","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"boYX1QcJullypfX4sevdy"},"zIndex":999,"width":236,"height":49,"positionAbsolute":{"x":-585.469505701316,"y":1671.0521495919188},"dragging":false,"style":{"width":236,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"tPVtRV818D8zAAuNbqPNa","type":"subtopic","position":{"x":-585.469505701316,"y":1722.3605652083988},"selected":true,"data":{"label":"Rate Limiting / Throttling","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"boYX1QcJullypfX4sevdy"},"zIndex":999,"width":236,"height":49,"positionAbsolute":{"x":-585.469505701316,"y":1722.3605652083988},"dragging":false,"style":{"width":236,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"-qdwBg7HvwlbLy3IKCRij","type":"subtopic","position":{"x":-585.469505701316,"y":1773.6689808248789},"selected":true,"data":{"label":"Profiling and Monitoring","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"boYX1QcJullypfX4sevdy"},"zIndex":999,"width":236,"height":49,"positionAbsolute":{"x":-585.469505701316,"y":1773.6689808248789},"dragging":false,"style":{"width":236,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"DQcAV59vr1-ZRnMfbLXpu","type":"subtopic","position":{"x":-585.469505701316,"y":1824.977396441359},"selected":true,"data":{"label":"Performance Testing","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"XD1vDtrRQFbLyKJaD1AlA"},"zIndex":999,"width":236,"height":49,"positionAbsolute":{"x":-585.469505701316,"y":1824.977396441359},"dragging":false,"style":{"width":236,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"MSeNU5cURBInhPlvnhVfO","type":"button","position":{"x":-614.469505701316,"y":1367.532340911712},"selected":true,"data":{"label":"API Performance Best Practices","href":"","color":"#ffffff","backgroundColor":"#2a79e4","style":{"fontSize":17}},"zIndex":999,"width":294,"height":49,"positionAbsolute":{"x":-614.469505701316,"y":1367.532340911712},"dragging":false,"style":{"width":294,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"R3aRhqCslwhegMfHtxg5z","type":"topic","position":{"x":-210.2109644352177,"y":1544.4353183589587},"selected":true,"data":{"label":"API Integration Patterns","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"yvdfoly5WHHTq2Puss355"},"zIndex":999,"width":246,"height":49,"positionAbsolute":{"x":-210.2109644352177,"y":1544.4353183589587},"dragging":false,"selectable":true,"focusable":true,"style":{"width":246,"height":49},"resizing":false},{"id":"kJD1K2-ZkoezFCfpmOM0Z","type":"section","position":{"x":-255.7109644352177,"y":1661.7437339754388},"selected":true,"data":{"label":"","style":{"width":150,"height":100,"fontSize":17,"backgroundColor":"TRANSPARENt","borderColor":"TRANSPARENt"},"oldId":"o3XFXW2HHLBoxlbEnoWdZ"},"zIndex":-999,"width":335,"height":370,"style":{"width":335,"height":370},"positionAbsolute":{"x":-255.7109644352177,"y":1661.7437339754388},"dragging":false,"resizing":false,"focusable":true,"selectable":true},{"id":"--mmTKhG58_elbUqyn90G","type":"subtopic","position":{"x":-250.7109644352177,"y":1662.4353183589587},"selected":true,"data":{"label":"Synchronous vs Asynchronous APIs","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"iNsXTtcIHsI_i-mCfjGYn"},"zIndex":999,"width":325,"height":49,"positionAbsolute":{"x":-250.7109644352177,"y":1662.4353183589587},"dragging":false,"style":{"width":325,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"oMfOBkVsgiLvFLicOUdx6","type":"subtopic","position":{"x":-250.7109644352177,"y":1713.7417878080591},"selected":true,"data":{"label":"Event Driven Architecture","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"PrvRCR4HCdGar0vcUbG_a"},"zIndex":999,"width":325,"height":49,"positionAbsolute":{"x":-250.7109644352177,"y":1713.7417878080591},"dragging":false,"style":{"width":325,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"MJeUD4fOHaJu1oxk4uQ-x","type":"subtopic","position":{"x":-250.7109644352177,"y":1765.752205777561},"selected":true,"data":{"label":"API Gateways","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"p5wsniYnOS7cbHd92RxGk"},"zIndex":999,"width":325,"height":49,"positionAbsolute":{"x":-250.7109644352177,"y":1765.752205777561},"dragging":false,"style":{"width":325,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"PPeBbooE121zrgNwpVTiA","type":"subtopic","position":{"x":-250.7109644352177,"y":1817.410649486862},"selected":true,"data":{"label":"Microservices Architecture","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"-qdwBg7HvwlbLy3IKCRij"},"zIndex":999,"width":325,"height":49,"positionAbsolute":{"x":-250.7109644352177,"y":1817.410649486862},"dragging":false,"style":{"width":325,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"IkPZel5zxXWIx90Qx7fZI","type":"subtopic","position":{"x":-250.7109644352177,"y":1972.3859806147652},"selected":true,"data":{"label":"Messaging Queues","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"mXCKtLUvwVJkHrpHzOecq"},"zIndex":999,"width":325,"height":49,"positionAbsolute":{"x":-250.7109644352177,"y":1972.3859806147652},"dragging":false,"style":{"width":325,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"75NVxS0iwoQXxOHCkWQxH","type":"subtopic","position":{"x":-250.7109644352177,"y":1869.069093196163},"selected":true,"data":{"label":"Webhooks vs Polling","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"X68HXAAV-nKo-V4Fu1o72"},"zIndex":999,"width":325,"height":49,"positionAbsolute":{"x":-250.7109644352177,"y":1869.069093196163},"dragging":false,"style":{"width":325,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"X68HXAAV-nKo-V4Fu1o72","type":"subtopic","position":{"x":-250.7109644352177,"y":1920.7275369054641},"selected":true,"data":{"label":"Batch Processing","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"boYX1QcJullypfX4sevdy"},"zIndex":999,"width":325,"height":49,"positionAbsolute":{"x":-250.7109644352177,"y":1920.7275369054641},"dragging":false,"style":{"width":325,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"H22jAI2W5QLL-b1rq-c56","type":"subtopic","position":{"x":-497.66906836651873,"y":1941.8678842718575},"selected":true,"data":{"label":"Rabbit MQ","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"boYX1QcJullypfX4sevdy"},"zIndex":999,"width":145,"height":49,"positionAbsolute":{"x":-497.66906836651873,"y":1941.8678842718575},"dragging":false,"style":{"width":145,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"boYX1QcJullypfX4sevdy","type":"subtopic","position":{"x":-499.16906836651884,"y":1996.867884271857},"selected":true,"data":{"label":"Kafka","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"q1yaf-RbHIQsOqfzjn4k4"},"zIndex":999,"width":148,"height":49,"positionAbsolute":{"x":-499.16906836651884,"y":1996.867884271857},"dragging":false,"style":{"width":148,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"Wpk4TvxcZOJgAoXjrOsZF","type":"topic","position":{"x":221.19846699906657,"y":1758.058993623857},"selected":true,"data":{"label":"API Testing","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"5R9yKfN1vItuv__HgCwP7"},"zIndex":999,"width":246,"height":49,"positionAbsolute":{"x":221.19846699906657,"y":1758.058993623857},"dragging":false,"selectable":true,"focusable":true,"style":{"width":246,"height":49},"resizing":false},{"id":"JvmW78cDm84GNhq8VEYZp","type":"subtopic","position":{"x":247.69846699906657,"y":1505.4070461854096},"selected":true,"data":{"label":"Unit Testing","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"iNsXTtcIHsI_i-mCfjGYn"},"zIndex":999,"width":193,"height":49,"positionAbsolute":{"x":247.69846699906657,"y":1505.4070461854096},"dragging":false,"style":{"width":193,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"qZELS5vw2feS7QfyD7spX","type":"subtopic","position":{"x":247.69846699906657,"y":1559.4070461854096},"selected":true,"data":{"label":"Integration Testing","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"iNsXTtcIHsI_i-mCfjGYn"},"zIndex":999,"width":193,"height":49,"positionAbsolute":{"x":247.69846699906657,"y":1559.4070461854096},"dragging":false,"style":{"width":193,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"6lm3wy9WTAERTqXCn6pFt","type":"subtopic","position":{"x":247.69846699906657,"y":1613.4070461854096},"selected":true,"data":{"label":"Functional Testing","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"iNsXTtcIHsI_i-mCfjGYn"},"zIndex":999,"width":193,"height":49,"positionAbsolute":{"x":247.69846699906657,"y":1613.4070461854096},"dragging":false,"style":{"width":193,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"7JNEx_cbqnAx3esvwZMOd","type":"subtopic","position":{"x":247.69846699906657,"y":1667.4070461854096},"selected":true,"data":{"label":"Load Testing","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"iNsXTtcIHsI_i-mCfjGYn"},"zIndex":999,"width":193,"height":49,"positionAbsolute":{"x":247.69846699906657,"y":1667.4070461854096},"dragging":false,"style":{"width":193,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"bEVCT5QGY3uw0kIfAELKh","type":"subtopic","position":{"x":248.4735203536439,"y":1861.446054725657},"selected":true,"data":{"label":"Mocking APIs","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"iNsXTtcIHsI_i-mCfjGYn"},"zIndex":999,"width":193,"height":49,"positionAbsolute":{"x":248.4735203536439,"y":1861.446054725657},"dragging":false,"style":{"width":193,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"NqeBglhzukVMMEF9p2CXc","type":"subtopic","position":{"x":248.4735203536439,"y":1915.446054725657},"selected":true,"data":{"label":"Contract Testing","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"iNsXTtcIHsI_i-mCfjGYn"},"zIndex":999,"width":193,"height":49,"positionAbsolute":{"x":248.4735203536439,"y":1915.446054725657},"dragging":false,"style":{"width":193,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"XD1vDtrRQFbLyKJaD1AlA","type":"subtopic","position":{"x":-585.469505701316,"y":1876.285812057839},"selected":true,"data":{"label":"Error Handling / Retries","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"boYX1QcJullypfX4sevdy"},"zIndex":999,"width":236,"height":49,"positionAbsolute":{"x":-585.469505701316,"y":1876.285812057839},"dragging":false,"style":{"width":236,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"JE12g5cqnwmgeTle14Vxw","type":"topic","position":{"x":35.36181272800661,"y":2095.4915595367556},"selected":true,"data":{"label":"Real-time APIs","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"At5exN7ZAx2IzY3cTCzHm"},"zIndex":999,"width":170,"height":49,"positionAbsolute":{"x":35.36181272800661,"y":2095.4915595367556},"dragging":false,"selectable":true,"focusable":true,"style":{"width":170,"height":49},"resizing":false},{"id":"UQ8N7gcVpRLAYXgUNHBt5","type":"subtopic","position":{"x":267.72110595703134,"y":2069.2728071916526},"selected":true,"data":{"label":"Web Sockets","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"iNsXTtcIHsI_i-mCfjGYn"},"zIndex":999,"width":193,"height":49,"positionAbsolute":{"x":267.72110595703134,"y":2069.2728071916526},"dragging":false,"style":{"width":193,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"iNsXTtcIHsI_i-mCfjGYn","type":"subtopic","position":{"x":267.72110595703134,"y":2123.2728071916526},"selected":true,"data":{"label":"Server Sent Events","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"nQpczZUcn-TvrfT80dv0Q"},"zIndex":999,"width":193,"height":49,"positionAbsolute":{"x":267.72110595703134,"y":2123.2728071916526},"dragging":false,"style":{"width":193,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"yvdfoly5WHHTq2Puss355","type":"topic","position":{"x":-363.31358688509135,"y":2210.5425435400516},"selected":true,"data":{"label":"Standards and Compliance","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"Wpk4TvxcZOJgAoXjrOsZF"},"zIndex":999,"width":271,"height":49,"positionAbsolute":{"x":-363.31358688509135,"y":2210.5425435400516},"dragging":false,"selectable":true,"focusable":true,"style":{"width":271,"height":49},"resizing":false},{"id":"vZxdswGLHCPi5GSuXEcHJ","type":"subtopic","position":{"x":-570.6112846237921,"y":2102.642324872653},"selected":true,"data":{"label":"GDPR","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"mXCKtLUvwVJkHrpHzOecq"},"zIndex":999,"width":123,"height":49,"positionAbsolute":{"x":-570.6112846237921,"y":2102.642324872653},"dragging":false,"style":{"width":123,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"At5exN7ZAx2IzY3cTCzHm","type":"topic","position":{"x":-361.55504561899306,"y":2095.4915595367556},"selected":true,"data":{"label":"API Lifecycle Management","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"yvdfoly5WHHTq2Puss355"},"zIndex":999,"width":267,"height":49,"positionAbsolute":{"x":-361.55504561899306,"y":2095.4915595367556},"dragging":false,"selectable":true,"focusable":true,"style":{"width":267,"height":49},"resizing":false},{"id":"a-_iIE7UdoXzD00fD9MxN","type":"subtopic","position":{"x":-570.6112846237921,"y":2156.642324872653},"selected":true,"data":{"label":"CCPA","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"mXCKtLUvwVJkHrpHzOecq"},"zIndex":999,"width":123,"height":49,"positionAbsolute":{"x":-570.6112846237921,"y":2156.642324872653},"dragging":false,"style":{"width":123,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"J0enF8UTVzY3H4n3pbPIF","type":"subtopic","position":{"x":-570.6112846237921,"y":2210.642324872653},"selected":true,"data":{"label":"PCI DSS","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"mXCKtLUvwVJkHrpHzOecq"},"zIndex":999,"width":123,"height":49,"positionAbsolute":{"x":-570.6112846237921,"y":2210.642324872653},"dragging":false,"style":{"width":123,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"W4WwTmgZGnWmiYsB0ezml","type":"subtopic","position":{"x":-568.8897926825906,"y":2264.642324872653},"selected":true,"data":{"label":"HIPAA","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"mXCKtLUvwVJkHrpHzOecq"},"zIndex":999,"width":123,"height":49,"positionAbsolute":{"x":-568.8897926825906,"y":2264.642324872653},"dragging":false,"style":{"width":123,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"mXCKtLUvwVJkHrpHzOecq","type":"subtopic","position":{"x":-570.6112846237921,"y":2318.642324872653},"selected":true,"data":{"label":"PII","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"center"},"oldId":"X68HXAAV-nKo-V4Fu1o72"},"zIndex":999,"width":123,"height":49,"positionAbsolute":{"x":-570.6112846237921,"y":2318.642324872653},"dragging":false,"style":{"width":123,"height":49},"resizing":false,"selectable":true,"focusable":true},{"id":"ETSZIZbfsiSgwpAS6HgGp","type":"vertical","position":{"x":-85.13818727199339,"y":-164.08481519539623},"selected":true,"data":{"label":"vertical node","style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2B78E4"}},"zIndex":999,"width":20,"height":94,"positionAbsolute":{"x":-85.13818727199339,"y":-164.08481519539623},"dragging":false,"style":{"width":20,"height":94},"resizing":false,"selectable":true,"focusable":true},{"id":"PstbOGqR_4C2WWV8CWXes","type":"linksgroup","position":{"x":-599.3135868850914,"y":-176.03181769055132},"selected":true,"data":{"label":"Related Roadmaps","links":[{"id":"3uv48fdglShh8YYF3zRWv","label":"Backend Roadmap","href":"","url":"https://roadmap.sh/backend"},{"id":"ZW1PEheVeJJiIPR08jfCr","label":"DevOps Roadmap","url":"https://roadmap.sh/devops"},{"id":"td_Z-sAuf092awd8U-VNG","label":"Full Stack Roadmap","url":"https://roadmap.sh/full-stack"}]},"zIndex":999,"width":303,"height":163,"positionAbsolute":{"x":-599.3135868850914,"y":-176.03181769055132},"dragging":false,"selectable":true,"focusable":true,"style":{"width":303,"height":163},"resizing":false},{"id":"yHmHXymPNWwu8p1vvqD3o","type":"paragraph","position":{"x":158.23571626420664,"y":-175.8282364125966},"selected":true,"data":{"label":"Find the detailed version of this roadmap along with other similar roadmaps","style":{"fontSize":17,"justifyContent":"flex-start","textAlign":"left","borderColor":"#000000"}},"zIndex":999,"width":354,"height":143,"positionAbsolute":{"x":158.23571626420664,"y":-175.8282364125966},"dragging":false,"selectable":true,"focusable":true,"style":{"width":354,"height":143},"resizing":false},{"id":"2zqZkyVgigifcRS1H7F_b","type":"button","position":{"x":171.43909067700685,"y":-93.84267299485134},"selected":true,"data":{"label":"roadmap.sh","href":"https://roadmap.sh","color":"#ffffff","backgroundColor":"#2a79e4","style":{"fontSize":17}},"zIndex":999,"width":329,"height":49,"dragging":false,"style":{"width":329,"height":49},"resizing":false,"positionAbsolute":{"x":171.43909067700685,"y":-93.84267299485134},"selectable":true,"focusable":true},{"id":"4fauwiq2CJnzDA7Z9Pmeo","type":"button","position":{"x":-139.18102870413122,"y":2429.279985574316},"selected":true,"data":{"label":"Backend Roadmap","href":"https://roadmap.sh/backend","color":"#ffffff","backgroundColor":"#2a79e4","style":{"fontSize":17},"oldId":"eYziHRN-gsg9qr8Yddu2K"},"zIndex":999,"width":196,"height":49,"positionAbsolute":{"x":-139.18102870413122,"y":2429.279985574316},"dragging":false,"selectable":true,"focusable":true,"style":{"width":196,"height":49},"resizing":false},{"id":"eYziHRN-gsg9qr8Yddu2K","type":"button","position":{"x":68.81897129586875,"y":2429.279985574316},"selected":true,"data":{"label":"DevOps Roadmap","href":"https://roadmap.sh/devops","color":"#ffffff","backgroundColor":"#2a79e4","style":{"fontSize":17}},"zIndex":999,"width":196,"height":49,"positionAbsolute":{"x":68.81897129586875,"y":2429.279985574316},"dragging":false,"selectable":true,"focusable":true,"style":{"width":196,"height":49},"resizing":false},{"id":"cV_O7RiFmpoI4f1o8lF4B","type":"vertical","position":{"x":56.53195030203017,"y":2493.4716162213053},"selected":true,"data":{"label":"vertical node","style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2B78E4"}},"zIndex":999,"width":20,"height":94,"positionAbsolute":{"x":56.53195030203017,"y":2493.4716162213053},"dragging":false,"style":{"width":20,"height":94},"resizing":false,"focusable":true,"selectable":true}],"edges":[{"style":{"strokeDasharray":"0","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"sourceHandle":"x2","targetHandle":"w1","data":{"edgeStyle":"solid"},"id":"JOhjYmVo9geZEMeeRPidh","selected":true,"focusable":true,"selectable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"sourceHandle":"z2","targetHandle":"y1","data":{"edgeStyle":"dashed"},"id":"89g6rzK2JcZhJ1MAQra8R","selected":true,"focusable":true,"selectable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"sourceHandle":"z2","targetHandle":"y2","data":{"edgeStyle":"dashed"},"id":"xMpMq9rxn_DYslWm3_Efz","selected":true,"focusable":true,"selectable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"sourceHandle":"z2","targetHandle":"y1","data":{"edgeStyle":"dashed"},"id":"-EP79fa9WRfTgvuq5FRaw","selected":true,"focusable":true,"selectable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"sourceHandle":"z2","targetHandle":"y1","data":{"edgeStyle":"dashed"},"id":"1Qdcf_-7xas-XQldfLRjv","selected":true,"focusable":true,"selectable":true},{"style":{"strokeDasharray":"0","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"sourceHandle":"x2","targetHandle":"y1","data":{"edgeStyle":"solid"},"id":"CfFazuChYdU7GaJO_TolE","selected":true,"focusable":true,"selectable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"sourceHandle":"z2","targetHandle":"y1","data":{"edgeStyle":"dashed"},"id":"74bGlBMuedspLPHnGV2LW","selected":true,"focusable":true,"selectable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"sourceHandle":"z2","targetHandle":"y1","data":{"edgeStyle":"dashed"},"id":"XU7kv1zNr-yC063oqWlz2","selected":true,"focusable":true,"selectable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"sourceHandle":"x2","targetHandle":"w2","data":{"edgeStyle":"dashed"},"id":"swvSmJ6SyUFxK9fHwPJTF","selected":true,"focusable":true,"selectable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"sourceHandle":"w2","targetHandle":"x1","data":{"edgeStyle":"dashed"},"id":"-URcDxULzdZbiMbEx8bBe","selected":true,"focusable":true,"selectable":true},{"style":{"strokeDasharray":"0","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"sourceHandle":"y2","targetHandle":"w1","data":{"edgeStyle":"solid"},"selected":true,"id":"_k4274GmDVM-MViCSYN6K","focusable":true,"selectable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"sourceHandle":"y2","targetHandle":"z1","data":{"edgeStyle":"dashed"},"id":"Tf3d_J21EhC-bcfpqV_o5","selected":true,"focusable":true,"selectable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"sourceHandle":"y2","targetHandle":"z2","data":{"edgeStyle":"dashed"},"id":"gRouAKXdfT8XQV_nzA-wA","selected":true,"focusable":true,"selectable":true},{"style":{"strokeDasharray":"0","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"sourceHandle":"x2","targetHandle":"w1","data":{"edgeStyle":"solid"},"id":"BgmVdQyd7i1SrZj0forT9","selected":true,"focusable":true,"selectable":true},{"style":{"strokeDasharray":"0","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"AZoEY2N7PqAQgUl04E3KF","sourceHandle":"x2","target":"duKkpzPjUU_-8kyJGHqRX","targetHandle":"w1","data":{"edgeStyle":"solid"},"id":"1a_QvZPscaIyRxhKH7p-K","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"duKkpzPjUU_-8kyJGHqRX","sourceHandle":"y2","target":"r8M3quACGO2piu0u_R4hO","targetHandle":"z1","data":{"edgeStyle":"dashed"},"id":"cWesUDXpvCzBEu5BpXefC","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"duKkpzPjUU_-8kyJGHqRX","sourceHandle":"y2","target":"2HdKzAIQi15pr3YHHrbPp","targetHandle":"z1","data":{"edgeStyle":"dashed"},"id":"CVsFgRPHi9vaQWTqSrbFF","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"duKkpzPjUU_-8kyJGHqRX","sourceHandle":"z2","target":"P-rGIk50Bg7nFmWieAW07","targetHandle":"y1","data":{"edgeStyle":"dashed"},"id":"AWgpOpfFNBRrSi_K8RPQg","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"duKkpzPjUU_-8kyJGHqRX","sourceHandle":"z2","target":"TX_hg7EobNJhmWKsMCaT1","targetHandle":"y1","data":{"edgeStyle":"dashed"},"id":"uJadhS5nJBYewb-YSy7zE","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"GRlsBogOlOwuqhMMPyHN3","sourceHandle":"z2","target":"GRlsBogOlOwuqhMMPyHN3","targetHandle":"z1","data":{"edgeStyle":"dashed"},"id":"reactflow__edge-KQAus72RGqx5f-3-YeJbyz2-KQAus72RGqx5f-3-YeJbyz1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"duKkpzPjUU_-8kyJGHqRX","sourceHandle":"z2","target":"KG3wO86F8Of27fU7QRcsn","targetHandle":"y2","data":{"edgeStyle":"dashed"},"id":"reactflow__edge-awdoiCHz7Yc3kYac_iy-az2-KG3wO86F8Of27fU7QRcsny2","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"duKkpzPjUU_-8kyJGHqRX","sourceHandle":"z2","target":"v4nJYD9yiIEUviLPhVTCD","targetHandle":"y1","data":{"edgeStyle":"dashed"},"id":"reactflow__edge-awdoiCHz7Yc3kYac_iy-az2-MKVcPM2EzAr2_Ieyp9Fu3y1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"duKkpzPjUU_-8kyJGHqRX","sourceHandle":"x2","target":"o8i093VQv-T5Qf1yGqU0R","targetHandle":"w1","data":{"edgeStyle":"solid"},"id":"reactflow__edge-duKkpzPjUU_-8kyJGHqRXx2-awdoiCHz7Yc3kYac_iy-aw1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"o8i093VQv-T5Qf1yGqU0R","sourceHandle":"x2","target":"wTrcPqj0KpoeOvJf7k3iI","targetHandle":"w1","data":{"edgeStyle":"dashed"},"id":"reactflow__edge-awdoiCHz7Yc3kYac_iy-ax2-wTrcPqj0KpoeOvJf7k3iIw1","selected":true,"focusable":true,"selectable":true},{"style":{"strokeDasharray":"0","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"o8i093VQv-T5Qf1yGqU0R","sourceHandle":"z2","target":"awdoiCHz7Yc3kYac_iy-a","targetHandle":"y1","data":{"edgeStyle":"solid"},"selected":true,"selectable":true,"focusable":true,"id":"reactflow__edge-5R9yKfN1vItuv__HgCwP7z2-awdoiCHz7Yc3kYac_iy-ay1"},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"awdoiCHz7Yc3kYac_iy-a","sourceHandle":"w2","target":"junprE7dbMyeovApqhSgr","targetHandle":"x1","data":{"edgeStyle":"dashed"},"id":"reactflow__edge-awdoiCHz7Yc3kYac_iy-aw2-junprE7dbMyeovApqhSgrx1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"awdoiCHz7Yc3kYac_iy-a","sourceHandle":"x2","target":"iHtjFSkQWMoUNdltNttEd","targetHandle":"w1","data":{"edgeStyle":"dashed"},"id":"reactflow__edge-awdoiCHz7Yc3kYac_iy-ax2-iHtjFSkQWMoUNdltNttEdw1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"8tELdagrOaGCf3nMVs8t3","sourceHandle":"y2","target":"5CxU3inGcSHp-TDg3BQiY","targetHandle":"z1","data":{"edgeStyle":"dashed"},"id":"reactflow__edge-8tELdagrOaGCf3nMVs8t3y2-5CxU3inGcSHp-TDg3BQiYz1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"awdoiCHz7Yc3kYac_iy-a","sourceHandle":"y2","target":"eUsorPQ8VRLJs28J8dyk2","targetHandle":"z1","data":{"edgeStyle":"solid"},"id":"reactflow__edge-awdoiCHz7Yc3kYac_iy-ay2-eUsorPQ8VRLJs28J8dyk2z1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"eUsorPQ8VRLJs28J8dyk2","sourceHandle":"y2","target":"cQnQ9v3mH27MGNwetz3JW","targetHandle":"w1","data":{"edgeStyle":"solid"},"id":"reactflow__edge-eUsorPQ8VRLJs28J8dyk2y2-5R9yKfN1vItuv__HgCwP7w1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"cQnQ9v3mH27MGNwetz3JW","sourceHandle":"x2","target":"cGWZQjKazJQ0D3nz_AdAX","targetHandle":"w1","data":{"edgeStyle":"dashed"},"id":"reactflow__edge-5R9yKfN1vItuv__HgCwP7x2-cGWZQjKazJQ0D3nz_AdAXw1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"cQnQ9v3mH27MGNwetz3JW","sourceHandle":"z2","target":"nHbn8_sMY7J8o6ckbD-ER","targetHandle":"y1","data":{"edgeStyle":"solid"},"selected":true,"id":"reactflow__edge-cQnQ9v3mH27MGNwetz3JWz2-5R9yKfN1vItuv__HgCwP7y1","selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"nHbn8_sMY7J8o6ckbD-ER","sourceHandle":"z2","target":"wFsbmMi5Ey9UyDADdbdPW","targetHandle":"y1","data":{"edgeStyle":"dashed"},"id":"reactflow__edge-5R9yKfN1vItuv__HgCwP7z2-wFsbmMi5Ey9UyDADdbdPWy1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"nHbn8_sMY7J8o6ckbD-ER","sourceHandle":"z2","target":"dZTe_kxIUQsc9N3w920aR","targetHandle":"y1","data":{"edgeStyle":"dashed"},"id":"reactflow__edge-5R9yKfN1vItuv__HgCwP7z2-dZTe_kxIUQsc9N3w920aRy1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"nHbn8_sMY7J8o6ckbD-ER","sourceHandle":"x2","target":"tzUJwXu_scwQHnPPT0oY-","targetHandle":"w1","data":{"edgeStyle":"solid"},"id":"reactflow__edge-nHbn8_sMY7J8o6ckbD-ERx2-5R9yKfN1vItuv__HgCwP7w1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"tzUJwXu_scwQHnPPT0oY-","sourceHandle":"z2","target":"5R9yKfN1vItuv__HgCwP7","targetHandle":"y2","data":{"edgeStyle":"solid"},"id":"reactflow__edge-Wpk4TvxcZOJgAoXjrOsZFz2-5R9yKfN1vItuv__HgCwP7y2","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"5R9yKfN1vItuv__HgCwP7","sourceHandle":"x2","target":"RkPVaSF9XnX6uHUns_-oC","targetHandle":"w1","data":{"edgeStyle":"dashed"},"id":"reactflow__edge-5R9yKfN1vItuv__HgCwP7x2-RkPVaSF9XnX6uHUns_-oCw1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"5R9yKfN1vItuv__HgCwP7","sourceHandle":"y2","target":"qIJ6dUppjAjOTA8eQbp0n","targetHandle":"z1","data":{"edgeStyle":"solid"},"id":"reactflow__edge-5R9yKfN1vItuv__HgCwP7y2-Wpk4TvxcZOJgAoXjrOsZFz1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"qIJ6dUppjAjOTA8eQbp0n","sourceHandle":"w2","target":"ludceg3fQVkilNTKWznti","targetHandle":"x1","data":{"edgeStyle":"dashed"},"id":"reactflow__edge-Wpk4TvxcZOJgAoXjrOsZFw2-ludceg3fQVkilNTKWzntix1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"q1yaf-RbHIQsOqfzjn4k4","sourceHandle":"y2","target":"92-ebM0EwQ3nLjZKtvCZX","targetHandle":"z1","data":{"edgeStyle":"dashed"},"id":"reactflow__edge-q1yaf-RbHIQsOqfzjn4k4y2-MSeNU5cURBInhPlvnhVfOz1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"qIJ6dUppjAjOTA8eQbp0n","sourceHandle":"y2","target":"d9ZXdU73jiCdeNHQv1_DH","targetHandle":"z1","data":{"edgeStyle":"solid"},"selected":true,"selectable":true,"focusable":true,"id":"reactflow__edge-qIJ6dUppjAjOTA8eQbp0ny2-Wpk4TvxcZOJgAoXjrOsZFz1"},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"d9ZXdU73jiCdeNHQv1_DH","sourceHandle":"w2","target":"MSeNU5cURBInhPlvnhVfO","targetHandle":"x1","data":{"edgeStyle":"dashed"},"id":"reactflow__edge-Wpk4TvxcZOJgAoXjrOsZFw2-MSeNU5cURBInhPlvnhVfOx1","selected":true,"focusable":true,"selectable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"d9ZXdU73jiCdeNHQv1_DH","sourceHandle":"x2","target":"o3XFXW2HHLBoxlbEnoWdZ","targetHandle":"w1","data":{"edgeStyle":"dashed"},"id":"reactflow__edge-Wpk4TvxcZOJgAoXjrOsZFx2-o3XFXW2HHLBoxlbEnoWdZw1","selected":true,"focusable":true,"selectable":true},{"style":{"strokeDasharray":"0","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"d9ZXdU73jiCdeNHQv1_DH","sourceHandle":"z2","target":"R3aRhqCslwhegMfHtxg5z","targetHandle":"y1","data":{"edgeStyle":"solid"},"id":"reactflow__edge-d9ZXdU73jiCdeNHQv1_DHz2-Wpk4TvxcZOJgAoXjrOsZFy1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"sourceHandle":"x2","target":"kJD1K2-ZkoezFCfpmOM0Z","targetHandle":"w1","data":{"edgeStyle":"dashed"},"id":"pQSbDAqEripuhCsgK5XMD","selected":true,"focusable":true,"selectable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"R3aRhqCslwhegMfHtxg5z","sourceHandle":"x2","target":"kJD1K2-ZkoezFCfpmOM0Z","targetHandle":"w1","data":{"edgeStyle":"dashed"},"id":"reactflow__edge-Wpk4TvxcZOJgAoXjrOsZFx2-kJD1K2-ZkoezFCfpmOM0Zw1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"IkPZel5zxXWIx90Qx7fZI","sourceHandle":"y2","target":"H22jAI2W5QLL-b1rq-c56","targetHandle":"z2","data":{"edgeStyle":"dashed"},"id":"reactflow__edge-mXCKtLUvwVJkHrpHzOecqy2-H22jAI2W5QLL-b1rq-c56z2","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"IkPZel5zxXWIx90Qx7fZI","sourceHandle":"y2","target":"boYX1QcJullypfX4sevdy","targetHandle":"z1","data":{"edgeStyle":"dashed"},"id":"reactflow__edge-mXCKtLUvwVJkHrpHzOecqy2-boYX1QcJullypfX4sevdyz1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"Wpk4TvxcZOJgAoXjrOsZF","sourceHandle":"w2","target":"zL4QEM5xZO8XWXXWrdPuj","targetHandle":"x1","data":{"edgeStyle":"dashed"},"id":"reactflow__edge-Wpk4TvxcZOJgAoXjrOsZFw2-zL4QEM5xZO8XWXXWrdPujx1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"R3aRhqCslwhegMfHtxg5z","sourceHandle":"z2","target":"Wpk4TvxcZOJgAoXjrOsZF","targetHandle":"y1","data":{"edgeStyle":"solid"},"id":"reactflow__edge-yvdfoly5WHHTq2Puss355z2-Wpk4TvxcZOJgAoXjrOsZFy1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"sourceHandle":"x2","target":"SP-d4YngpYXkeIB9SSD-K","targetHandle":"w1","data":{"edgeStyle":"dashed"},"id":"glDT_FnQTOOAyIAPLWFZW","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"Wpk4TvxcZOJgAoXjrOsZF","sourceHandle":"x2","target":"bEVCT5QGY3uw0kIfAELKh","targetHandle":"w1","data":{"edgeStyle":"dashed"},"id":"reactflow__edge-Wpk4TvxcZOJgAoXjrOsZFx2-bEVCT5QGY3uw0kIfAELKhw1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"Wpk4TvxcZOJgAoXjrOsZF","sourceHandle":"y2","target":"JE12g5cqnwmgeTle14Vxw","targetHandle":"w1","data":{"edgeStyle":"solid"},"selected":true,"id":"reactflow__edge-Wpk4TvxcZOJgAoXjrOsZFy2-yvdfoly5WHHTq2Puss355w1","selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"JE12g5cqnwmgeTle14Vxw","sourceHandle":"z2","target":"UQ8N7gcVpRLAYXgUNHBt5","targetHandle":"y1","data":{"edgeStyle":"dashed"},"id":"reactflow__edge-yvdfoly5WHHTq2Puss355z2-UQ8N7gcVpRLAYXgUNHBt5y1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"JE12g5cqnwmgeTle14Vxw","sourceHandle":"z2","target":"iNsXTtcIHsI_i-mCfjGYn","targetHandle":"y2","data":{"edgeStyle":"dashed"},"id":"reactflow__edge-yvdfoly5WHHTq2Puss355z2-iNsXTtcIHsI_i-mCfjGYny2","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"JE12g5cqnwmgeTle14Vxw","sourceHandle":"y2","target":"At5exN7ZAx2IzY3cTCzHm","targetHandle":"z2","data":{"edgeStyle":"solid"},"id":"reactflow__edge-JE12g5cqnwmgeTle14Vxwy2-At5exN7ZAx2IzY3cTCzHmz2","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"At5exN7ZAx2IzY3cTCzHm","sourceHandle":"x2","target":"yvdfoly5WHHTq2Puss355","targetHandle":"w1","data":{"edgeStyle":"solid"},"id":"reactflow__edge-At5exN7ZAx2IzY3cTCzHmx2-yvdfoly5WHHTq2Puss355w1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"yvdfoly5WHHTq2Puss355","sourceHandle":"y2","target":"vZxdswGLHCPi5GSuXEcHJ","targetHandle":"z1","data":{"edgeStyle":"dashed"},"id":"reactflow__edge-yvdfoly5WHHTq2Puss355y2-vZxdswGLHCPi5GSuXEcHJz1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"yvdfoly5WHHTq2Puss355","sourceHandle":"y2","target":"a-_iIE7UdoXzD00fD9MxN","targetHandle":"z1","data":{"edgeStyle":"dashed"},"id":"reactflow__edge-yvdfoly5WHHTq2Puss355y2-a-_iIE7UdoXzD00fD9MxNz1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"yvdfoly5WHHTq2Puss355","sourceHandle":"y2","target":"J0enF8UTVzY3H4n3pbPIF","targetHandle":"z1","data":{"edgeStyle":"dashed"},"id":"reactflow__edge-yvdfoly5WHHTq2Puss355y2-J0enF8UTVzY3H4n3pbPIFz1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"yvdfoly5WHHTq2Puss355","sourceHandle":"y2","target":"W4WwTmgZGnWmiYsB0ezml","targetHandle":"z1","data":{"edgeStyle":"dashed"},"id":"reactflow__edge-yvdfoly5WHHTq2Puss355y2-W4WwTmgZGnWmiYsB0ezmlz1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0.8 8","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"yvdfoly5WHHTq2Puss355","sourceHandle":"y2","target":"mXCKtLUvwVJkHrpHzOecq","targetHandle":"z1","data":{"edgeStyle":"dashed"},"id":"reactflow__edge-yvdfoly5WHHTq2Puss355y2-mXCKtLUvwVJkHrpHzOecqz1","selected":true,"selectable":true,"focusable":true},{"style":{"strokeDasharray":"0","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"yvdfoly5WHHTq2Puss355","sourceHandle":"z2","target":"jXtqI8k4Abz-vr01IcpWL","targetHandle":"w1","data":{"edgeStyle":"solid"},"id":"reactflow__edge-yvdfoly5WHHTq2Puss355z2-jXtqI8k4Abz-vr01IcpWLw1","selected":true,"type":"step","selectable":true,"focusable":true},{"style":{"strokeDasharray":"0","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"yvdfoly5WHHTq2Puss355","sourceHandle":"z2","target":"XzXLGjJr2F8Ln7gP0e5N8","targetHandle":"w2","data":{"edgeStyle":"solid"},"id":"reactflow__edge-yvdfoly5WHHTq2Puss355z2-XzXLGjJr2F8Ln7gP0e5N8w2","selected":true,"type":"step","focusable":true,"selectable":true},{"style":{"strokeDasharray":"0","strokeLinecap":"round","strokeWidth":3.5,"stroke":"#2b78e4"},"source":"MKVcPM2EzAr2_Ieyp9Fu3","sourceHandle":"y2","target":"iA0C1mFlM_73GcL9XNJmF","targetHandle":"z1","data":{"edgeStyle":"solid"},"selected":true,"selectable":true,"focusable":true,"id":"reactflow__edge-MKVcPM2EzAr2_Ieyp9Fu3y2-iA0C1mFlM_73GcL9XNJmFz1"}]} \ No newline at end of file +{ + "nodes": [ + { + "id": "SP-d4YngpYXkeIB9SSD-K", + "type": "section", + "position": { + "x": 240.93596412339082, + "y": 1861.570310981244 + }, + "selected": true, + "data": { + "label": "", + "style": { + "width": 150, + "height": 100, + "fontSize": 17, + "borderColor": "TRANSPARENt", + "backgroundColor": "TRANSPARENt" + }, + "oldId": "7s60T3OiXeo29-xN6fGjJ" + }, + "zIndex": -999, + "width": 202, + "height": 114, + "style": { + "width": 202, + "height": 114 + }, + "positionAbsolute": { + "x": 240.93596412339082, + "y": 1861.570310981244 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "XzXLGjJr2F8Ln7gP0e5N8", + "type": "paragraph", + "position": { + "x": -151.46804969796983, + "y": 2375.4716162213053 + }, + "selected": true, + "data": { + "label": "Continue Learning with following relevant tracks", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "borderColor": "#000000" + }, + "oldId": "jXtqI8k4Abz-vr01IcpWL" + }, + "zIndex": 999, + "width": 436, + "height": 118, + "positionAbsolute": { + "x": -151.46804969796983, + "y": 2375.4716162213053 + }, + "dragging": false, + "style": { + "width": 436, + "height": 118 + }, + "resizing": true, + "selectable": true, + "focusable": true + }, + { + "id": "zL4QEM5xZO8XWXXWrdPuj", + "type": "section", + "position": { + "x": 244.19846699906657, + "y": 1501.3654630729577 + }, + "selected": true, + "data": { + "label": "", + "style": { + "width": 150, + "height": 100, + "fontSize": 17, + "borderColor": "TRANSPARENt", + "backgroundColor": "TRANSPARENt" + } + }, + "zIndex": -999, + "width": 200, + "height": 217, + "style": { + "width": 200, + "height": 217 + }, + "positionAbsolute": { + "x": 244.19846699906657, + "y": 1501.3654630729577 + }, + "dragging": false, + "resizing": true, + "selectable": true, + "focusable": true + }, + { + "id": "o3XFXW2HHLBoxlbEnoWdZ", + "type": "section", + "position": { + "x": -592.469505701316, + "y": 1567.7437339754388 + }, + "selected": true, + "data": { + "label": "", + "style": { + "width": 150, + "height": 100, + "fontSize": 17, + "backgroundColor": "TRANSPARENt", + "borderColor": "TRANSPARENt" + } + }, + "zIndex": -999, + "width": 247, + "height": 381, + "style": { + "width": 247, + "height": 381 + }, + "positionAbsolute": { + "x": -592.469505701316, + "y": 1567.7437339754388 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "ludceg3fQVkilNTKWznti", + "type": "section", + "position": { + "x": -210.7109644352177, + "y": 1239.744561558562 + }, + "selected": true, + "data": { + "label": "", + "style": { + "width": 150, + "height": 100, + "fontSize": 17, + "backgroundColor": "TRANSPARENt", + "borderColor": "TRANSPARENt" + } + }, + "zIndex": -999, + "width": 252, + "height": 114, + "style": { + "width": 252, + "height": 114 + }, + "positionAbsolute": { + "x": -210.7109644352177, + "y": 1239.744561558562 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "RkPVaSF9XnX6uHUns_-oC", + "type": "section", + "position": { + "x": 228.3676576847514, + "y": 1267.1153073402706 + }, + "selected": true, + "data": { + "label": "", + "style": { + "width": 150, + "height": 100, + "fontSize": 17, + "borderColor": "TRANSPARENt" + } + }, + "zIndex": -999, + "width": 219, + "height": 235, + "style": { + "width": 219, + "height": 235 + }, + "positionAbsolute": { + "x": 228.3676576847514, + "y": 1267.1153073402706 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "cGWZQjKazJQ0D3nz_AdAX", + "type": "section", + "position": { + "x": -593.4010478029121, + "y": 982.3357132591475 + }, + "selected": true, + "data": { + "label": "", + "style": { + "width": 150, + "height": 100, + "fontSize": 17, + "borderColor": "TRANSPARENt", + "backgroundColor": "TRANSPARENt" + } + }, + "zIndex": -999, + "width": 230, + "height": 279, + "style": { + "width": 230, + "height": 279 + }, + "resizing": true, + "dragging": false, + "positionAbsolute": { + "x": -593.4010478029121, + "y": 982.3357132591475 + }, + "selectable": true, + "focusable": true + }, + { + "id": "iHtjFSkQWMoUNdltNttEd", + "type": "section", + "position": { + "x": 219.72110595703134, + "y": 644.8914213180542 + }, + "selected": true, + "data": { + "label": "", + "style": { + "width": 150, + "height": 100, + "fontSize": 17, + "backgroundColor": "TRANSPARENt", + "borderColor": "TRANSPARENt" + } + }, + "zIndex": -999, + "width": 268, + "height": 297, + "style": { + "width": 268, + "height": 297 + }, + "positionAbsolute": { + "x": 219.72110595703134, + "y": 644.8914213180542 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "junprE7dbMyeovApqhSgr", + "type": "section", + "position": { + "x": 219.22110595703134, + "y": 281.3914213180542 + }, + "selected": true, + "data": { + "label": "", + "style": { + "width": 150, + "height": 100, + "fontSize": 17, + "backgroundColor": "TRANSPARENt", + "borderColor": "TRANSPARENt" + } + }, + "zIndex": -999, + "width": 269, + "height": 228, + "style": { + "width": 269, + "height": 228 + }, + "positionAbsolute": { + "x": 219.22110595703134, + "y": 281.3914213180542 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "wTrcPqj0KpoeOvJf7k3iI", + "type": "section", + "position": { + "x": -206.8881872719935, + "y": 451.40074822234897 + }, + "selected": true, + "data": { + "label": "", + "style": { + "width": 150, + "height": 100, + "fontSize": 17, + "backgroundColor": "TRANSPARENt", + "borderColor": "TRANSPARENt" + } + }, + "zIndex": -999, + "width": 266, + "height": 234, + "style": { + "width": 266, + "height": 234 + }, + "positionAbsolute": { + "x": -206.8881872719935, + "y": 451.40074822234897 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "IzMY2P54llvbVixWxAl7H", + "type": "section", + "position": { + "x": -571.1381872719934, + "y": 123.90074822234897 + }, + "selected": true, + "data": { + "label": "", + "style": { + "width": 150, + "height": 100, + "fontSize": 17 + }, + "oldId": "wOyWgfUDwC3ORsLI8H5A0" + }, + "zIndex": -999, + "width": 232, + "height": 437, + "style": { + "width": 232, + "height": 437 + }, + "positionAbsolute": { + "x": -571.1381872719934, + "y": 123.90074822234897 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "AZoEY2N7PqAQgUl04E3KF", + "type": "title", + "position": { + "x": -178.6381872719934, + "y": -57.599251777651034 + }, + "selected": true, + "data": { + "label": "Building APIs", + "style": { + "fontSize": 28, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "EhPhMi4v4KT3vEUrInsxF" + }, + "zIndex": 999, + "width": 207, + "height": 68, + "dragging": false, + "positionAbsolute": { + "x": -178.6381872719934, + "y": -57.599251777651034 + }, + "selectable": true, + "focusable": true + }, + { + "id": "duKkpzPjUU_-8kyJGHqRX", + "type": "topic", + "position": { + "x": -198.1381872719934, + "y": 123.40074822234897 + }, + "selected": true, + "data": { + "label": "Learn the Basics", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "awdoiCHz7Yc3kYac_iy-a" + }, + "zIndex": 999, + "width": 246, + "height": 49, + "positionAbsolute": { + "x": -198.1381872719934, + "y": 123.40074822234897 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "style": { + "width": 246, + "height": 49 + }, + "resizing": false + }, + { + "id": "r8M3quACGO2piu0u_R4hO", + "type": "subtopic", + "position": { + "x": -570.1381872719934, + "y": 63.400748222348966 + }, + "selected": true, + "data": { + "label": "What are APIs", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "Wghrrm4Riz2t7F41H5GK-" + }, + "zIndex": 999, + "width": 232, + "height": 49, + "positionAbsolute": { + "x": -570.1381872719934, + "y": 63.400748222348966 + }, + "dragging": false, + "style": { + "width": 232, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "2HdKzAIQi15pr3YHHrbPp", + "type": "subtopic", + "position": { + "x": -571.1381872719934, + "y": 122.60000000000008 + }, + "selected": true, + "data": { + "label": "HTTP", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "mbDiNvkeYo9v3T_DN5uNl" + }, + "zIndex": 999, + "width": 232, + "height": 49, + "positionAbsolute": { + "x": -571.1381872719934, + "y": 122.60000000000008 + }, + "dragging": false, + "style": { + "width": 232, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "ACALE93mL4gnX5ThRIdRp", + "type": "subtopic", + "position": { + "x": -560.6381872719934, + "y": 183.90074822234897 + }, + "selected": true, + "data": { + "label": "HTTP Versions", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "p0C6D4Rt2y_U9atm7X_kt" + }, + "zIndex": 999, + "width": 210, + "height": 49, + "positionAbsolute": { + "x": -560.6381872719934, + "y": 183.90074822234897 + }, + "selectable": true, + "focusable": true, + "dragging": false, + "style": { + "width": 210, + "height": 49 + }, + "resizing": true + }, + { + "id": "rADHM-6NAxEjzmgiHefDX", + "type": "subtopic", + "position": { + "x": -560.6381872719934, + "y": 236.40074822234897 + }, + "selected": true, + "data": { + "label": "HTTP Methods", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "ZGD2Y4TgLOzn-mDEhZGXX" + }, + "zIndex": 999, + "width": 210, + "height": 49, + "positionAbsolute": { + "x": -560.6381872719934, + "y": 236.40074822234897 + }, + "selectable": true, + "focusable": true, + "dragging": false, + "style": { + "width": 210, + "height": 49 + } + }, + { + "id": "7szYyzLifKsepNU0c2KnN", + "type": "subtopic", + "position": { + "x": -560.6381872719934, + "y": 288.90074822234897 + }, + "selected": true, + "data": { + "label": "HTTP Status Codes", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "--pZRMVsKFEAhMIgDpGwC" + }, + "zIndex": 999, + "width": 210, + "height": 49, + "positionAbsolute": { + "x": -560.6381872719934, + "y": 288.90074822234897 + }, + "selectable": true, + "focusable": true, + "dragging": false, + "style": { + "width": 210, + "height": 49 + } + }, + { + "id": "rE-0yibRH6B2UBKp351cf", + "type": "subtopic", + "position": { + "x": -560.6381872719934, + "y": 341.40074822234897 + }, + "selected": true, + "data": { + "label": "HTTP Headers", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "3iwD_eyT4XZRQNIorTF3a" + }, + "zIndex": 999, + "width": 210, + "height": 49, + "positionAbsolute": { + "x": -560.6381872719934, + "y": 341.40074822234897 + }, + "selectable": true, + "focusable": true, + "dragging": false, + "style": { + "width": 210, + "height": 49 + } + }, + { + "id": "P-rGIk50Bg7nFmWieAW07", + "type": "subtopic", + "position": { + "x": 197.8618127280065, + "y": 52.100748222348955 + }, + "selected": true, + "data": { + "label": "URL, Query & Path Parameters", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "aBXHVaEfcChnyF4FPlqHp" + }, + "zIndex": 999, + "width": 283, + "height": 49, + "positionAbsolute": { + "x": 197.8618127280065, + "y": 52.100748222348955 + }, + "dragging": false, + "style": { + "width": 283, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "UFuX8wcxZQ7dvaQF_2Yp8", + "type": "subtopic", + "position": { + "x": -560.6381872719934, + "y": 393.90074822234897 + }, + "selected": true, + "data": { + "label": "Cookies", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "2tNyxd-8rFQoOsQIClP4O" + }, + "zIndex": 999, + "width": 210, + "height": 49, + "positionAbsolute": { + "x": -560.6381872719934, + "y": 393.90074822234897 + }, + "dragging": false, + "style": { + "width": 210, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "TX_hg7EobNJhmWKsMCaT1", + "type": "subtopic", + "position": { + "x": 197.8618127280065, + "y": 106.10074822234895 + }, + "selected": true, + "data": { + "label": "Content Negotiation", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "MKVcPM2EzAr2_Ieyp9Fu3" + }, + "zIndex": 999, + "width": 283, + "height": 49, + "positionAbsolute": { + "x": 197.8618127280065, + "y": 106.10074822234895 + }, + "dragging": false, + "style": { + "width": 283, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "GRlsBogOlOwuqhMMPyHN3", + "type": "subtopic", + "position": { + "x": -559.6381872719934, + "y": 446.40074822234897 + }, + "selected": true, + "data": { + "label": "CORS", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "KQAus72RGqx5f-3-YeJby" + }, + "zIndex": 999, + "width": 210, + "height": 49, + "positionAbsolute": { + "x": -559.6381872719934, + "y": 446.40074822234897 + }, + "dragging": false, + "style": { + "width": 210, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "KG3wO86F8Of27fU7QRcsn", + "type": "subtopic", + "position": { + "x": 197.8618127280065, + "y": 160.10074822234895 + }, + "selected": true, + "data": { + "label": "Understand TCP / IP", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "MKVcPM2EzAr2_Ieyp9Fu3" + }, + "zIndex": 999, + "width": 283, + "height": 49, + "positionAbsolute": { + "x": 197.8618127280065, + "y": 160.10074822234895 + }, + "dragging": false, + "style": { + "width": 283, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "v4nJYD9yiIEUviLPhVTCD", + "type": "subtopic", + "position": { + "x": 197.8618127280065, + "y": 214.10074822234895 + }, + "selected": true, + "data": { + "label": "Basics of DNS", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "5CxU3inGcSHp-TDg3BQiY" + }, + "zIndex": 999, + "width": 283, + "height": 49, + "positionAbsolute": { + "x": 197.8618127280065, + "y": 214.10074822234895 + }, + "dragging": false, + "style": { + "width": 283, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "o8i093VQv-T5Qf1yGqU0R", + "type": "topic", + "position": { + "x": -198.1381872719934, + "y": 330.40074822234897 + }, + "selected": true, + "data": { + "label": "Different API Styles", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "5R9yKfN1vItuv__HgCwP7" + }, + "zIndex": 999, + "width": 246, + "height": 49, + "positionAbsolute": { + "x": -198.1381872719934, + "y": 330.40074822234897 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "style": { + "width": 246, + "height": 49 + }, + "resizing": false + }, + { + "id": "BvwdASMvuNQ9DNgzdSZ4o", + "type": "subtopic", + "position": { + "x": -196.3881872719935, + "y": 453.90074822234897 + }, + "selected": true, + "data": { + "label": "RESTful APIs", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "MKVcPM2EzAr2_Ieyp9Fu3" + }, + "zIndex": 999, + "width": 245, + "height": 49, + "positionAbsolute": { + "x": -196.3881872719935, + "y": 453.90074822234897 + }, + "dragging": false, + "style": { + "width": 245, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "TVR-SkErlOHbDKLBGfxep", + "type": "subtopic", + "position": { + "x": -196.3881872719935, + "y": 507.90074822234897 + }, + "selected": true, + "data": { + "label": "Simple JSON APIs", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "MKVcPM2EzAr2_Ieyp9Fu3" + }, + "zIndex": 999, + "width": 245, + "height": 49, + "positionAbsolute": { + "x": -196.3881872719935, + "y": 507.90074822234897 + }, + "dragging": false, + "style": { + "width": 245, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "Wwd-0PjrtViMFWxRGaQey", + "type": "subtopic", + "position": { + "x": -196.3881872719935, + "y": 561.900748222349 + }, + "selected": true, + "data": { + "label": "SOAP APIs", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "MKVcPM2EzAr2_Ieyp9Fu3" + }, + "zIndex": 999, + "width": 245, + "height": 49, + "positionAbsolute": { + "x": -196.3881872719935, + "y": 561.900748222349 + }, + "dragging": false, + "style": { + "width": 245, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "MKVcPM2EzAr2_Ieyp9Fu3", + "type": "subtopic", + "position": { + "x": -196.3881872719935, + "y": 615.900748222349 + }, + "selected": true, + "data": { + "label": "GraphQL APIs", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "WVSgaWgGJKqJYumpdPTCG" + }, + "zIndex": 999, + "width": 245, + "height": 49, + "positionAbsolute": { + "x": -196.3881872719935, + "y": 615.900748222349 + }, + "dragging": false, + "style": { + "width": 245, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "iA0C1mFlM_73GcL9XNJmF", + "type": "button", + "position": { + "x": -576.1381872719934, + "y": 615.900748222349 + }, + "selected": true, + "data": { + "label": "Visit GraphQL Roadmap", + "href": "https://roadmap.sh/graphql", + "color": "#ffffff", + "backgroundColor": "#2a79e4", + "style": { + "fontSize": 17 + }, + "oldId": "MSeNU5cURBInhPlvnhVfO" + }, + "zIndex": 999, + "width": 244, + "height": 49, + "positionAbsolute": { + "x": -576.1381872719934, + "y": 615.900748222349 + }, + "dragging": false, + "style": { + "width": 244, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "awdoiCHz7Yc3kYac_iy-a", + "type": "topic", + "position": { + "x": 212.7618127280066, + "y": 548.400748222349 + }, + "selected": true, + "data": { + "label": "Building JSON / RESTful APIs", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "qHEzyDhqjQSa6vs5UDm_M" + }, + "zIndex": 999, + "width": 282, + "height": 49, + "positionAbsolute": { + "x": 212.7618127280066, + "y": 548.400748222349 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "style": { + "width": 282, + "height": 49 + }, + "resizing": false + }, + { + "id": "9WI_z34jIFXwoUQuChyRU", + "type": "subtopic", + "position": { + "x": 223.2618127280066, + "y": 290.40074822234897 + }, + "selected": true, + "data": { + "label": "REST Principles", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "5CxU3inGcSHp-TDg3BQiY" + }, + "zIndex": 999, + "width": 261, + "height": 49, + "positionAbsolute": { + "x": 223.2618127280066, + "y": 290.40074822234897 + }, + "dragging": false, + "style": { + "width": 261, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "b3qRTLwCC_9uDoPGrd9Bu", + "type": "subtopic", + "position": { + "x": 223.2618127280066, + "y": 344.40074822234897 + }, + "selected": true, + "data": { + "label": "URI Design", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "5CxU3inGcSHp-TDg3BQiY" + }, + "zIndex": 999, + "width": 261, + "height": 49, + "positionAbsolute": { + "x": 223.2618127280066, + "y": 344.40074822234897 + }, + "dragging": false, + "style": { + "width": 261, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "itILK2SXvLvAjk1Kul7EK", + "type": "subtopic", + "position": { + "x": 223.2618127280066, + "y": 398.40074822234897 + }, + "selected": true, + "data": { + "label": "Versioning Strategies", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "zXxEiM5HeOn7W-Vue0tQf" + }, + "zIndex": 999, + "width": 261, + "height": 49, + "positionAbsolute": { + "x": 223.2618127280066, + "y": 398.40074822234897 + }, + "dragging": false, + "style": { + "width": 261, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "pgJDzP3pJjhjr5wTRtPJO", + "type": "subtopic", + "position": { + "x": 223.2618127280066, + "y": 649.400748222349 + }, + "selected": true, + "data": { + "label": "Pagination", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "5CxU3inGcSHp-TDg3BQiY" + }, + "zIndex": 999, + "width": 261, + "height": 49, + "positionAbsolute": { + "x": 223.2618127280066, + "y": 649.400748222349 + }, + "dragging": false, + "style": { + "width": 261, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "O7wjldZ3yTA2s_F-UnJw_", + "type": "subtopic", + "position": { + "x": 223.2618127280066, + "y": 703.400748222349 + }, + "selected": true, + "data": { + "label": "Rate Limiting", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "5CxU3inGcSHp-TDg3BQiY" + }, + "zIndex": 999, + "width": 261, + "height": 49, + "positionAbsolute": { + "x": 223.2618127280066, + "y": 703.400748222349 + }, + "dragging": false, + "style": { + "width": 261, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "20KEgZH6cu_UokqWpV-9I", + "type": "subtopic", + "position": { + "x": 223.2618127280066, + "y": 757.400748222349 + }, + "selected": true, + "data": { + "label": "Idempotency", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "5CxU3inGcSHp-TDg3BQiY" + }, + "zIndex": 999, + "width": 261, + "height": 49, + "positionAbsolute": { + "x": 223.2618127280066, + "y": 757.400748222349 + }, + "dragging": false, + "style": { + "width": 261, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "LByD1vhzunhY1uY1YGZHP", + "type": "subtopic", + "position": { + "x": 223.2618127280066, + "y": 811.400748222349 + }, + "selected": true, + "data": { + "label": "HATEOAS", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "5CxU3inGcSHp-TDg3BQiY" + }, + "zIndex": 999, + "width": 261, + "height": 49, + "positionAbsolute": { + "x": 223.2618127280066, + "y": 811.400748222349 + }, + "dragging": false, + "style": { + "width": 261, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "zXxEiM5HeOn7W-Vue0tQf", + "type": "subtopic", + "position": { + "x": 223.2618127280066, + "y": 452.40074822234897 + }, + "selected": true, + "data": { + "label": "Handling CRUD Operations", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "5CxU3inGcSHp-TDg3BQiY" + }, + "zIndex": 999, + "width": 261, + "height": 49, + "positionAbsolute": { + "x": 223.2618127280066, + "y": 452.40074822234897 + }, + "dragging": false, + "style": { + "width": 261, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "8tELdagrOaGCf3nMVs8t3", + "type": "subtopic", + "position": { + "x": 223.2618127280066, + "y": 865.400748222349 + }, + "selected": true, + "data": { + "label": "Error Handling", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "5CxU3inGcSHp-TDg3BQiY" + }, + "zIndex": 999, + "width": 261, + "height": 49, + "positionAbsolute": { + "x": 223.2618127280066, + "y": 865.400748222349 + }, + "dragging": false, + "style": { + "width": 261, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "5CxU3inGcSHp-TDg3BQiY", + "type": "subtopic", + "position": { + "x": -165.6381872719934, + "y": 865.400748222349 + }, + "selected": true, + "data": { + "label": "RFC 7807 - Problem Details for APIs", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "MKVcPM2EzAr2_Ieyp9Fu3" + }, + "zIndex": 999, + "width": 326, + "height": 49, + "positionAbsolute": { + "x": -165.6381872719934, + "y": 865.400748222349 + }, + "dragging": false, + "style": { + "width": 326, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "eUsorPQ8VRLJs28J8dyk2", + "type": "paragraph", + "position": { + "x": -318.1381872719934, + "y": 728.9974788763272 + }, + "selected": true, + "data": { + "label": "API Authentication and Authorization", + "style": { + "fontSize": 20, + "justifyContent": "flex-start", + "textAlign": "left" + } + }, + "zIndex": 999, + "width": 366, + "height": 69, + "dragging": false, + "positionAbsolute": { + "x": -318.1381872719934, + "y": 728.9974788763272 + }, + "selectable": true, + "focusable": true, + "style": { + "width": 366, + "height": 69 + }, + "resizing": false + }, + { + "id": "qAolZHf_jp8hCdtqHZwC8", + "type": "subtopic", + "position": { + "x": -559.1381872719934, + "y": 498.90074822234897 + }, + "selected": true, + "data": { + "label": "HTTP Caching", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "KQAus72RGqx5f-3-YeJby" + }, + "zIndex": 999, + "width": 210, + "height": 49, + "positionAbsolute": { + "x": -559.1381872719934, + "y": 498.90074822234897 + }, + "dragging": false, + "style": { + "width": 210, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "cQnQ9v3mH27MGNwetz3JW", + "type": "topic", + "position": { + "x": -601.4010478029121, + "y": 859.6211541412258 + }, + "selected": true, + "data": { + "label": "Authentication Methods", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "5R9yKfN1vItuv__HgCwP7" + }, + "zIndex": 999, + "width": 246, + "height": 49, + "positionAbsolute": { + "x": -601.4010478029121, + "y": 859.6211541412258 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "style": { + "width": 246, + "height": 49 + }, + "resizing": false + }, + { + "id": "0FzHERK5AeYL5wv1FBJbH", + "type": "subtopic", + "position": { + "x": -583.4010478029121, + "y": 983.7533379465866 + }, + "selected": true, + "data": { + "label": "Basic Auth", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "dZTe_kxIUQsc9N3w920aR" + }, + "zIndex": 999, + "width": 210, + "height": 49, + "positionAbsolute": { + "x": -583.4010478029121, + "y": 983.7533379465866 + }, + "dragging": false, + "style": { + "width": 210, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "QTH7sy9uQZWl6ieBz7erY", + "type": "subtopic", + "position": { + "x": -583.4010478029121, + "y": 1037.7533379465865 + }, + "selected": true, + "data": { + "label": "Token Based Auth", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "KQAus72RGqx5f-3-YeJby" + }, + "zIndex": 999, + "width": 210, + "height": 49, + "positionAbsolute": { + "x": -583.4010478029121, + "y": 1037.7533379465865 + }, + "dragging": false, + "style": { + "width": 210, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "tWg68AHLIr1gIZA1za3jp", + "type": "subtopic", + "position": { + "x": -583.4010478029121, + "y": 1091.7533379465865 + }, + "selected": true, + "data": { + "label": "JWT ", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "KQAus72RGqx5f-3-YeJby" + }, + "zIndex": 999, + "width": 210, + "height": 49, + "positionAbsolute": { + "x": -583.4010478029121, + "y": 1091.7533379465865 + }, + "dragging": false, + "style": { + "width": 210, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "TLuNtQ6HKYQXmglyVk8-t", + "type": "subtopic", + "position": { + "x": -583.4010478029121, + "y": 1145.7533379465865 + }, + "selected": true, + "data": { + "label": "OAuth 2.0", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "KQAus72RGqx5f-3-YeJby" + }, + "zIndex": 999, + "width": 210, + "height": 49, + "positionAbsolute": { + "x": -583.4010478029121, + "y": 1145.7533379465865 + }, + "dragging": false, + "style": { + "width": 210, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "eQWoy4CpYP3TJL2bbhPB_", + "type": "subtopic", + "position": { + "x": -583.4010478029121, + "y": 1199.8443340956667 + }, + "selected": true, + "data": { + "label": "Session Based Auth", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "boYX1QcJullypfX4sevdy" + }, + "zIndex": 999, + "width": 210, + "height": 49, + "positionAbsolute": { + "x": -583.4010478029121, + "y": 1199.8443340956667 + }, + "dragging": false, + "style": { + "width": 210, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "nHbn8_sMY7J8o6ckbD-ER", + "type": "topic", + "position": { + "x": -210.6381872719934, + "y": 1033.5329320277096 + }, + "selected": true, + "data": { + "label": "Authorization Methods", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "5R9yKfN1vItuv__HgCwP7" + }, + "zIndex": 999, + "width": 246, + "height": 49, + "positionAbsolute": { + "x": -210.6381872719934, + "y": 1033.5329320277096 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "style": { + "width": 246, + "height": 49 + }, + "resizing": false + }, + { + "id": "wFsbmMi5Ey9UyDADdbdPW", + "type": "subtopic", + "position": { + "x": 165.00932230336673, + "y": 1004.0041963907498 + }, + "selected": true, + "data": { + "label": "Role Based Access Control (RBAC)", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "dZTe_kxIUQsc9N3w920aR" + }, + "zIndex": 999, + "width": 352, + "height": 49, + "positionAbsolute": { + "x": 165.00932230336673, + "y": 1004.0041963907498 + }, + "dragging": false, + "style": { + "width": 352, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "dZTe_kxIUQsc9N3w920aR", + "type": "subtopic", + "position": { + "x": 165.00932230336673, + "y": 1058.00419639075 + }, + "selected": true, + "data": { + "label": "Attribute Based Access Control (ABAC)", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "KQAus72RGqx5f-3-YeJby" + }, + "zIndex": 999, + "width": 351, + "height": 49, + "positionAbsolute": { + "x": 165.00932230336673, + "y": 1058.00419639075 + }, + "dragging": false, + "style": { + "width": 351, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "tzUJwXu_scwQHnPPT0oY-", + "type": "topic", + "position": { + "x": -210.6381872719934, + "y": 1146.5329320277096 + }, + "selected": true, + "data": { + "label": "API Keys & Management", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "Wpk4TvxcZOJgAoXjrOsZF" + }, + "zIndex": 999, + "width": 246, + "height": 49, + "positionAbsolute": { + "x": -210.6381872719934, + "y": 1146.5329320277096 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "style": { + "width": 246, + "height": 49 + }, + "resizing": false + }, + { + "id": "5R9yKfN1vItuv__HgCwP7", + "type": "topic", + "position": { + "x": 214.72110595703134, + "y": 1146.5329320277096 + }, + "selected": true, + "data": { + "label": "API Documentation Tools", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "awdoiCHz7Yc3kYac_iy-a" + }, + "zIndex": 999, + "width": 246, + "height": 49, + "positionAbsolute": { + "x": 214.72110595703134, + "y": 1146.5329320277096 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "style": { + "width": 246, + "height": 49 + }, + "resizing": false + }, + { + "id": "5RY7AlfRQydjxWK65Z4cv", + "type": "subtopic", + "position": { + "x": 232.85884761415554, + "y": 1270.9481617844106 + }, + "selected": true, + "data": { + "label": "Swagger / Open API", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "OpS2NX1lPTOtfjV1wKtC4" + }, + "zIndex": 999, + "width": 210, + "height": 49, + "positionAbsolute": { + "x": 232.85884761415554, + "y": 1270.9481617844106 + }, + "dragging": false, + "style": { + "width": 210, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "KQAus72RGqx5f-3-YeJby", + "type": "subtopic", + "position": { + "x": 232.85884761415554, + "y": 1427.5717249610107 + }, + "selected": true, + "data": { + "label": "Postman", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "CDLaORTdB5PWk7VbcU1bz" + }, + "zIndex": 999, + "width": 210, + "height": 49, + "positionAbsolute": { + "x": 232.85884761415554, + "y": 1427.5717249610107 + }, + "dragging": false, + "style": { + "width": 210, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "LxWHkhlikUaMT2G8YmVDQ", + "type": "subtopic", + "position": { + "x": 232.85884761415554, + "y": 1323.1560161766106 + }, + "selected": true, + "data": { + "label": "Readme.com", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "OpS2NX1lPTOtfjV1wKtC4" + }, + "zIndex": 999, + "width": 210, + "height": 49, + "positionAbsolute": { + "x": 232.85884761415554, + "y": 1323.1560161766106 + }, + "dragging": false, + "style": { + "width": 210, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "OpS2NX1lPTOtfjV1wKtC4", + "type": "subtopic", + "position": { + "x": 232.85884761415554, + "y": 1375.3638705688106 + }, + "selected": true, + "data": { + "label": "Stoplight", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "KQAus72RGqx5f-3-YeJby" + }, + "zIndex": 999, + "width": 210, + "height": 49, + "positionAbsolute": { + "x": 232.85884761415554, + "y": 1375.3638705688106 + }, + "dragging": false, + "style": { + "width": 210, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "qIJ6dUppjAjOTA8eQbp0n", + "type": "topic", + "position": { + "x": -207.7109644352177, + "y": 1398.532340911712 + }, + "selected": true, + "data": { + "label": "API Security", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "Wpk4TvxcZOJgAoXjrOsZF" + }, + "zIndex": 999, + "width": 246, + "height": 49, + "positionAbsolute": { + "x": -207.7109644352177, + "y": 1398.532340911712 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "style": { + "width": 246, + "height": 49 + }, + "resizing": false + }, + { + "id": "G70wvcOM1Isrx5ZBvS2xP", + "type": "subtopic", + "position": { + "x": -205.2109644352177, + "y": 1251.6104620579213 + }, + "selected": true, + "data": { + "label": "Common Vulnerabilities", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "q1yaf-RbHIQsOqfzjn4k4" + }, + "zIndex": 999, + "width": 241, + "height": 49, + "positionAbsolute": { + "x": -205.2109644352177, + "y": 1251.6104620579213 + }, + "dragging": false, + "style": { + "width": 241, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "q1yaf-RbHIQsOqfzjn4k4", + "type": "subtopic", + "position": { + "x": -205.2109644352177, + "y": 1303.8183164501213 + }, + "selected": true, + "data": { + "label": "Best Practices", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "KQAus72RGqx5f-3-YeJby" + }, + "zIndex": 999, + "width": 241, + "height": 49, + "positionAbsolute": { + "x": -205.2109644352177, + "y": 1303.8183164501213 + }, + "dragging": false, + "style": { + "width": 241, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "92-ebM0EwQ3nLjZKtvCZX", + "type": "button", + "position": { + "x": -612.1381872719934, + "y": 1303.8183164501213 + }, + "selected": true, + "data": { + "label": "API Security Best Practices", + "href": "", + "color": "#ffffff", + "backgroundColor": "#2a79e4", + "style": { + "fontSize": 17 + }, + "oldId": "MSeNU5cURBInhPlvnhVfO" + }, + "zIndex": 999, + "width": 290, + "height": 49, + "positionAbsolute": { + "x": -612.1381872719934, + "y": 1303.8183164501213 + }, + "dragging": false, + "style": { + "width": 290, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "d9ZXdU73jiCdeNHQv1_DH", + "type": "topic", + "position": { + "x": -590.469505701316, + "y": 1467.491632075372 + }, + "selected": true, + "data": { + "label": "API Performance", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "Wpk4TvxcZOJgAoXjrOsZF" + }, + "zIndex": 999, + "width": 246, + "height": 49, + "positionAbsolute": { + "x": -590.469505701316, + "y": 1467.491632075372 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "style": { + "width": 246, + "height": 49 + }, + "resizing": false + }, + { + "id": "nQpczZUcn-TvrfT80dv0Q", + "type": "subtopic", + "position": { + "x": -585.469505701316, + "y": 1568.4353183589587 + }, + "selected": true, + "data": { + "label": "Performance Metrics", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "boYX1QcJullypfX4sevdy" + }, + "zIndex": 999, + "width": 236, + "height": 49, + "positionAbsolute": { + "x": -585.469505701316, + "y": 1568.4353183589587 + }, + "dragging": false, + "style": { + "width": 236, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "PrvRCR4HCdGar0vcUbG_a", + "type": "subtopic", + "position": { + "x": -585.469505701316, + "y": 1619.7437339754388 + }, + "selected": true, + "data": { + "label": "Caching Strategies", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "boYX1QcJullypfX4sevdy" + }, + "zIndex": 999, + "width": 236, + "height": 49, + "positionAbsolute": { + "x": -585.469505701316, + "y": 1619.7437339754388 + }, + "dragging": false, + "style": { + "width": 236, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "p5wsniYnOS7cbHd92RxGk", + "type": "subtopic", + "position": { + "x": -585.469505701316, + "y": 1671.0521495919188 + }, + "selected": true, + "data": { + "label": "Load Balancing", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "boYX1QcJullypfX4sevdy" + }, + "zIndex": 999, + "width": 236, + "height": 49, + "positionAbsolute": { + "x": -585.469505701316, + "y": 1671.0521495919188 + }, + "dragging": false, + "style": { + "width": 236, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "tPVtRV818D8zAAuNbqPNa", + "type": "subtopic", + "position": { + "x": -585.469505701316, + "y": 1722.3605652083988 + }, + "selected": true, + "data": { + "label": "Rate Limiting / Throttling", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "boYX1QcJullypfX4sevdy" + }, + "zIndex": 999, + "width": 236, + "height": 49, + "positionAbsolute": { + "x": -585.469505701316, + "y": 1722.3605652083988 + }, + "dragging": false, + "style": { + "width": 236, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "-qdwBg7HvwlbLy3IKCRij", + "type": "subtopic", + "position": { + "x": -585.469505701316, + "y": 1773.6689808248789 + }, + "selected": true, + "data": { + "label": "Profiling and Monitoring", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "boYX1QcJullypfX4sevdy" + }, + "zIndex": 999, + "width": 236, + "height": 49, + "positionAbsolute": { + "x": -585.469505701316, + "y": 1773.6689808248789 + }, + "dragging": false, + "style": { + "width": 236, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "DQcAV59vr1-ZRnMfbLXpu", + "type": "subtopic", + "position": { + "x": -585.469505701316, + "y": 1824.977396441359 + }, + "selected": true, + "data": { + "label": "Performance Testing", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "XD1vDtrRQFbLyKJaD1AlA" + }, + "zIndex": 999, + "width": 236, + "height": 49, + "positionAbsolute": { + "x": -585.469505701316, + "y": 1824.977396441359 + }, + "dragging": false, + "style": { + "width": 236, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "MSeNU5cURBInhPlvnhVfO", + "type": "button", + "position": { + "x": -614.469505701316, + "y": 1367.532340911712 + }, + "selected": true, + "data": { + "label": "API Performance Best Practices", + "href": "", + "color": "#ffffff", + "backgroundColor": "#2a79e4", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 294, + "height": 49, + "positionAbsolute": { + "x": -614.469505701316, + "y": 1367.532340911712 + }, + "dragging": false, + "style": { + "width": 294, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "R3aRhqCslwhegMfHtxg5z", + "type": "topic", + "position": { + "x": -210.2109644352177, + "y": 1544.4353183589587 + }, + "selected": true, + "data": { + "label": "API Integration Patterns", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "yvdfoly5WHHTq2Puss355" + }, + "zIndex": 999, + "width": 246, + "height": 49, + "positionAbsolute": { + "x": -210.2109644352177, + "y": 1544.4353183589587 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "style": { + "width": 246, + "height": 49 + }, + "resizing": false + }, + { + "id": "kJD1K2-ZkoezFCfpmOM0Z", + "type": "section", + "position": { + "x": -255.7109644352177, + "y": 1661.7437339754388 + }, + "selected": true, + "data": { + "label": "", + "style": { + "width": 150, + "height": 100, + "fontSize": 17, + "backgroundColor": "TRANSPARENt", + "borderColor": "TRANSPARENt" + }, + "oldId": "o3XFXW2HHLBoxlbEnoWdZ" + }, + "zIndex": -999, + "width": 335, + "height": 370, + "style": { + "width": 335, + "height": 370 + }, + "positionAbsolute": { + "x": -255.7109644352177, + "y": 1661.7437339754388 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "--mmTKhG58_elbUqyn90G", + "type": "subtopic", + "position": { + "x": -250.7109644352177, + "y": 1662.4353183589587 + }, + "selected": true, + "data": { + "label": "Synchronous vs Asynchronous APIs", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "iNsXTtcIHsI_i-mCfjGYn" + }, + "zIndex": 999, + "width": 325, + "height": 49, + "positionAbsolute": { + "x": -250.7109644352177, + "y": 1662.4353183589587 + }, + "dragging": false, + "style": { + "width": 325, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "oMfOBkVsgiLvFLicOUdx6", + "type": "subtopic", + "position": { + "x": -250.7109644352177, + "y": 1713.7417878080591 + }, + "selected": true, + "data": { + "label": "Event Driven Architecture", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "PrvRCR4HCdGar0vcUbG_a" + }, + "zIndex": 999, + "width": 325, + "height": 49, + "positionAbsolute": { + "x": -250.7109644352177, + "y": 1713.7417878080591 + }, + "dragging": false, + "style": { + "width": 325, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "MJeUD4fOHaJu1oxk4uQ-x", + "type": "subtopic", + "position": { + "x": -250.7109644352177, + "y": 1765.752205777561 + }, + "selected": true, + "data": { + "label": "API Gateways", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "p5wsniYnOS7cbHd92RxGk" + }, + "zIndex": 999, + "width": 325, + "height": 49, + "positionAbsolute": { + "x": -250.7109644352177, + "y": 1765.752205777561 + }, + "dragging": false, + "style": { + "width": 325, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "PPeBbooE121zrgNwpVTiA", + "type": "subtopic", + "position": { + "x": -250.7109644352177, + "y": 1817.410649486862 + }, + "selected": true, + "data": { + "label": "Microservices Architecture", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "-qdwBg7HvwlbLy3IKCRij" + }, + "zIndex": 999, + "width": 325, + "height": 49, + "positionAbsolute": { + "x": -250.7109644352177, + "y": 1817.410649486862 + }, + "dragging": false, + "style": { + "width": 325, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "IkPZel5zxXWIx90Qx7fZI", + "type": "subtopic", + "position": { + "x": -250.7109644352177, + "y": 1972.3859806147652 + }, + "selected": true, + "data": { + "label": "Messaging Queues", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "mXCKtLUvwVJkHrpHzOecq" + }, + "zIndex": 999, + "width": 325, + "height": 49, + "positionAbsolute": { + "x": -250.7109644352177, + "y": 1972.3859806147652 + }, + "dragging": false, + "style": { + "width": 325, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "75NVxS0iwoQXxOHCkWQxH", + "type": "subtopic", + "position": { + "x": -250.7109644352177, + "y": 1869.069093196163 + }, + "selected": true, + "data": { + "label": "Webhooks vs Polling", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "X68HXAAV-nKo-V4Fu1o72" + }, + "zIndex": 999, + "width": 325, + "height": 49, + "positionAbsolute": { + "x": -250.7109644352177, + "y": 1869.069093196163 + }, + "dragging": false, + "style": { + "width": 325, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "X68HXAAV-nKo-V4Fu1o72", + "type": "subtopic", + "position": { + "x": -250.7109644352177, + "y": 1920.7275369054641 + }, + "selected": true, + "data": { + "label": "Batch Processing", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "boYX1QcJullypfX4sevdy" + }, + "zIndex": 999, + "width": 325, + "height": 49, + "positionAbsolute": { + "x": -250.7109644352177, + "y": 1920.7275369054641 + }, + "dragging": false, + "style": { + "width": 325, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "H22jAI2W5QLL-b1rq-c56", + "type": "subtopic", + "position": { + "x": -497.66906836651873, + "y": 1941.8678842718575 + }, + "selected": true, + "data": { + "label": "Rabbit MQ", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "boYX1QcJullypfX4sevdy" + }, + "zIndex": 999, + "width": 145, + "height": 49, + "positionAbsolute": { + "x": -497.66906836651873, + "y": 1941.8678842718575 + }, + "dragging": false, + "style": { + "width": 145, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "boYX1QcJullypfX4sevdy", + "type": "subtopic", + "position": { + "x": -499.16906836651884, + "y": 1996.867884271857 + }, + "selected": true, + "data": { + "label": "Kafka", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "q1yaf-RbHIQsOqfzjn4k4" + }, + "zIndex": 999, + "width": 148, + "height": 49, + "positionAbsolute": { + "x": -499.16906836651884, + "y": 1996.867884271857 + }, + "dragging": false, + "style": { + "width": 148, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "Wpk4TvxcZOJgAoXjrOsZF", + "type": "topic", + "position": { + "x": 221.19846699906657, + "y": 1758.058993623857 + }, + "selected": true, + "data": { + "label": "API Testing", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "5R9yKfN1vItuv__HgCwP7" + }, + "zIndex": 999, + "width": 246, + "height": 49, + "positionAbsolute": { + "x": 221.19846699906657, + "y": 1758.058993623857 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "style": { + "width": 246, + "height": 49 + }, + "resizing": false + }, + { + "id": "JvmW78cDm84GNhq8VEYZp", + "type": "subtopic", + "position": { + "x": 247.69846699906657, + "y": 1505.4070461854096 + }, + "selected": true, + "data": { + "label": "Unit Testing", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "iNsXTtcIHsI_i-mCfjGYn" + }, + "zIndex": 999, + "width": 193, + "height": 49, + "positionAbsolute": { + "x": 247.69846699906657, + "y": 1505.4070461854096 + }, + "dragging": false, + "style": { + "width": 193, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "qZELS5vw2feS7QfyD7spX", + "type": "subtopic", + "position": { + "x": 247.69846699906657, + "y": 1559.4070461854096 + }, + "selected": true, + "data": { + "label": "Integration Testing", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "iNsXTtcIHsI_i-mCfjGYn" + }, + "zIndex": 999, + "width": 193, + "height": 49, + "positionAbsolute": { + "x": 247.69846699906657, + "y": 1559.4070461854096 + }, + "dragging": false, + "style": { + "width": 193, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "6lm3wy9WTAERTqXCn6pFt", + "type": "subtopic", + "position": { + "x": 247.69846699906657, + "y": 1613.4070461854096 + }, + "selected": true, + "data": { + "label": "Functional Testing", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "iNsXTtcIHsI_i-mCfjGYn" + }, + "zIndex": 999, + "width": 193, + "height": 49, + "positionAbsolute": { + "x": 247.69846699906657, + "y": 1613.4070461854096 + }, + "dragging": false, + "style": { + "width": 193, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "7JNEx_cbqnAx3esvwZMOd", + "type": "subtopic", + "position": { + "x": 247.69846699906657, + "y": 1667.4070461854096 + }, + "selected": true, + "data": { + "label": "Load Testing", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "iNsXTtcIHsI_i-mCfjGYn" + }, + "zIndex": 999, + "width": 193, + "height": 49, + "positionAbsolute": { + "x": 247.69846699906657, + "y": 1667.4070461854096 + }, + "dragging": false, + "style": { + "width": 193, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "bEVCT5QGY3uw0kIfAELKh", + "type": "subtopic", + "position": { + "x": 248.4735203536439, + "y": 1861.446054725657 + }, + "selected": true, + "data": { + "label": "Mocking APIs", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "iNsXTtcIHsI_i-mCfjGYn" + }, + "zIndex": 999, + "width": 193, + "height": 49, + "positionAbsolute": { + "x": 248.4735203536439, + "y": 1861.446054725657 + }, + "dragging": false, + "style": { + "width": 193, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "NqeBglhzukVMMEF9p2CXc", + "type": "subtopic", + "position": { + "x": 248.4735203536439, + "y": 1915.446054725657 + }, + "selected": true, + "data": { + "label": "Contract Testing", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "iNsXTtcIHsI_i-mCfjGYn" + }, + "zIndex": 999, + "width": 193, + "height": 49, + "positionAbsolute": { + "x": 248.4735203536439, + "y": 1915.446054725657 + }, + "dragging": false, + "style": { + "width": 193, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "XD1vDtrRQFbLyKJaD1AlA", + "type": "subtopic", + "position": { + "x": -585.469505701316, + "y": 1876.285812057839 + }, + "selected": true, + "data": { + "label": "Error Handling / Retries", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "boYX1QcJullypfX4sevdy" + }, + "zIndex": 999, + "width": 236, + "height": 49, + "positionAbsolute": { + "x": -585.469505701316, + "y": 1876.285812057839 + }, + "dragging": false, + "style": { + "width": 236, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "JE12g5cqnwmgeTle14Vxw", + "type": "topic", + "position": { + "x": 35.36181272800661, + "y": 2095.4915595367556 + }, + "selected": true, + "data": { + "label": "Real-time APIs", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "At5exN7ZAx2IzY3cTCzHm" + }, + "zIndex": 999, + "width": 170, + "height": 49, + "positionAbsolute": { + "x": 35.36181272800661, + "y": 2095.4915595367556 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "style": { + "width": 170, + "height": 49 + }, + "resizing": false + }, + { + "id": "UQ8N7gcVpRLAYXgUNHBt5", + "type": "subtopic", + "position": { + "x": 267.72110595703134, + "y": 2069.2728071916526 + }, + "selected": true, + "data": { + "label": "Web Sockets", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "iNsXTtcIHsI_i-mCfjGYn" + }, + "zIndex": 999, + "width": 193, + "height": 49, + "positionAbsolute": { + "x": 267.72110595703134, + "y": 2069.2728071916526 + }, + "dragging": false, + "style": { + "width": 193, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "iNsXTtcIHsI_i-mCfjGYn", + "type": "subtopic", + "position": { + "x": 267.72110595703134, + "y": 2123.2728071916526 + }, + "selected": true, + "data": { + "label": "Server Sent Events", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "nQpczZUcn-TvrfT80dv0Q" + }, + "zIndex": 999, + "width": 193, + "height": 49, + "positionAbsolute": { + "x": 267.72110595703134, + "y": 2123.2728071916526 + }, + "dragging": false, + "style": { + "width": 193, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "yvdfoly5WHHTq2Puss355", + "type": "topic", + "position": { + "x": -363.31358688509135, + "y": 2210.5425435400516 + }, + "selected": true, + "data": { + "label": "Standards and Compliance", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "Wpk4TvxcZOJgAoXjrOsZF" + }, + "zIndex": 999, + "width": 271, + "height": 49, + "positionAbsolute": { + "x": -363.31358688509135, + "y": 2210.5425435400516 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "style": { + "width": 271, + "height": 49 + }, + "resizing": false + }, + { + "id": "vZxdswGLHCPi5GSuXEcHJ", + "type": "subtopic", + "position": { + "x": -570.6112846237921, + "y": 2102.642324872653 + }, + "selected": true, + "data": { + "label": "GDPR", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "mXCKtLUvwVJkHrpHzOecq" + }, + "zIndex": 999, + "width": 123, + "height": 49, + "positionAbsolute": { + "x": -570.6112846237921, + "y": 2102.642324872653 + }, + "dragging": false, + "style": { + "width": 123, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "At5exN7ZAx2IzY3cTCzHm", + "type": "topic", + "position": { + "x": -361.55504561899306, + "y": 2095.4915595367556 + }, + "selected": true, + "data": { + "label": "API Lifecycle Management", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "yvdfoly5WHHTq2Puss355" + }, + "zIndex": 999, + "width": 267, + "height": 49, + "positionAbsolute": { + "x": -361.55504561899306, + "y": 2095.4915595367556 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "style": { + "width": 267, + "height": 49 + }, + "resizing": false + }, + { + "id": "a-_iIE7UdoXzD00fD9MxN", + "type": "subtopic", + "position": { + "x": -570.6112846237921, + "y": 2156.642324872653 + }, + "selected": true, + "data": { + "label": "CCPA", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "mXCKtLUvwVJkHrpHzOecq" + }, + "zIndex": 999, + "width": 123, + "height": 49, + "positionAbsolute": { + "x": -570.6112846237921, + "y": 2156.642324872653 + }, + "dragging": false, + "style": { + "width": 123, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "J0enF8UTVzY3H4n3pbPIF", + "type": "subtopic", + "position": { + "x": -570.6112846237921, + "y": 2210.642324872653 + }, + "selected": true, + "data": { + "label": "PCI DSS", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "mXCKtLUvwVJkHrpHzOecq" + }, + "zIndex": 999, + "width": 123, + "height": 49, + "positionAbsolute": { + "x": -570.6112846237921, + "y": 2210.642324872653 + }, + "dragging": false, + "style": { + "width": 123, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "W4WwTmgZGnWmiYsB0ezml", + "type": "subtopic", + "position": { + "x": -568.8897926825906, + "y": 2264.642324872653 + }, + "selected": true, + "data": { + "label": "HIPAA", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "mXCKtLUvwVJkHrpHzOecq" + }, + "zIndex": 999, + "width": 123, + "height": 49, + "positionAbsolute": { + "x": -568.8897926825906, + "y": 2264.642324872653 + }, + "dragging": false, + "style": { + "width": 123, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "mXCKtLUvwVJkHrpHzOecq", + "type": "subtopic", + "position": { + "x": -570.6112846237921, + "y": 2318.642324872653 + }, + "selected": true, + "data": { + "label": "PII", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "X68HXAAV-nKo-V4Fu1o72" + }, + "zIndex": 999, + "width": 123, + "height": 49, + "positionAbsolute": { + "x": -570.6112846237921, + "y": 2318.642324872653 + }, + "dragging": false, + "style": { + "width": 123, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "ETSZIZbfsiSgwpAS6HgGp", + "type": "vertical", + "position": { + "x": -85.13818727199339, + "y": -164.08481519539623 + }, + "selected": true, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 20, + "height": 94, + "positionAbsolute": { + "x": -85.13818727199339, + "y": -164.08481519539623 + }, + "dragging": false, + "style": { + "width": 20, + "height": 94 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "PstbOGqR_4C2WWV8CWXes", + "type": "linksgroup", + "position": { + "x": -599.3135868850914, + "y": -176.03181769055132 + }, + "selected": true, + "data": { + "label": "Related Roadmaps", + "links": [ + { + "id": "3uv48fdglShh8YYF3zRWv", + "label": "Backend Roadmap", + "href": "", + "url": "https://roadmap.sh/backend" + }, + { + "id": "ZW1PEheVeJJiIPR08jfCr", + "label": "DevOps Roadmap", + "url": "https://roadmap.sh/devops" + }, + { + "id": "td_Z-sAuf092awd8U-VNG", + "label": "Full Stack Roadmap", + "url": "https://roadmap.sh/full-stack" + } + ] + }, + "zIndex": 999, + "width": 303, + "height": 163, + "positionAbsolute": { + "x": -599.3135868850914, + "y": -176.03181769055132 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "style": { + "width": 303, + "height": 163 + }, + "resizing": false + }, + { + "id": "yHmHXymPNWwu8p1vvqD3o", + "type": "paragraph", + "position": { + "x": 158.23571626420664, + "y": -175.8282364125966 + }, + "selected": true, + "data": { + "label": "Find the detailed version of this roadmap along with other similar roadmaps", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "left", + "borderColor": "#000000" + } + }, + "zIndex": 999, + "width": 354, + "height": 143, + "positionAbsolute": { + "x": 158.23571626420664, + "y": -175.8282364125966 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "style": { + "width": 354, + "height": 143 + }, + "resizing": false + }, + { + "id": "2zqZkyVgigifcRS1H7F_b", + "type": "button", + "position": { + "x": 171.43909067700685, + "y": -93.84267299485134 + }, + "selected": true, + "data": { + "label": "roadmap.sh", + "href": "https://roadmap.sh", + "color": "#ffffff", + "backgroundColor": "#2a79e4", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 329, + "height": 49, + "dragging": false, + "style": { + "width": 329, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": 171.43909067700685, + "y": -93.84267299485134 + }, + "selectable": true, + "focusable": true + }, + { + "id": "4fauwiq2CJnzDA7Z9Pmeo", + "type": "button", + "position": { + "x": -139.18102870413122, + "y": 2429.279985574316 + }, + "selected": true, + "data": { + "label": "Backend Roadmap", + "href": "https://roadmap.sh/backend", + "color": "#ffffff", + "backgroundColor": "#2a79e4", + "style": { + "fontSize": 17 + }, + "oldId": "eYziHRN-gsg9qr8Yddu2K" + }, + "zIndex": 999, + "width": 196, + "height": 49, + "positionAbsolute": { + "x": -139.18102870413122, + "y": 2429.279985574316 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "style": { + "width": 196, + "height": 49 + }, + "resizing": false + }, + { + "id": "eYziHRN-gsg9qr8Yddu2K", + "type": "button", + "position": { + "x": 68.81897129586875, + "y": 2429.279985574316 + }, + "selected": true, + "data": { + "label": "DevOps Roadmap", + "href": "https://roadmap.sh/devops", + "color": "#ffffff", + "backgroundColor": "#2a79e4", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 196, + "height": 49, + "positionAbsolute": { + "x": 68.81897129586875, + "y": 2429.279985574316 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "style": { + "width": 196, + "height": 49 + }, + "resizing": false + }, + { + "id": "cV_O7RiFmpoI4f1o8lF4B", + "type": "vertical", + "position": { + "x": 56.53195030203017, + "y": 2493.4716162213053 + }, + "selected": true, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 20, + "height": 94, + "positionAbsolute": { + "x": 56.53195030203017, + "y": 2493.4716162213053 + }, + "dragging": false, + "style": { + "width": 20, + "height": 94 + }, + "resizing": false, + "focusable": true, + "selectable": true + } + ], + "edges": [ + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "x2", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "JOhjYmVo9geZEMeeRPidh", + "selected": true, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "z2", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "89g6rzK2JcZhJ1MAQra8R", + "selected": true, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "z2", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "xMpMq9rxn_DYslWm3_Efz", + "selected": true, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "z2", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "-EP79fa9WRfTgvuq5FRaw", + "selected": true, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "z2", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "1Qdcf_-7xas-XQldfLRjv", + "selected": true, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "x2", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "id": "CfFazuChYdU7GaJO_TolE", + "selected": true, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "z2", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "74bGlBMuedspLPHnGV2LW", + "selected": true, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "z2", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "XU7kv1zNr-yC063oqWlz2", + "selected": true, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "x2", + "targetHandle": "w2", + "data": { + "edgeStyle": "dashed" + }, + "id": "swvSmJ6SyUFxK9fHwPJTF", + "selected": true, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "w2", + "targetHandle": "x1", + "data": { + "edgeStyle": "dashed" + }, + "id": "-URcDxULzdZbiMbEx8bBe", + "selected": true, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "y2", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "selected": true, + "id": "_k4274GmDVM-MViCSYN6K", + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "y2", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "Tf3d_J21EhC-bcfpqV_o5", + "selected": true, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "y2", + "targetHandle": "z2", + "data": { + "edgeStyle": "dashed" + }, + "id": "gRouAKXdfT8XQV_nzA-wA", + "selected": true, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "x2", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "BgmVdQyd7i1SrZj0forT9", + "selected": true, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "AZoEY2N7PqAQgUl04E3KF", + "sourceHandle": "x2", + "target": "duKkpzPjUU_-8kyJGHqRX", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "1a_QvZPscaIyRxhKH7p-K", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "duKkpzPjUU_-8kyJGHqRX", + "sourceHandle": "y2", + "target": "r8M3quACGO2piu0u_R4hO", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "cWesUDXpvCzBEu5BpXefC", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "duKkpzPjUU_-8kyJGHqRX", + "sourceHandle": "y2", + "target": "2HdKzAIQi15pr3YHHrbPp", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "CVsFgRPHi9vaQWTqSrbFF", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "duKkpzPjUU_-8kyJGHqRX", + "sourceHandle": "z2", + "target": "P-rGIk50Bg7nFmWieAW07", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "AWgpOpfFNBRrSi_K8RPQg", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "duKkpzPjUU_-8kyJGHqRX", + "sourceHandle": "z2", + "target": "TX_hg7EobNJhmWKsMCaT1", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "uJadhS5nJBYewb-YSy7zE", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "GRlsBogOlOwuqhMMPyHN3", + "sourceHandle": "z2", + "target": "GRlsBogOlOwuqhMMPyHN3", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-KQAus72RGqx5f-3-YeJbyz2-KQAus72RGqx5f-3-YeJbyz1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "duKkpzPjUU_-8kyJGHqRX", + "sourceHandle": "z2", + "target": "KG3wO86F8Of27fU7QRcsn", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-awdoiCHz7Yc3kYac_iy-az2-KG3wO86F8Of27fU7QRcsny2", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "duKkpzPjUU_-8kyJGHqRX", + "sourceHandle": "z2", + "target": "v4nJYD9yiIEUviLPhVTCD", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-awdoiCHz7Yc3kYac_iy-az2-MKVcPM2EzAr2_Ieyp9Fu3y1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "duKkpzPjUU_-8kyJGHqRX", + "sourceHandle": "x2", + "target": "o8i093VQv-T5Qf1yGqU0R", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-duKkpzPjUU_-8kyJGHqRXx2-awdoiCHz7Yc3kYac_iy-aw1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "o8i093VQv-T5Qf1yGqU0R", + "sourceHandle": "x2", + "target": "wTrcPqj0KpoeOvJf7k3iI", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-awdoiCHz7Yc3kYac_iy-ax2-wTrcPqj0KpoeOvJf7k3iIw1", + "selected": true, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "o8i093VQv-T5Qf1yGqU0R", + "sourceHandle": "z2", + "target": "awdoiCHz7Yc3kYac_iy-a", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "selected": true, + "selectable": true, + "focusable": true, + "id": "reactflow__edge-5R9yKfN1vItuv__HgCwP7z2-awdoiCHz7Yc3kYac_iy-ay1" + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "awdoiCHz7Yc3kYac_iy-a", + "sourceHandle": "w2", + "target": "junprE7dbMyeovApqhSgr", + "targetHandle": "x1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-awdoiCHz7Yc3kYac_iy-aw2-junprE7dbMyeovApqhSgrx1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "awdoiCHz7Yc3kYac_iy-a", + "sourceHandle": "x2", + "target": "iHtjFSkQWMoUNdltNttEd", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-awdoiCHz7Yc3kYac_iy-ax2-iHtjFSkQWMoUNdltNttEdw1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "8tELdagrOaGCf3nMVs8t3", + "sourceHandle": "y2", + "target": "5CxU3inGcSHp-TDg3BQiY", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-8tELdagrOaGCf3nMVs8t3y2-5CxU3inGcSHp-TDg3BQiYz1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "awdoiCHz7Yc3kYac_iy-a", + "sourceHandle": "y2", + "target": "eUsorPQ8VRLJs28J8dyk2", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-awdoiCHz7Yc3kYac_iy-ay2-eUsorPQ8VRLJs28J8dyk2z1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "eUsorPQ8VRLJs28J8dyk2", + "sourceHandle": "y2", + "target": "cQnQ9v3mH27MGNwetz3JW", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-eUsorPQ8VRLJs28J8dyk2y2-5R9yKfN1vItuv__HgCwP7w1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "cQnQ9v3mH27MGNwetz3JW", + "sourceHandle": "x2", + "target": "cGWZQjKazJQ0D3nz_AdAX", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-5R9yKfN1vItuv__HgCwP7x2-cGWZQjKazJQ0D3nz_AdAXw1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "cQnQ9v3mH27MGNwetz3JW", + "sourceHandle": "z2", + "target": "nHbn8_sMY7J8o6ckbD-ER", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "selected": true, + "id": "reactflow__edge-cQnQ9v3mH27MGNwetz3JWz2-5R9yKfN1vItuv__HgCwP7y1", + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "nHbn8_sMY7J8o6ckbD-ER", + "sourceHandle": "z2", + "target": "wFsbmMi5Ey9UyDADdbdPW", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-5R9yKfN1vItuv__HgCwP7z2-wFsbmMi5Ey9UyDADdbdPWy1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "nHbn8_sMY7J8o6ckbD-ER", + "sourceHandle": "z2", + "target": "dZTe_kxIUQsc9N3w920aR", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-5R9yKfN1vItuv__HgCwP7z2-dZTe_kxIUQsc9N3w920aRy1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "nHbn8_sMY7J8o6ckbD-ER", + "sourceHandle": "x2", + "target": "tzUJwXu_scwQHnPPT0oY-", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-nHbn8_sMY7J8o6ckbD-ERx2-5R9yKfN1vItuv__HgCwP7w1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "tzUJwXu_scwQHnPPT0oY-", + "sourceHandle": "z2", + "target": "5R9yKfN1vItuv__HgCwP7", + "targetHandle": "y2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-Wpk4TvxcZOJgAoXjrOsZFz2-5R9yKfN1vItuv__HgCwP7y2", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "5R9yKfN1vItuv__HgCwP7", + "sourceHandle": "x2", + "target": "RkPVaSF9XnX6uHUns_-oC", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-5R9yKfN1vItuv__HgCwP7x2-RkPVaSF9XnX6uHUns_-oCw1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "5R9yKfN1vItuv__HgCwP7", + "sourceHandle": "y2", + "target": "qIJ6dUppjAjOTA8eQbp0n", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-5R9yKfN1vItuv__HgCwP7y2-Wpk4TvxcZOJgAoXjrOsZFz1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "qIJ6dUppjAjOTA8eQbp0n", + "sourceHandle": "w2", + "target": "ludceg3fQVkilNTKWznti", + "targetHandle": "x1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-Wpk4TvxcZOJgAoXjrOsZFw2-ludceg3fQVkilNTKWzntix1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "q1yaf-RbHIQsOqfzjn4k4", + "sourceHandle": "y2", + "target": "92-ebM0EwQ3nLjZKtvCZX", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-q1yaf-RbHIQsOqfzjn4k4y2-MSeNU5cURBInhPlvnhVfOz1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "qIJ6dUppjAjOTA8eQbp0n", + "sourceHandle": "y2", + "target": "d9ZXdU73jiCdeNHQv1_DH", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "selected": true, + "selectable": true, + "focusable": true, + "id": "reactflow__edge-qIJ6dUppjAjOTA8eQbp0ny2-Wpk4TvxcZOJgAoXjrOsZFz1" + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "d9ZXdU73jiCdeNHQv1_DH", + "sourceHandle": "w2", + "target": "MSeNU5cURBInhPlvnhVfO", + "targetHandle": "x1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-Wpk4TvxcZOJgAoXjrOsZFw2-MSeNU5cURBInhPlvnhVfOx1", + "selected": true, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "d9ZXdU73jiCdeNHQv1_DH", + "sourceHandle": "x2", + "target": "o3XFXW2HHLBoxlbEnoWdZ", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-Wpk4TvxcZOJgAoXjrOsZFx2-o3XFXW2HHLBoxlbEnoWdZw1", + "selected": true, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "d9ZXdU73jiCdeNHQv1_DH", + "sourceHandle": "z2", + "target": "R3aRhqCslwhegMfHtxg5z", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-d9ZXdU73jiCdeNHQv1_DHz2-Wpk4TvxcZOJgAoXjrOsZFy1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "x2", + "target": "kJD1K2-ZkoezFCfpmOM0Z", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "pQSbDAqEripuhCsgK5XMD", + "selected": true, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "R3aRhqCslwhegMfHtxg5z", + "sourceHandle": "x2", + "target": "kJD1K2-ZkoezFCfpmOM0Z", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-Wpk4TvxcZOJgAoXjrOsZFx2-kJD1K2-ZkoezFCfpmOM0Zw1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "IkPZel5zxXWIx90Qx7fZI", + "sourceHandle": "y2", + "target": "H22jAI2W5QLL-b1rq-c56", + "targetHandle": "z2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-mXCKtLUvwVJkHrpHzOecqy2-H22jAI2W5QLL-b1rq-c56z2", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "IkPZel5zxXWIx90Qx7fZI", + "sourceHandle": "y2", + "target": "boYX1QcJullypfX4sevdy", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-mXCKtLUvwVJkHrpHzOecqy2-boYX1QcJullypfX4sevdyz1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "Wpk4TvxcZOJgAoXjrOsZF", + "sourceHandle": "w2", + "target": "zL4QEM5xZO8XWXXWrdPuj", + "targetHandle": "x1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-Wpk4TvxcZOJgAoXjrOsZFw2-zL4QEM5xZO8XWXXWrdPujx1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "R3aRhqCslwhegMfHtxg5z", + "sourceHandle": "z2", + "target": "Wpk4TvxcZOJgAoXjrOsZF", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-yvdfoly5WHHTq2Puss355z2-Wpk4TvxcZOJgAoXjrOsZFy1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "x2", + "target": "SP-d4YngpYXkeIB9SSD-K", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "glDT_FnQTOOAyIAPLWFZW", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "Wpk4TvxcZOJgAoXjrOsZF", + "sourceHandle": "x2", + "target": "bEVCT5QGY3uw0kIfAELKh", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-Wpk4TvxcZOJgAoXjrOsZFx2-bEVCT5QGY3uw0kIfAELKhw1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "Wpk4TvxcZOJgAoXjrOsZF", + "sourceHandle": "y2", + "target": "JE12g5cqnwmgeTle14Vxw", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "selected": true, + "id": "reactflow__edge-Wpk4TvxcZOJgAoXjrOsZFy2-yvdfoly5WHHTq2Puss355w1", + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "JE12g5cqnwmgeTle14Vxw", + "sourceHandle": "z2", + "target": "UQ8N7gcVpRLAYXgUNHBt5", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-yvdfoly5WHHTq2Puss355z2-UQ8N7gcVpRLAYXgUNHBt5y1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "JE12g5cqnwmgeTle14Vxw", + "sourceHandle": "z2", + "target": "iNsXTtcIHsI_i-mCfjGYn", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-yvdfoly5WHHTq2Puss355z2-iNsXTtcIHsI_i-mCfjGYny2", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "JE12g5cqnwmgeTle14Vxw", + "sourceHandle": "y2", + "target": "At5exN7ZAx2IzY3cTCzHm", + "targetHandle": "z2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-JE12g5cqnwmgeTle14Vxwy2-At5exN7ZAx2IzY3cTCzHmz2", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "At5exN7ZAx2IzY3cTCzHm", + "sourceHandle": "x2", + "target": "yvdfoly5WHHTq2Puss355", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-At5exN7ZAx2IzY3cTCzHmx2-yvdfoly5WHHTq2Puss355w1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "yvdfoly5WHHTq2Puss355", + "sourceHandle": "y2", + "target": "vZxdswGLHCPi5GSuXEcHJ", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-yvdfoly5WHHTq2Puss355y2-vZxdswGLHCPi5GSuXEcHJz1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "yvdfoly5WHHTq2Puss355", + "sourceHandle": "y2", + "target": "a-_iIE7UdoXzD00fD9MxN", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-yvdfoly5WHHTq2Puss355y2-a-_iIE7UdoXzD00fD9MxNz1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "yvdfoly5WHHTq2Puss355", + "sourceHandle": "y2", + "target": "J0enF8UTVzY3H4n3pbPIF", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-yvdfoly5WHHTq2Puss355y2-J0enF8UTVzY3H4n3pbPIFz1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "yvdfoly5WHHTq2Puss355", + "sourceHandle": "y2", + "target": "W4WwTmgZGnWmiYsB0ezml", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-yvdfoly5WHHTq2Puss355y2-W4WwTmgZGnWmiYsB0ezmlz1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "yvdfoly5WHHTq2Puss355", + "sourceHandle": "y2", + "target": "mXCKtLUvwVJkHrpHzOecq", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-yvdfoly5WHHTq2Puss355y2-mXCKtLUvwVJkHrpHzOecqz1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "yvdfoly5WHHTq2Puss355", + "sourceHandle": "z2", + "target": "jXtqI8k4Abz-vr01IcpWL", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-yvdfoly5WHHTq2Puss355z2-jXtqI8k4Abz-vr01IcpWLw1", + "selected": true, + "type": "step", + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "yvdfoly5WHHTq2Puss355", + "sourceHandle": "z2", + "target": "XzXLGjJr2F8Ln7gP0e5N8", + "targetHandle": "w2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-yvdfoly5WHHTq2Puss355z2-XzXLGjJr2F8Ln7gP0e5N8w2", + "selected": true, + "type": "step", + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "MKVcPM2EzAr2_Ieyp9Fu3", + "sourceHandle": "y2", + "target": "iA0C1mFlM_73GcL9XNJmF", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "selected": true, + "selectable": true, + "focusable": true, + "id": "reactflow__edge-MKVcPM2EzAr2_Ieyp9Fu3y2-iA0C1mFlM_73GcL9XNJmFz1" + } + ] +} \ No newline at end of file From f14c945ff9c31186205df57f1071541db06f205a Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Mon, 27 May 2024 10:38:41 +0100 Subject: [PATCH 3/9] Fix canonical url --- src/data/guides/torrent-client.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/data/guides/torrent-client.md b/src/data/guides/torrent-client.md index e4585287f..b81adb3cc 100644 --- a/src/data/guides/torrent-client.md +++ b/src/data/guides/torrent-client.md @@ -6,6 +6,7 @@ seo: title: 'Building a BitTorrent Client - roadmap.sh' description: 'Learn everything you need to know about BitTorrent by writing a client in Go' isNew: false +canonicalUrl: 'https://blog.jse.li/posts/torrent/' type: 'textual' date: 2021-01-17 sitemap: From b2c4bcad349536e6c9e9008e9847232b330f87c1 Mon Sep 17 00:00:00 2001 From: Kablys <1136529+Kablys@users.noreply.github.com> Date: Sat, 25 May 2024 13:22:49 +0300 Subject: [PATCH 4/9] Fix broken link (#5728) --- .../111-javascript-this-keyword/100-function-borrowing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/100-function-borrowing.md b/src/data/roadmaps/javascript/content/111-javascript-this-keyword/100-function-borrowing.md index 7cd210125..e2ec0dafc 100644 --- a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/100-function-borrowing.md +++ b/src/data/roadmaps/javascript/content/111-javascript-this-keyword/100-function-borrowing.md @@ -5,4 +5,4 @@ Function borrowing allows us to use the methods of one object on a different obj Visit the following resources to learn more: - [Function borrowing](https://medium.com/@ensallee/function-borrowing-in-javascript-4bd671e9d7b4) -- [When would I use function borrowing] (https://stackoverflow.com/questions/69892281/when-would-i-use-function-borrowing) +- [When would I use function borrowing](https://stackoverflow.com/questions/69892281/when-would-i-use-function-borrowing) From 8d3c6f946ebd64f3d97911bf43fd700b6057f4b2 Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Mon, 27 May 2024 10:58:05 +0100 Subject: [PATCH 5/9] Update dependencies and fix bug in overlay --- .astro/settings.json | 14 +- package.json | 6 +- pnpm-lock.yaml | 197 +++++------------------- src/components/RoadmapTitleQuestion.tsx | 2 +- 4 files changed, 46 insertions(+), 173 deletions(-) diff --git a/.astro/settings.json b/.astro/settings.json index 6d6b62b77..b48bfebbc 100644 --- a/.astro/settings.json +++ b/.astro/settings.json @@ -1,8 +1,8 @@ { - "devToolbar": { - "enabled": false - }, - "_variables": { - "lastUpdateCheck": 1715513047752 - } -} + "devToolbar": { + "enabled": false + }, + "_variables": { + "lastUpdateCheck": 1716803392287 + } +} \ No newline at end of file diff --git a/package.json b/package.json index 901ee2725..712917153 100644 --- a/package.json +++ b/package.json @@ -29,8 +29,8 @@ }, "dependencies": { "@astrojs/node": "^8.2.5", - "@astrojs/react": "^3.3.4", - "@astrojs/sitemap": "^3.1.4", + "@astrojs/react": "^3.4.0", + "@astrojs/sitemap": "^3.1.5", "@astrojs/tailwind": "^5.1.0", "@fingerprintjs/fingerprintjs": "^4.3.0", "@nanostores/react": "^0.7.2", @@ -38,7 +38,7 @@ "@resvg/resvg-js": "^2.6.2", "@types/react": "^18.3.2", "@types/react-dom": "^18.3.0", - "astro": "^4.8.6", + "astro": "^4.9.1", "clsx": "^2.1.1", "dayjs": "^1.11.11", "dom-to-image": "^2.6.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a3ab38e89..98fb35963 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,16 +10,16 @@ importers: dependencies: '@astrojs/node': specifier: ^8.2.5 - version: 8.2.5(astro@4.8.6(@types/node@18.19.31)) + version: 8.2.5(astro@4.9.1(@types/node@18.19.31)) '@astrojs/react': - specifier: ^3.3.4 - version: 3.3.4(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.2.11(@types/node@18.19.31)) + specifier: ^3.4.0 + version: 3.4.0(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.2.11(@types/node@18.19.31)) '@astrojs/sitemap': - specifier: ^3.1.4 - version: 3.1.4 + specifier: ^3.1.5 + version: 3.1.5 '@astrojs/tailwind': specifier: ^5.1.0 - version: 5.1.0(astro@4.8.6(@types/node@18.19.31))(tailwindcss@3.4.3) + version: 5.1.0(astro@4.9.1(@types/node@18.19.31))(tailwindcss@3.4.3) '@fingerprintjs/fingerprintjs': specifier: ^4.3.0 version: 4.3.0 @@ -39,8 +39,8 @@ importers: specifier: ^18.3.0 version: 18.3.0 astro: - specifier: ^4.8.6 - version: 4.8.6(@types/node@18.19.31) + specifier: ^4.9.1 + version: 4.9.1(@types/node@18.19.31) clsx: specifier: ^2.1.1 version: 2.1.1 @@ -218,8 +218,8 @@ packages: resolution: {integrity: sha512-Z9IYjuXSArkAUx3N6xj6+Bnvx8OdUSHA8YoOgyepp3+zJmtVYJIl/I18GozdJVW1p5u/CNpl3Km7/gwTJK85cw==} engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} - '@astrojs/react@3.3.4': - resolution: {integrity: sha512-azFYckxcMnHcc5kfXW38oNXR3Na+OMFnzimXVBxRJ906tHkO/sBOBXhsmgQ8JGr/4WEjyaz8zKZj76TWjNMCdw==} + '@astrojs/react@3.4.0': + resolution: {integrity: sha512-5MpU+1WVqirEIoEmF1r6HkxqjOWEMjni/qCzPX/oaSyumOZNdCGfDN9GoGJhgSxiZOVfob+MNy46H4d3AgrYpQ==} engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} peerDependencies: '@types/react': ^17.0.50 || ^18.0.21 @@ -227,8 +227,8 @@ packages: react: ^17.0.2 || ^18.0.0 || ^19.0.0-beta react-dom: ^17.0.2 || ^18.0.0 || ^19.0.0-beta - '@astrojs/sitemap@3.1.4': - resolution: {integrity: sha512-po8CqDCK14O6phU1mB5C8SyVLyQEa+7pJM8oXxs1mVh8DgvxxaA5E7lak1vzOmBcyyyHBW32jakGqNYc66sBRw==} + '@astrojs/sitemap@3.1.5': + resolution: {integrity: sha512-GLdzJ01387Uzb8RKYpsYLlg/GzoPnGbmDeQNkarSE11i2+l9Qp8Nj/WoTEy9nkTS25fxxy0kxDfJmreeVleCqg==} '@astrojs/tailwind@5.1.0': resolution: {integrity: sha512-BJoCDKuWhU9FT2qYg+fr6Nfb3qP4ShtyjXGHKA/4mHN94z7BGcmauQK23iy+YH5qWvTnhqkd6mQPQ1yTZTe9Ig==} @@ -248,18 +248,10 @@ packages: resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} engines: {node: '>=6.9.0'} - '@babel/core@7.24.4': - resolution: {integrity: sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==} - engines: {node: '>=6.9.0'} - '@babel/core@7.24.5': resolution: {integrity: sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==} engines: {node: '>=6.9.0'} - '@babel/generator@7.24.4': - resolution: {integrity: sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==} - engines: {node: '>=6.9.0'} - '@babel/generator@7.24.5': resolution: {integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==} engines: {node: '>=6.9.0'} @@ -288,12 +280,6 @@ packages: resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.23.3': - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-module-transforms@7.24.5': resolution: {integrity: sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==} engines: {node: '>=6.9.0'} @@ -304,18 +290,10 @@ packages: resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} engines: {node: '>=6.9.0'} - '@babel/helper-simple-access@7.22.5': - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} - engines: {node: '>=6.9.0'} - '@babel/helper-simple-access@7.24.5': resolution: {integrity: sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==} engines: {node: '>=6.9.0'} - '@babel/helper-split-export-declaration@7.22.6': - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} - engines: {node: '>=6.9.0'} - '@babel/helper-split-export-declaration@7.24.5': resolution: {integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==} engines: {node: '>=6.9.0'} @@ -324,10 +302,6 @@ packages: resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.22.20': - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.24.5': resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==} engines: {node: '>=6.9.0'} @@ -336,10 +310,6 @@ packages: resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.24.4': - resolution: {integrity: sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==} - engines: {node: '>=6.9.0'} - '@babel/helpers@7.24.5': resolution: {integrity: sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==} engines: {node: '>=6.9.0'} @@ -348,11 +318,6 @@ packages: resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} engines: {node: '>=6.9.0'} - '@babel/parser@7.24.4': - resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.24.5': resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==} engines: {node: '>=6.0.0'} @@ -390,18 +355,10 @@ packages: resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.24.1': - resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} - engines: {node: '>=6.9.0'} - '@babel/traverse@7.24.5': resolution: {integrity: sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==} engines: {node: '>=6.9.0'} - '@babel/types@7.24.0': - resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} - engines: {node: '>=6.9.0'} - '@babel/types@7.24.5': resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==} engines: {node: '>=6.9.0'} @@ -1509,8 +1466,8 @@ packages: resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} engines: {node: '>=0.10.0'} - astro@4.8.6: - resolution: {integrity: sha512-psHIfK+e+bMPhRwghV9yCGH/uc1jvY4DHmDZdoEepax9yA7kzYH0wt3dpkqlcrO2zxl5jzSC3DmqZfkD6wnW9A==} + astro@4.9.1: + resolution: {integrity: sha512-9TsoAu0WBPiqyAIj9H0JW7R+tIjPjFsPKo70Nja6WL3imTTuUJQmnCre4ZVmoNV3oicTTlb+N4zjRYANW0Ty9A==} engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true @@ -4116,9 +4073,6 @@ packages: peerDependencies: zod: ^3.23.3 - zod@3.23.4: - resolution: {integrity: sha512-/AtWOKbBgjzEYYQRNfoGKHObgfAZag6qUJX1VbHo2PRBgS+wfWagEY2mizjfyAPcGesrJOcx/wcl0L9WnVrHFw==} - zod@3.23.8: resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} @@ -4178,9 +4132,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/node@8.2.5(astro@4.8.6(@types/node@18.19.31))': + '@astrojs/node@8.2.5(astro@4.9.1(@types/node@18.19.31))': dependencies: - astro: 4.8.6(@types/node@18.19.31) + astro: 4.9.1(@types/node@18.19.31) send: 0.18.0 server-destroy: 1.0.1 transitivePeerDependencies: @@ -4190,7 +4144,7 @@ snapshots: dependencies: prismjs: 1.29.0 - '@astrojs/react@3.3.4(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.2.11(@types/node@18.19.31))': + '@astrojs/react@3.4.0(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.2.11(@types/node@18.19.31))': dependencies: '@types/react': 18.3.2 '@types/react-dom': 18.3.0 @@ -4202,15 +4156,15 @@ snapshots: - supports-color - vite - '@astrojs/sitemap@3.1.4': + '@astrojs/sitemap@3.1.5': dependencies: sitemap: 7.1.1 stream-replace-string: 2.0.0 - zod: 3.23.4 + zod: 3.23.8 - '@astrojs/tailwind@5.1.0(astro@4.8.6(@types/node@18.19.31))(tailwindcss@3.4.3)': + '@astrojs/tailwind@5.1.0(astro@4.9.1(@types/node@18.19.31))(tailwindcss@3.4.3)': dependencies: - astro: 4.8.6(@types/node@18.19.31) + astro: 4.9.1(@types/node@18.19.31) autoprefixer: 10.4.19(postcss@8.4.38) postcss: 8.4.38 postcss-load-config: 4.0.2(postcss@8.4.38) @@ -4237,26 +4191,6 @@ snapshots: '@babel/compat-data@7.24.4': {} - '@babel/core@7.24.4': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.4 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) - '@babel/helpers': 7.24.4 - '@babel/parser': 7.24.4 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.1 - '@babel/types': 7.24.0 - convert-source-map: 2.0.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/core@7.24.5': dependencies: '@ampproject/remapping': 2.3.0 @@ -4277,13 +4211,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.24.4': - dependencies: - '@babel/types': 7.24.0 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 - '@babel/generator@7.24.5': dependencies: '@babel/types': 7.24.5 @@ -4308,24 +4235,15 @@ snapshots: '@babel/helper-function-name@7.23.0': dependencies: '@babel/template': 7.24.0 - '@babel/types': 7.24.0 + '@babel/types': 7.24.5 '@babel/helper-hoist-variables@7.22.5': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.24.5 '@babel/helper-module-imports@7.24.3': dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-module-transforms@7.23.3(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 + '@babel/types': 7.24.5 '@babel/helper-module-transforms@7.24.5(@babel/core@7.24.5)': dependencies: @@ -4338,38 +4256,20 @@ snapshots: '@babel/helper-plugin-utils@7.24.0': {} - '@babel/helper-simple-access@7.22.5': - dependencies: - '@babel/types': 7.24.0 - '@babel/helper-simple-access@7.24.5': dependencies: '@babel/types': 7.24.5 - '@babel/helper-split-export-declaration@7.22.6': - dependencies: - '@babel/types': 7.24.0 - '@babel/helper-split-export-declaration@7.24.5': dependencies: '@babel/types': 7.24.5 '@babel/helper-string-parser@7.24.1': {} - '@babel/helper-validator-identifier@7.22.20': {} - '@babel/helper-validator-identifier@7.24.5': {} '@babel/helper-validator-option@7.23.5': {} - '@babel/helpers@7.24.4': - dependencies: - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.1 - '@babel/types': 7.24.0 - transitivePeerDependencies: - - supports-color - '@babel/helpers@7.24.5': dependencies: '@babel/template': 7.24.0 @@ -4380,15 +4280,11 @@ snapshots: '@babel/highlight@7.24.2': dependencies: - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-validator-identifier': 7.24.5 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.0.0 - '@babel/parser@7.24.4': - dependencies: - '@babel/types': 7.24.0 - '@babel/parser@7.24.5': dependencies: '@babel/types': 7.24.5 @@ -4398,14 +4294,14 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-react-jsx-self@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-react-jsx-self@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.24.4 + '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.24.4 + '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.5)': @@ -4424,23 +4320,8 @@ snapshots: '@babel/template@7.24.0': dependencies: '@babel/code-frame': 7.24.2 - '@babel/parser': 7.24.4 - '@babel/types': 7.24.0 - - '@babel/traverse@7.24.1': - dependencies: - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.4 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.24.4 - '@babel/types': 7.24.0 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 '@babel/traverse@7.24.5': dependencies: @@ -4457,12 +4338,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/types@7.24.0': - dependencies: - '@babel/helper-string-parser': 7.24.1 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - '@babel/types@7.24.5': dependencies: '@babel/helper-string-parser': 7.24.1 @@ -5326,9 +5201,9 @@ snapshots: '@vitejs/plugin-react@4.2.1(vite@5.2.11(@types/node@18.19.31))': dependencies: - '@babel/core': 7.24.4 - '@babel/plugin-transform-react-jsx-self': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.4) + '@babel/core': 7.24.5 + '@babel/plugin-transform-react-jsx-self': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.5) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 vite: 5.2.11(@types/node@18.19.31) @@ -5412,7 +5287,7 @@ snapshots: array-uniq@1.0.3: {} - astro@4.8.6(@types/node@18.19.31): + astro@4.9.1(@types/node@18.19.31): dependencies: '@astrojs/compiler': 2.8.0 '@astrojs/internal-helpers': 0.4.0 @@ -8467,8 +8342,6 @@ snapshots: dependencies: zod: 3.23.8 - zod@3.23.4: {} - zod@3.23.8: {} zustand@4.5.2(@types/react@18.3.2)(react@18.3.1): diff --git a/src/components/RoadmapTitleQuestion.tsx b/src/components/RoadmapTitleQuestion.tsx index 2b8a26a81..4188ed2d5 100644 --- a/src/components/RoadmapTitleQuestion.tsx +++ b/src/components/RoadmapTitleQuestion.tsx @@ -41,7 +41,7 @@ export function RoadmapTitleQuestion(props: RoadmapTitleQuestionProps) {
Date: Mon, 27 May 2024 12:31:17 +0200 Subject: [PATCH 6/9] Update built-in modules text (#5737) The paragraph was about built-in functions, not modules --- .../105-modules/100-builtin-modules.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/roadmaps/python/content/102-python-advanced-topics/105-modules/100-builtin-modules.md b/src/data/roadmaps/python/content/102-python-advanced-topics/105-modules/100-builtin-modules.md index 6f74ef78f..8ddeb5a37 100644 --- a/src/data/roadmaps/python/content/102-python-advanced-topics/105-modules/100-builtin-modules.md +++ b/src/data/roadmaps/python/content/102-python-advanced-topics/105-modules/100-builtin-modules.md @@ -1,6 +1,6 @@ # Builtin Modules -Python interpreter has a number of built-in functions. They are always available for use in every interpreter session. Many of them have been discussed previously. For example `print()` and `input()` for I/O, number conversion functions (`int()`, `float()`, `complex()`), data type conversions (`list()`, `tuple()`, `set()`) etc. +Python has a rich standard library of built-in modules that provide a wide range of functionality. Some of the most commonly used built-in modules include: sys, os, math, datetime, random, re, itertools, etc. Visit the following resources to learn more: From 268acda75b2b6172503b177f153287102cd30b51 Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Mon, 27 May 2024 12:36:26 +0100 Subject: [PATCH 7/9] Add progress nudge on roadmap --- src/components/Navigation/AccountDropdown.tsx | 127 ++++++++++-------- .../Navigation/AccountDropdownList.tsx | 2 +- src/components/OnboardingNudge.tsx | 69 ++++++++++ src/hooks/use-scroll-position.ts | 22 +++ src/styles/global.css | 2 +- 5 files changed, 164 insertions(+), 58 deletions(-) create mode 100644 src/components/OnboardingNudge.tsx create mode 100644 src/hooks/use-scroll-position.ts diff --git a/src/components/Navigation/AccountDropdown.tsx b/src/components/Navigation/AccountDropdown.tsx index 07119ea99..7e24b0587 100644 --- a/src/components/Navigation/AccountDropdown.tsx +++ b/src/components/Navigation/AccountDropdown.tsx @@ -10,6 +10,7 @@ import { httpGet } from '../../lib/http.ts'; import { useToast } from '../../hooks/use-toast.ts'; import type { UserDocument } from '../../api/user.ts'; import { NotificationIndicator } from './NotificationIndicator.tsx'; +import { OnboardingNudge } from '../OnboardingNudge.tsx'; export type OnboardingConfig = Pick< UserDocument, @@ -24,7 +25,7 @@ export function AccountDropdown() { const [isTeamsOpen, setIsTeamsOpen] = useState(false); const [isCreatingRoadmap, setIsCreatingRoadmap] = useState(false); - const [isConfigLoading, setIsConfigLoading] = useState(true); + const [isConfigLoading, setIsConfigLoading] = useState(false); const [isOnboardingModalOpen, setIsOnboardingModalOpen] = useState(false); const [onboardingConfig, setOnboardingConfig] = useState< OnboardingConfig | undefined @@ -93,66 +94,80 @@ export function AccountDropdown() { ).length; return ( -
- {isOnboardingModalOpen && onboardingConfig && ( - { - setIsOnboardingModalOpen(false); - }} - onIgnoreTask={(taskId, status) => { - loadOnboardingConfig().finally(() => {}); - }} - /> - )} - {isCreatingRoadmap && ( - { - setIsCreatingRoadmap(false); + <> + {shouldShowOnboardingStatus && !isOnboardingModalOpen && ( + { + loadOnboardingConfig().then(() => { + setIsOnboardingModalOpen(true); + }); }} /> )} - - - {showDropdown && ( -
+ {isOnboardingModalOpen && onboardingConfig && ( + { + setIsOnboardingModalOpen(false); + }} + onIgnoreTask={(taskId, status) => { + loadOnboardingConfig().finally(() => {}); + }} + /> + )} + {isCreatingRoadmap && ( + { + setIsCreatingRoadmap(false); + }} + /> + )} + +
- )} -
+ + + {showDropdown && ( +
+ {isTeamsOpen ? ( + + ) : ( + { + setIsCreatingRoadmap(true); + setShowDropdown(false); + }} + setIsTeamsOpen={setIsTeamsOpen} + onOnboardingClick={() => { + setIsOnboardingModalOpen(true); + setShowDropdown(false); + }} + shouldShowOnboardingStatus={shouldShowOnboardingStatus} + isConfigLoading={isConfigLoading} + onboardingConfigCount={onboardingCount} + doneConfigCount={onboardingDoneCount} + /> + )} +
+ )} +
+ ); } diff --git a/src/components/Navigation/AccountDropdownList.tsx b/src/components/Navigation/AccountDropdownList.tsx index 79deae41d..8b3dbe1c9 100644 --- a/src/components/Navigation/AccountDropdownList.tsx +++ b/src/components/Navigation/AccountDropdownList.tsx @@ -45,7 +45,7 @@ export function AccountDropdownList(props: AccountDropdownListProps) { className={cn( 'flex h-9 w-full items-center rounded py-1 pl-3 pr-2 text-sm font-medium text-slate-100 hover:opacity-80', isConfigLoading - ? 'striped-loader-lighter flex border-slate-800 opacity-70' + ? 'striped-loader-darker flex border-slate-800 opacity-70' : 'border-slate-600 bg-slate-700', )} onClick={onOnboardingClick} diff --git a/src/components/OnboardingNudge.tsx b/src/components/OnboardingNudge.tsx new file mode 100644 index 000000000..bb2710a82 --- /dev/null +++ b/src/components/OnboardingNudge.tsx @@ -0,0 +1,69 @@ +import { cn } from '../lib/classname.ts'; +import { memo, useEffect, useState } from 'react'; +import { useScrollPosition } from '../hooks/use-scroll-position.ts'; +import { X } from 'lucide-react'; + +type OnboardingNudgeProps = { + onStartOnboarding: () => void; +}; + +const NUDGE_ONBOARDING_KEY = 'should_nudge_onboarding'; + +export function OnboardingNudge(props: OnboardingNudgeProps) { + const { onStartOnboarding } = props; + + const [isLoading, setIsLoading] = useState(false); + + const { y: scrollY } = useScrollPosition(); + + useEffect(() => { + if (localStorage.getItem(NUDGE_ONBOARDING_KEY) === null) { + localStorage.setItem(NUDGE_ONBOARDING_KEY, 'true'); + } + }, []); + + if (localStorage.getItem(NUDGE_ONBOARDING_KEY) !== 'true') { + return null; + } + + if (scrollY < 100) { + return null; + } + + return ( +
+

+ Welcome! Please take a moment to{' '} + + +

+
+ ); +} diff --git a/src/hooks/use-scroll-position.ts b/src/hooks/use-scroll-position.ts new file mode 100644 index 000000000..861e28c3c --- /dev/null +++ b/src/hooks/use-scroll-position.ts @@ -0,0 +1,22 @@ +import { useEffect, useState } from 'react'; + +export function useScrollPosition() { + const [scrollPosition, setScrollPosition] = useState<{ + x: number; + y: number; + }>({ + x: 0, + y: 0, + }); + + useEffect(() => { + const handleScroll = () => { + setScrollPosition({ x: window.scrollX, y: window.scrollY }); + }; + + window.addEventListener('scroll', handleScroll); + return () => window.removeEventListener('scroll', handleScroll); + }, []); + + return scrollPosition; +} diff --git a/src/styles/global.css b/src/styles/global.css index 7f84672c5..7f5977e73 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -84,7 +84,7 @@ a > code:before { animation: barberpole 15s linear infinite; } -.striped-loader-lighter { +.striped-loader-darker { background-image: repeating-linear-gradient( -45deg, transparent, From 13744a486a2b2fd343ecff8ace1bcdfee541656f Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Mon, 27 May 2024 12:51:21 +0100 Subject: [PATCH 8/9] Nudge users to onboard --- src/components/Navigation/OnboardingModal.tsx | 17 +++++++++++------ src/components/OnboardingNudge.tsx | 2 +- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/components/Navigation/OnboardingModal.tsx b/src/components/Navigation/OnboardingModal.tsx index 6a9e95987..53e39e3b3 100644 --- a/src/components/Navigation/OnboardingModal.tsx +++ b/src/components/Navigation/OnboardingModal.tsx @@ -8,6 +8,7 @@ import { httpPatch } from '../../lib/http'; import { useToast } from '../../hooks/use-toast'; import type { OnboardingConfig } from './AccountDropdown'; import { setAuthToken } from '../../lib/jwt'; +import { NUDGE_ONBOARDING_KEY } from '../OnboardingNudge.tsx'; type Task = { id: string; @@ -157,9 +158,11 @@ export function OnboardingModal(props: OnboardingModalProps) {

-
    +
      {/*sort to put completed tasks at the end */} {tasks.map((task, taskCounter) => { const isDone = task.status === 'done'; @@ -175,9 +178,11 @@ export function OnboardingModal(props: OnboardingModalProps) { 'border-t': taskCounter === 0 && isDone, })} > -
      +
      {isDone ? ( diff --git a/src/components/OnboardingNudge.tsx b/src/components/OnboardingNudge.tsx index bb2710a82..c4c30e0d7 100644 --- a/src/components/OnboardingNudge.tsx +++ b/src/components/OnboardingNudge.tsx @@ -7,7 +7,7 @@ type OnboardingNudgeProps = { onStartOnboarding: () => void; }; -const NUDGE_ONBOARDING_KEY = 'should_nudge_onboarding'; +export const NUDGE_ONBOARDING_KEY = 'should_nudge_onboarding'; export function OnboardingNudge(props: OnboardingNudgeProps) { const { onStartOnboarding } = props; From 073ba617edfff68d87e77fc54a320f875c94b511 Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Mon, 27 May 2024 14:02:18 +0100 Subject: [PATCH 9/9] Add gRPC to api design roadmap --- src/components/OnboardingNudge.tsx | 2 +- src/data/roadmaps/api-design/api-design.json | 73 ++++++++++++++----- .../grpc-apis@Wwd-0PjrtViMFWxRGaQey.md | 14 ++++ 3 files changed, 68 insertions(+), 21 deletions(-) create mode 100644 src/data/roadmaps/api-design/content/grpc-apis@Wwd-0PjrtViMFWxRGaQey.md diff --git a/src/components/OnboardingNudge.tsx b/src/components/OnboardingNudge.tsx index c4c30e0d7..734118804 100644 --- a/src/components/OnboardingNudge.tsx +++ b/src/components/OnboardingNudge.tsx @@ -33,7 +33,7 @@ export function OnboardingNudge(props: OnboardingNudgeProps) { return (