{"componentChunkName":"component---gatsby-theme-spaceout-src-templates-article-template-tsx","path":"/static-race","result":{"pageContext":{"article":{"id":"62d54027-c7c6-590e-8a64-c664a30230e3","slug":"/static-race","secret":false,"title":"Static race","author":"Luke Celitan","date":"March 22nd, 2024","dateForSEO":"2024-03-22T00:00:00.000Z","timeToRead":5,"excerpt":"A static serve race between nginx, actix, express and restify","subscription":true,"body":"var _excluded = [\"components\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {\n  \"title\": \"Static race\",\n  \"excerpt\": \"A static serve race between nginx, actix, express and restify\",\n  \"date\": \"2024-03-22T00:00:00.000Z\",\n  \"hero\": \"cover2.png\",\n  \"author\": \"Luke Celitan\",\n  \"appDescription\": \"Sever Analysis\",\n  \"category\": \"Post\",\n  \"tech\": [\"Rust\", \"Nodejs\"]\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h1\", {\n    \"id\": \"static-race-who-will-become-the-static-king-\"\n  }, \"Static race, who will become the static king ?\"), mdx(\"p\", null, \"In the world of web development, the choice of server framework can\\nsignificantly impact the performance and efficiency of a website. In the most\\nreal life scenarios you will need an instance to serve static assets to the\\nclient whatever application you are building. Html, css, jss, images and others\\nstatic assets are the backbone of any frontend.\"), mdx(\"p\", null, \"Static serving is the most cheapest and most reliable way to deliver content on\\nthe intrent so far. Until you start moving your assetes to CDN providers, most\\nlikely you will decide the serve the static files localy.\"), mdx(\"p\", null, \"I decided to create a simple test to find out which serving option is the most\\nperformant on my own.\"), mdx(\"p\", null, \"Today, we\\u2019re diving into a comparative analysis of four different server\\nframeworks: Actix, Express, Nginx, and Restify. The focus of this comparison is\\non the average wait times for a browser to download resources from the server,\\nincluding HTML and images.\"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"The data presented in the data analysis reflects the results from 2000 calls\\nper each server requesting a simple HTML site with a single 12.7MB image.\")), mdx(\"p\", null, \"This metric is crucial as it gives us insight into the responsiveness of each\\nserver framework under load. Additionally, the \\u2018HTML + Image Stack\\u2019 represents\\nthe total time needed to stream the website to the client, including all\\nresources, with 1000 calls each.\"), mdx(\"h2\", {\n    \"id\": \"test-methodology\"\n  }, \"Test Methodology\"), mdx(\"p\", null, \"The test was straightforward: open a static website consisting of a simple HTML\\npage (200kb) and a single image (12.7mb) and download it fully to the client\\nbrowser.\"), mdx(\"p\", null, \"All applications are running on the same machine, boasting 2GB of RAM and SSD\\nstorage, and were tested sequentially to ensure fairness. Each application has a\\nSSL let\\u2019s encrypt certificate and is located in the same region (Warsaw).\"), mdx(\"p\", null, \"The links for reference\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://nginxtest.spaceout.pl/\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"https://nginxtest.spaceout.pl/\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://expresstest.spaceout.pl/\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"https://expresstest.spaceout.pl/\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://astrox.spaceout.pl/rustTest\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"https://astrox.spaceout.pl/rustTest\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://restifytest.spaceout.pl/\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"https://restifytest.spaceout.pl/\"))), mdx(\"p\", null, \"All application were created with minimal reproduction except for rust based\\nactix, astro x website is a another rust based project, I am working on, i has\\nsome more middlewares but still serves as a static server as well.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Html markup used in the test\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-html\"\n  }, \"<!DOCTYPE html>\\n<html>\\n  <head>\\n    <title>Express Static Files Test</title>\\n  </head>\\n  <body>\\n    <h1>Nginx Static Files Test</h1>\\n    <img src=\\\"./webdev2.png\\\" alt=\\\"Web Development Image\\\" />\\n  </body>\\n</html>\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Test Picture\")), mdx(\"p\", null, \"This is the test picture we will be stressing my hosting with. Here obviously\\noptimized, but in the test the upscaled 12.7MB version was used. Definetly\\nchosen in order to get some bigger diffrences in how framework utilize bigger\\ni/o operations.\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"4096px\"\n    }\n  }, \"\\n      \", mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"100%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEwUlEQVQ4yz2PW0xTBxzGz6ZS0GkQ2tJSaoFKgSrrDeg5nF5OS9vT09N7T0+hN6CtQikVSstlUBSi4AWncdFtAg5BLhFxbsa5ZZtzmT44H4zJsi1zOrdByyRuLmYPe3N1S5b88j39f1++P5A6K0udlacnlekpZWpSuTqhTJ9D/md1EklN/cukMjWlWHn3JemJTMpX3pEB6en6XybVjyfV6VldahZdnUHTF/QvmcOeLOB/LpvWFgzpOcP6omFtHkvN6lMzaGpGtzKtTZ/XAusXzWuLppV54/qy9en7jrVLjj+uun6/1vjkA/LRguPj4+jKZddvHzZ8d8H+6xKxtkw8uUysLppX5oyrcziQWrKtX214es3zw6Lrm/mGZ1+03jpj/Oho/d93YpfGHah09+3z/kfXwwNNhq/PB57dbHuw7H28RD6cMf34ngG4f0r1YNb2/PPg0kHr0XbTi9XT+yNGDw6++OvSvU/HtJKKn++eev7w3HiE/OnG2PNvjx8K49eP4N9PGe+9bQBuHZF/OSq/NoYfCevGI4b7nx1sD+pDPu29m6en3+qDaoVTJ3o+WTjUGzJdmei9e2XoZASbT2J3ThtvnzICXx1TT/dquv1YvMXYE8D2eBROJ+yxSZtNCKHT+u1mu1btN6OtLu1wxD4eJ+JNsElbHW9S3jhhAhaSaNyv8eHSfY3qoFXhtcncXsTvRnAEtmjgqM9I4hq/Dbfr4HgLFg/gZgxSK8SoUnRxxACciaMxtypgBq2oLORQO3QSmXyXUQ8ioDTmRS+MNuvlUlAk9JrVjQbIhYEKSCAVV8pqKs8N4hlZPxZGLRoQgkA1LLHraxGVQCbmmpUCs7r2ZIL0m2GpgJ8I2Ee7HCGyXq+BzXqlA6udHbEDBK48HMGaLfIKHq+IWUDaZd7meo8FElYUCfncBqNiKKzz4mLSIH+zv9Hj0IBKuB5VNROKqaQN6Aw6R9tMCZ+2EZe2O2VOizTUoh/qINhMelVFCa6SuAxQ7x7LQJvlWI/Lqof4VbsE1aIQiUwMOIBYkOxwIISmusuvHe+0BEhZh9/gxKDiInrmyahPP9pNdgfw/lbb2ZGWJptcIqmqrhH6LIo+rwbA1fDWLVvKigsbcfBw1O41IS4c7mu1Rp1IyCZn0PJAAY9dSIPEwiCB+SwwAgm0aojQy0Q8NsDbwdqwcROvhOU1Qj6DvLyUS6fmZYbsNdZRc7cCr27YlEXZnpubk7O5lM0gdTUqsApFasrKShARD2Ax6BlZzC/xGuvarCoOk7oxi7KTzUg4ERzanXGzs7M352RvysraS6psKjFYxdVCglwa7bUtmwGsTlxXVV7GYXDZBWFrvVVRTaFQcrdtrSwuLOcwt+duK6Buz1SUFjEORQlReTHI5+rqRNRCFoueD8Di1w1wdQW3hMkoYNBpO3ewKks5lSVsAHiFW1QgLGMXM6k52dk1u3baVBJOIY1Fp1Lz8/Jp1BwKBQh3xYKRaDDcvrcj6mhoUCAIn19Jp9OYDAanmMMsZOXlU2nUfKFE7HK73X4/4fE43W4rQVgIAuhJ7u87MNx3YCSTicFkd/9AV/8brfv2hTu74gODieRQfDDZ1tkVjsV6hv67HO7df6AnmUwMDvwD/xuxW/BgrjoAAAAASUVORK5CYII=')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"picture\", {\n    parentName: \"span\"\n  }, \"\\n          \", mdx(\"source\", {\n    parentName: \"picture\",\n    \"srcSet\": [\"/static/ed94921b7dc3ff52596570b15cc5ba1f/a3bc4/webdev2.webp 2500w\", \"/static/ed94921b7dc3ff52596570b15cc5ba1f/0b20a/webdev2.webp 4096w\"],\n    \"sizes\": \"(max-width: 4096px) 100vw, 4096px\",\n    \"type\": \"image/webp\"\n  }), \"\\n          \", mdx(\"source\", {\n    parentName: \"picture\",\n    \"srcSet\": [\"/static/ed94921b7dc3ff52596570b15cc5ba1f/412e4/webdev2.png 2500w\", \"/static/ed94921b7dc3ff52596570b15cc5ba1f/120cf/webdev2.png 4096w\"],\n    \"sizes\": \"(max-width: 4096px) 100vw, 4096px\",\n    \"type\": \"image/png\"\n  }), \"\\n          \", mdx(\"img\", {\n    parentName: \"picture\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"src\": \"/static/ed94921b7dc3ff52596570b15cc5ba1f/120cf/webdev2.png\",\n    \"alt\": \"Web Dev Commandos\",\n    \"title\": \"Web Dev Commandos\",\n    \"loading\": \"lazy\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    }\n  }), \"\\n        \"), \"\\n    \")), mdx(\"h3\", {\n    \"id\": \"the-test\"\n  }, \"The Test\"), mdx(\"p\", null, \"A simple simulation of a desepearte user clicking refresh 1000 times and waiting\\neach time before the images finshes to load, created using playwright e2e\\nframework\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"import { chromium, Browser, Page } from 'playwright';\\nimport { test } from '@playwright/test';\\nimport { PlaywrightHar } from 'playwright-har';\\n\\ntest('should reload page 1000 times and generate HAR file', async () => {\\n  test.setTimeout(1200000000);\\n  const browser = await chromium.launch();\\n  const context = await browser.newContext({\\n    extraHTTPHeaders: {\\n      'Cache-Control': 'no-cache, no-store, must-revalidate',\\n    },\\n    recordHar: { path: './hars/nginx.har' },\\n  });\\n  const page = await context.newPage();\\n\\n  const playwrightHar = new PlaywrightHar(page);\\n  await playwrightHar.start();\\n\\n  await page.goto('https:/nginxtest.spaceout.pl');\\n  await page.waitForLoadState('networkidle');\\n  await page.waitForFunction(() => {\\n    const images = Array.from(document.querySelectorAll('img'));\\n    return images.every((img) => img.complete);\\n  });\\n\\n  const reloads = Array.from({ length: 1000 });\\n  for await (const _ of reloads) {\\n    await page.reload();\\n    await page.waitForFunction(() => {\\n      const images = Array.from(document.querySelectorAll('img'));\\n      return images.every((img) => img.complete);\\n    });\\n    await page.waitForLoadState('networkidle');\\n  }\\n\\n  await playwrightHar.stop('./hars/nginx.har');\\n  await browser.close();\\n});\\n\")), mdx(\"h2\", {\n    \"id\": \"data-analysis\"\n  }, \"Data Analysis\"), mdx(\"h3\", {\n    \"id\": \"fastest-and-slowest-runs\"\n  }, \"Fastest and slowest runs\"), mdx(MinMaxServerChart, {\n    html: minMaxHtml.sort(function (a, b) {\n      return a.min - b.min;\n    }),\n    image: minMaxImage.sort(function (a, b) {\n      return a.min - b.min;\n    }),\n    mdxType: \"MinMaxServerChart\"\n  }), mdx(\"p\", null, \"Actix, a server framework written in Rust, has been turning heads with its\\nimpressive HTML return times. It clocked in at a blistering 34.154ms, showcasing\\nthe efficiency of Rust\\u2019s design for concurrent web services. Nginx, the stalwart\\nof high-performance web servers, is hot on Actix\\u2019s heels with a return time of\\n34.349ms. This close competition highlights the advancements in web server\\ntechnology and the fine margins that separate the top performers.\"), mdx(\"p\", null, \"When it comes to handling larger files, Nginx takes the lead. It served a 12.7MB\\nfile in just 596.061ms, edging out Actix, which completed the task in 612.17ms.\\nThis demonstrates Nginx\\u2019s robustness and its ability to handle a mix of tasks\\nwithout breaking a sweat.\"), mdx(\"p\", null, \"Node.js-based solutions, while versatile and popular, show significantly higher\\nmaximum scores in these benchmarks. The Express framework, for instance, has\\ngained notoriety for being slower in HTML delivery. Similarly, Restify leads the\\npack in the image serving category, albeit on the slower end of the spectrum.\"), mdx(\"h3\", {\n    \"id\": \"average-serving-time\"\n  }, \"Average serving time\"), mdx(\"p\", null, \"Avarage wait times for a browser to download the resource from the server. \\u201CAll\\u201D\\ncolumn represents all 2000 calls for html and one 12.7mb image.\"), mdx(\"p\", null, \"The html + image stack represents the total time needed to stream the website\\nthe client with all resources, 1000 calls each.\"), mdx(AvgServerChart, {\n    data: avg.sort(function (a, b) {\n      return a.all - b.all;\n    }),\n    mdxType: \"AvgServerChart\"\n  }), mdx(\"p\", null, \"On an avarage \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"the fastest serving framework is the rust based actix server,\\nwith an avarage serving time of 559.72ms (0.55s)\"), \", it is also a winner in the\\nthe html (45.48ms) and image category (972.60ms).\"), mdx(\"h3\", {\n    \"id\": \"in-details-comparison\"\n  }, \"In details comparison.\"), mdx(\"p\", null, \"The min, avg, max analysis suggests that the Actix is the most preformant\\nframework. I have prepared the funnel and scatter charts to help anlayse the\\noverall spread and stability of each framework.\"), mdx(\"h4\", {\n    \"id\": \"actix-httpsactixrs\"\n  }, \"Actix (\", mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"https://actix.rs/\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"https://actix.rs/\"), \")\"), mdx(\"p\", null, \"Actix is a powerful, pragmatic, and extremely fast web framework for Rust. It is\\nbuilt on the Actor Model, which allows applications to be written as a group of\\nindependently executing but cooperating \\u201CActors\\u201D that communicate via messages.\\nThis model offers high performance and scalability through its asynchronous\\nprogramming model and lightweight design\"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"Actix is the average request time category winner, with solid numbers to back\\nit up, for 1000 requests most of them were delivered better than the\\ncompetition in both html and image file\")), mdx(\"p\", null, \"The scatter graph indicates solid and consistent content delivery, overall it\\nlooks like the most stable way to server static content on the web.\"), mdx(\"div\", {\n    className: \"chartGridHolder\"\n  }, mdx(FunnelTime, {\n    data: actixData,\n    mdxType: \"FunnelTime\"\n  }), mdx(ScatterChart, {\n    data: actixData,\n    fill: '#d83e09',\n    mdxType: \"ScatterChart\"\n  })), mdx(\"h4\", {\n    \"id\": \"nginx-httpswwwnginxcom\"\n  }, \"Nginx (\", mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"https://www.nginx.com/\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"https://www.nginx.com/\"), \")\"), mdx(\"p\", null, \"Nginx, pronounced as \\u201Cengine-x\\u201D, is a versatile web server that has gained\\npopularity for its high performance, stability, and low resource usage.\\nInitially released in 2004 by Russian developer Igor Sysoev, Nginx was designed\\nto address the C10k problem, which is the challenge of handling ten thousand\\nconcurrent connections. Over the years, it has evolved to serve a variety of\\nroles including a reverse proxy, load balancer, mail proxy, and HTTP cache.\"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"Nginx is the fastest responder in this test, will overall solid scores.\\nDefinetly a good choice if possible, the data indicates it provides stable and\\nconsistent delivery. On avarage he was still 17.67%\", \"*\", \" behind Actix framework,\\nmaking it second best choice for serving static content\")), mdx(\"div\", {\n    className: \"chartGridHolder\"\n  }, mdx(FunnelTime, {\n    data: nginxData,\n    mdxType: \"FunnelTime\"\n  }), mdx(ScatterChart, {\n    data: nginxData,\n    fill: '#fe5218',\n    mdxType: \"ScatterChart\"\n  })), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"* slower % calculation\\n\\nDifference = Score - Base = 599 ms - 509.040587 ms = 89.959413 ms\\nPercentage slower = (Difference / Base) * 100 = (89.959413 ms / 509.040587 ms) * 100 \\u2248 17.67 %\\n\")), mdx(\"h4\", {\n    \"id\": \"express\"\n  }, \"Express\"), mdx(\"p\", null, \"Express.js, often referred to simply as Express, is the most popular backend web\\napplication framework for Node.js. Renowned for its minimalist and unopinionated\\napproach, it offers a robust set of features for web and mobile applications.\"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"Express times are much more hectic and spread out than the nginx and actix,\\nwith a 25.65% slower times than rust based actix.\")), mdx(\"div\", {\n    className: \"chartGridHolder\"\n  }, mdx(FunnelTime, {\n    data: expressData,\n    mdxType: \"FunnelTime\"\n  }), mdx(ScatterChart, {\n    data: expressData,\n    fill: '#ff6c3d',\n    mdxType: \"ScatterChart\"\n  })), mdx(\"h4\", {\n    \"id\": \"restify-httpsrestifycom\"\n  }, \"Restify (\", mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"https://restify.com/\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"https://restify.com/\"), \")\"), mdx(\"p\", null, \"Restify.js is a Node.js web service framework designed for building efficient\\nand scalable RESTful web services. It is optimized for introspection and\\nperformance, making it a suitable choice for production use at scale. Restify.js\\nfocuses on providing a semantically correct implementation of REST, adhering\\nclosely to HTTP and REST specifications, which is reflected in its support for\\nRFC standards throughout its codebase and documentation.\"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"The last runner on the list is restify which is 27.16% slower than actix. He\\nreally tried to beat express but in the end express image and average delivery\\nwas 1.51% slower than express\")), mdx(\"div\", {\n    className: \"chartGridHolder\"\n  }, mdx(FunnelTime, {\n    data: restifyData,\n    mdxType: \"FunnelTime\"\n  }), mdx(ScatterChart, {\n    data: restifyData,\n    fill: '#ff6c3d',\n    mdxType: \"ScatterChart\"\n  })), mdx(\"h3\", {\n    \"id\": \"final-thoughts\"\n  }, \"Final thoughts\"), mdx(\"p\", null, \"It looks like the best choice for serving static files is the Actix framework,\\nbut I would not be quiting on nginx just yet. Ngnix is still a great option\\nespecially with its build in features like load balancers, reverse proxy and\\nothers. If you are not building a rust based application the Nginx is the way to\\ngo.\"), mdx(\"p\", null, \"Node frameworks showed significantly weaker scores than the \\u201Cnative\\u201D drivers,\\nthis was especially seen on the large image transfers. In my opinion if the\\nperformance is what you are looking for the you should try to use underlying\\nservices for serving static content.\"), mdx(\"p\", null, \"The raw test data can be accessed at \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://github.com/MassivDash/staticRace\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"https://github.com/MassivDash/staticRace\")));\n}\n;\nMDXContent.isMDXComponent = true;","tech":["Rust","Nodejs"],"category":"Post","appDescription":"Sever Analysis","hero":{"full":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAEcklEQVQ4y21V+0+bVRjuv0BGyKD3q7SFQoECZcBKC1RaGu5k3MM9boAoYUEGrpbbSgQkwEQ3mFwyjMMIGIhhCwEdQX+BgCLhMi4rMf4Xj+c90OgSf3hy3nO+r8/7vO/7fKcChUIBtVqN8PBwxMbGIikpCVarFfn5+cjMzER2djZKS0tQUV7O44KCAv6MYpfLBafDyd/Ly8tFWVkZBHK5HDKZDBqNBgaDAVFRUTCbzZw4MTERNpsN6enpSElJgcViQVpaGt9TUnqWlZXFyPLQ0NCAwYEBCKRSKSQSCUipVqvlpDExMYiOjubwqyZyWhMSEviZ0WjkCVpaWjA0NIS5uTmsra1BQGR+qFQqTqrT6aDX6zk5tYJAZ7SPj49HOSufFJPKvr4+zM/PY3t7m4MrFIvFEIlEvHRSqlQqeV+pDUREhKSG2uFwONDf34/Z2VksLCxgZ2cHPp8PBwcHHAIiEwqFHBRTAuorKQ4MDER3dzf29vYwOTmJkZERXh6p6+rqwtbWFjY3N3F2doaTk5MrQlJGRH5i2t+4cYM3mkiSk5NRVFTEe/TL69dYXV1FW1sbh9PpRGNjI5aWlnB+fs4TC/xkpMhfNpVMvWxtbeVNJ9KcnBzY7Xa0t7djfHycW4XaMjU1hY6ODqysrODw8PBqKEQSFBTEbbC4uIjHY49RWVnJS6tia11dHZ8wTba5uZknKi0t5S3p7e3F8vIyH8zp6em/UyaVpIxUDA4O4tXLl9zEZF7yHk2XkhIZqaJk9fX1PJHb7eYlHx0dXRH6p0yrf7K5ubmoqa7mkyRSMq7H40FGRgbrWwNP0NnZyXtbWFjI1/39/f/YhiE4OJhnLi+vQEBAAGprazE6Osr7NvzFMCYmJjipyWRiVQxhZmYGx2y6f7LpUlUkQiBjFlGrNczIYbClpsLD7FBUXIzqmhrcvXcPxSUlaGxqgtfbjzJm6CdPnmKQWaeJna2vb2BqepopbmJfUhJuM68KVHIp3lPJYTZFo+OT+/hp+Ue4Ox+g+E4BNn9ex8baK/ww/x2qKsrw9fgY6murkOmww2ZJRkZ6KowGPSLCdLDeTkK2y8kI66chrnoG3YfzeP/z3+Aa3sadp4cIvfscqb0bqHn+Fo6BXxFzfxERH30Pel9ZNwVF7TdQ1DyD5oNZ6Bu/RXjzCxg/fgGBwnuJW1/+DfPYX9D2n0HrPYXe+wZKrw9CzymCOg8R8tkbSHouOOSPLiH3XoF+S3tZnw9SBnkPs42i+xjp4xfImfTBMnYB+1dvkTV5Ce2jEyi6T6DqZeQ9FB+/A3nX0TWuY3am9LBPT+n+HaKOXQgf7ELy6R7ELKa9nMXyh2x9uAfF/4B+9y7+gMa9C4HBdAs6YxyHNjIWKl0kFKEGSNVhECq0ECt1kGrCIVbpGPSQqPXseQR/Nyw6AZFxyTAlWmG22GGxuyAI04VCG6qBWsWuLTm7vmTsyxGzS0IYDFFIMIQhN68QfBPi6zOJKAQK5o5QDfvrYBM2RrJ7Ms6ENJsV/wBuwUQ2oclRXAAAAABJRU5ErkJggg==","aspectRatio":1,"src":"/static/8419c26418bf950f0604335b2cb7b494/a1946/cover2.png","srcSet":"/static/8419c26418bf950f0604335b2cb7b494/5b37e/cover2.png 236w,\n/static/8419c26418bf950f0604335b2cb7b494/49058/cover2.png 472w,\n/static/8419c26418bf950f0604335b2cb7b494/a1946/cover2.png 944w,\n/static/8419c26418bf950f0604335b2cb7b494/6050d/cover2.png 1200w","srcWebp":"/static/8419c26418bf950f0604335b2cb7b494/99fbb/cover2.webp","srcSetWebp":"/static/8419c26418bf950f0604335b2cb7b494/77392/cover2.webp 236w,\n/static/8419c26418bf950f0604335b2cb7b494/1f177/cover2.webp 472w,\n/static/8419c26418bf950f0604335b2cb7b494/99fbb/cover2.webp 944w,\n/static/8419c26418bf950f0604335b2cb7b494/9000d/cover2.webp 1200w","sizes":"(max-width: 944px) 100vw, 944px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M0%20143v143h17l16-1h1l11%201h9l3-5c3-4%203-4%201-4s-2%200%200-3l4-3%201-1%207-8%206-7v-1l2-1c1%201%203-2%202-3-1-2%202-1%203%201%203%202%207%204%207%202l3-1c3%200%203%200%202-1l-1-2-1-1-2%201c-2%203-3%201-1-2l4-10%201-1v2h1l5-2h3l-2-2c-1-2-2-2-4-1-2%202-5%200-3-3v-9c-1-1-1-1%201-2h1v5c0%203%200%204%203%201h3l4%201c4-1%207%202%205%204l-4%208-5%207-1%203%202%2010c1%207%203%2010%2013%2019s10%209%2023%209h11l-4-5-4-5c-1%200-12-11-10-11l-3-2c-1-2-3-3-3-2l-1-1%201-5%201-2%203-4c2-4%204-5%204-2s1%203%202%204%201%201%201-1%200-2%201%200l2%202c2%201%202-2%200-6-1-2%200-3%201-3v1c0%202%209%2012%2015%2016%207%204%2011%204%2021-1l8-4%203%203c2%202%203%203%204%201s5%200%205%203l1%201v1c-2%202-2%202%201%205%205%203%205%208%202%209l-2%201-1%201h-1l-1%201h-2l-3%203-3%202h11c10%200%2019-2%2010-2-3%200-4%200-3-1%202%200%200-2-2-2l-2-1c0-2%204-3%206-3%203%201%208-3%209-5l1-3v-1l-3-3-1-2-2%202-4%202c-1-1-1-1%201-2%203-2%203-3-1-3l-3%201%203-1%203-2h-3l-5-1c-2-1-2-1%200-2%204-2%204-3-1-2h-4l2-1c4-2%204-3%201-3-2%201-2%201%200-1%201-1%201-1-2-1-9%202-9%202-5%200l3-3-2%201h-3c-1%200-1-1%201-1l2-2-4%201h-5c-1-1-1-1%201-2s2-1-1-1-5-3-2-3l-1-1c-2-1-2-1%200-1s3-1%200-3c-1-2-1-2%204-2l9%201c3%202%203%202%203%200%200-3-1-3-7-4-10-2-11-2-10-3h1l1-1-1-1v-6l4%202c2%203%2010%204%2010%201a3333%203333%200%20005-3c2-1%202-1%201%202s2%2013%205%2015l1%203c-1%204%205%208%2015%2011h7c1%200%202%202%202%208%201%207%205%2012%209%2012l3%201%201%201%201-2%201-3%201-9-1%202-1%202-1-1c1-1%200-2-1-2v-12c-1-3%200-6%201-6l1-3c0-3-3-5-7-7-3-1-3-1-2%202l-1%202v6l-4-3%202-1v-1c-3-1-7%203-5%204v1h-2c0%202%200%202-1%201l-3-1c-2%201-7-1-6-2l-1-1c-2%200-6-6-6-8s-1-3-3-3c-3-1-2-1%203-2%201-1%202-3%200-3l-4-2-3-3%204-1c9-1%2020%202%2019%205%200%204%202%202%202-2l6-13%202%201c1%202%202%202%202%201h1l1%202%203%206%202%205c0%203%203%208%205%208l5%205c3%204%2013%2011%2018%2012%202%201%203%205%201%208l-1%203c1%201%200%206-1%206v-1l-4-1c-4%200-5%201-6%203%200%203%200%203-2%203l-3%201-1%201-3%201-8%204c-3%200-12%204-12%205l-1%201h-3l-6%202c-13%205-14%205%2015%205a215%20215%200%200030-1c-1%201%2015%201%2042%201a373%20373%200%200045-1l22%201h22V143c0-79%200-142-1-141%200%202-1%203-5%205a1500%201500%200%2000-6%201l1-2-2%202c-2%202-3%201-2-1l1-1c1%200%206-4%205-5h-18l-2%201h-1c1-2%200-2-4-2s-5%200-4%201v3h-3l1-1c3-2-4-2-30-3l-27%201h-1l-22-1h-20l-4%205c-4%205-5%204-2-1l3-4h-14a69%2069%200%2000-18%201h-3l-3%202-8%203c-5%203-8%204-4%201s1-2-5%202c-7%203-9%204-8%202s0-2-2%200l-3%201c-1-1%202-4%208-8l5-4a714%20714%200%2000-63%201L70%200H0v143M395%2017c-5%208-4%207-7%206h-2l-1%201c0-1-3%201-3%204-1%201-2%202-3%201v1l-1%203-2%202-1%201-2%202h-2l-2%201c-2%203-5%204-4%201h-2c-3%202-4%202-4%201%200-2%200-2-1-1h-5v-2c-1-1-1-2%201-3l2-3%203-2c1-1%202-1%201-2-2%200-8%203-6%204l1%201c-4%200-7%201-7%202l-1%201-1%201v4l-2%202-3%202-2%203-2%205c1%204-1%206-3%205-1-1-2-1-2%202l-2%202v-3l-1-2h-2v-2c-1%200-1-7%201-7l1-3c0-1%201-3%204-4l4-3c0-2-2-1-7%202-5%202-7%201-2-2l2-2c-2-1-7%201-12%205-4%203-4%204%201%202%203-2%206-2%206%201%200%201-6%2013-8%2014v4l4-3c4-4%204-3%204%202%200%203%200%203%203%203%203-1%202%200-3%203l-4%204-1%201c0-1-5%201-9%204l-8%206-4-2h-9c-4%201-5%201-10-2-11-6-23%201-28%2015v7l2%205c0%204%200%204-5%208-6%203-8%204-6%201l1-2%202-2c3-1%205-4%204-4v-3l-1-2v-2h-6c-2%201-2%202-5%202-2%200-2%200-1%202%201%201%201%201-1%201h-1l-1%204v3l1%202-1%201v1h-1l-2-4c1-1%200-2-1-2l-5-6c-5-8-8-8-22-2-6%202-6%202-11%201-7-3-12-2-18%200-8%204-11%2010-6%2014%201%201%201%201-2%202h-2l3%202%209%201%205%201%206%202c7%200%2014%206%2013%2010%200%202%200%202-1%201s-1%200-1%203l-1%207%201%202%202-1%202-1v2c0%202%200%202%202%200l2-3%201-3%203-4c0-4%203-9%204-9l-1%204c-2%203-4%2013-2%2010l3-1c2%200%202-1%202-3v-2l1%202%201%203v-3c1-2%201-2%202-1l2%201c1-1%201%200%201%201l2-1c1-2%201-2%201%202l-1%204%201-3%202-3v3c0%203%200%203%202%202%202-3%202-2%202%201-1%203%200%203%2010%204l9%203c5%202%205%201%205-2l1-3v4c0%204%200%204%202%204l1%201%201%201v1l2%201%201%201c1%202%204%202%205%201h1l-1%202c-2%202-2%203%200%203l2-1c1-1%202-1%203%202%203%202%203%203%201%204s-3%200-2-2h-1l-1-1c1-2-1-1-2%201-2%201-2%204-1%205l1-1%202-1v1l1%201c2-1%205%200%204%201l2%201-1%202-2%202%202%201h4c3-1%207%201%205%203h1c2-2%201%201-1%202s-2%202-1%202v1c-1%201%200%201%201%201%202%201%203%201%202%202l1%201%201%201%201%201c2%200%202%200%201%201v2l2-1%202%201c2%204%202%203%201-1-3-5-2-6%201-3s3%201-2-4l-5-5c-2%200-2-1-2-3l-1-5-2-9c0-10-2-14-5-13-3%200-4-1-3-6%200-4%202-6%202-2l1%202%201-1c-1-1%204-3%205-2l1-1h2l2-1%201-3%201%201v2l1-2v-6l-1-5v-2l-1-4v-1l2%202%201%203v-3l2-2%201%201c-1%202%201%204%203%205%202%200%202-1%201-2v-8l1%202%202%204%201%203v-4l-1-4v-2l1-2h1l2%201c2-2%203-1%202%202l1%203%201-1v-3l1%201%204%202c3%201%207%202%209%204%206%204%209%205%209%203l1-2v3c-1%202-1%202%201%202h1l1%201h1l1%201h1l1%201%201-1h1l-2%204-2%202h1c2-2%203-1%203%201%201%202%202%202%203%202l5%201v3c0%201%201%202%203%202%203%200%203%200%202-1v-1c2%200%203%202%203%204l-1%201-2-1h-1l-1%201-1%201v1l4%201c2%200%203%200%202%201h-3l-4%201c-1%201-1%201%201%201l7%201c3%202%203%202%202%203-2%201-1%202%201%201%202%200%200%2010-2%2011l-2%201c-1%202-3%200-3-3l-3-5-2-2v3l-1%204c-1%200-3-4-3-10%200-4%200-5-4-9l-4-5-11-13c-2-1-7%200-6%202l-2%204-1-3c0-3%200-3-4-3-3%200-4%200-4%202v2h2c1-1%201-1%202%201s0%203-6%202c-2%200-3%200-2%201%202%202%2013%201%2018-2l2-1a111%20111%200%2001-6%2013l3%202c1%201%201%201-1%201l-5%203c-4%203-4%205-1%203%204-2%205-2%203%200v1l2-1%201-1v3c0%202%201%203%203%203l1%201-3%203c-3%202-3%202-1%202h4l3%201-2%202-2%202h2c2%200%202%200%201%201l-2%201h9c3-2%203-2%203%200l2%201c2%200%204%202%202%203l-2%201h2l1%201-3%202c-3%200-4%202-1%202h5c-2-2-2-2%200-2s2%201%202%203%200%203-1%202c-3-1-3%202%200%204%203%203%204%206%201%208-2%201-1%205%202%204h3l2-4c0-5%201-6%201-3l3%203c2%201%202%201%201-2v-2l2%202%203%206c1%203%201%203%202%201%201-1%201%200%201%204%200%2010-7%2012-13%203-2-3-3-4-4-2-3%204-10%205-14%203l-9-9-6-12-2-2c0-1-2-4-5-6-4-4-4-4-5-2l-2%206-4%2010v5c2%202%202%205%202%208-1%204-1%204%201%203%201-2%201-2%202-1%200%202%201%202%202-1%202-3%202-3%202-1l-1%203v2c1%201%201%201-1%201-3-1-6%202-4%205v2c-1%201-1%201-1-1l-1-2-2-1h-3c-4%202-8%201-14-3-3-1-5-3-5-4l-2-4c-3-4-3-7-3-16%200-7%200-7-7-15l-3-5c0-3-1-2-2%201%200%205-2%2010-3%209-1%200-2-1-1-2l-2-3-1-3-2-4c-3-4-3-6-2-10%201-3%201-3-3-5-4-1-5-1-4%201v2l-1-2c0-1-8-1-9%201h-1c0-2-3-1-4%201-2%203-1%204%207%204%204%201%206%201%209-1%204-2%206-1%202%202-1%202-3%205-3%209l-2%201-2%202c-1%202-1%202%202%203%202%200%202%201%201%202v1l1%201c0%202%202%203%204%202%201-1%201-1%201%201v4c-2%200-2%202-2%202l-3%204-2%202%205-1c3%200%204%200%202%201s-2%201%202%201l6%203c3%202%203%201%203-5l1-6c2%200%2010%2023%2010%2031l1%202%202-8v-1c2%200%203%203%203%209%201%205%201%206%203%204%201-1%201-1%201%201-2%204-2%205-1%205l2%201c0%202%202%201%203-1v-5c-3-4-2-6%200-3%202%202%203%208%202%208-1%201%201%2013%202%2013%202%200%202-4%201-6v-1c3%200%203%206%200%208-1%201-1%204%201%204l1%201h-2l-3%201h-2l-4-1-2-1h-4c-2%202%203%205%205%204%204-1%201%202-6%206-10%204-8%205%201%201%206-3%209-4%2011-3%201%200%202%200%201-1%200-2%201-3%208-4h6l7-1h3l-2%201-1%201h-4c-2%201-2%201%201%201%202%200%202%200%201%201h-6l-1%201h-4c-1%201-1%201%201%202%201%202%201%202-3%204-6%203-2%202%206-1l9-4%207-4%206-3%201-1h2l6-1%2010-2%201%201v-1c0-2%201-4%208-6l7-2c1%202%203%200%203-3l12-6%2024-14-17%209-18%208c-2-3%2010-11%2025-19l10-4v-99a644%20644%200%20000-105c-1-1-2%200-5%205m-41%2041h-3l-1%202c0%202%200%202-1%201-1-2-1-2-1%201l-4%202-3-1-1-1-1%201v3c-1%201-1%201%202%201l2%201h3c1-1%202%200%204%202%202%203%203%203%205%202l2-2-1-1-2-3c-1-3-1-4%201-5%201%200%202-2%201-3h-2m-93%2032c-5%202-8%205-8%207s0%202%201%201c1-2%201-2%201%201l1%205c1%202%201%202%201%200l1-2%201%202v5h-1l2%202%201%202c-1%201%201%204%203%206%203%204%204%205%208%204%205%200%2012-4%2010-5-1-1-1-1%201-1l3-9c0-2%201-3%202-3%202-1%202-1%201-2-1%200-3-2-3-5-2-4-3-6-6-6v1h-5c-2%200-2-2%200-2l1-1h-15m0%2033l-5%209-1%201c-2%200-2%202-1%204%202%203%205%203%204%200l1-2v2h1c1-1%202%201%201%203l2%202%206%204%203%204%203-3%202-3-2-4-2-4h2c2%200%203%201%203%202l3%204c2%202%202%202%203%201v-4c-1-2-2-2-2-1h-2c-2-2-2-3%201-3%202-1%204-2%204-4%201-2%201-2-2-1-7%201-8%201-8%203-2%203-4%203-3%200l-1-1-1%203c0%202%200%202-1%201h-2c0%202-2%203-2%201l-1%201c-1%201-1%201-1-1l-3-3-2-2c0-2%205-6%206-6%202%200%202-1%201-3s-2-2-4%200m-123%205c-5%202-8%205-10%208-1%204-1%204%201%203l1%201%205%201h6l6%202c3%200%204%200%203%202h1v1l1%203v-2h2l3%202v2l-2%205c0%204-3%209-7%2010l-3%202%203%201c3%202%203%202%206%200l4-1c2%201%205%200%205-2s0-2-1-1c-2%201-2%201-2-1l1-2%202-3c1-2%201-2%201%200s0%202%202%201l2-2%201-6v3l1%202%201%202%201-1c2-2%203-2%203%201l2%202%205%205h-5l-1-1c0%201-1%202-2%201-1%200-2-1-1-3%200-3%200-3-1%201-2%204-1%207%200%206l1%201-1%201c-1%200%200%204%203%206%202%202%205%202%203-1l-1-10%201%205c1%205%201%205%204%204%201-1%201-1-1-2l-2-4v-3l3%202c2%202%203%202%203%201v-2c-2-2-2-2%201-2l2-2v-3c2-1%202-2%200-3-2-2-1-3%202-1h2l-1-1h1l4-1-2-1h-1l2-2%201-1%201-3-3%202c-3%203-10%206-10%204l-2-1c-2%200-2%200-1%201%202%200%205%205%203%205l-2-2-2-2%201%202c0%202%200%202-3-1-2-2-3-3-3-1l-1-2c-1-3-2-6-4-7-4-5-7-10-7-12s0-2-1%200c-1%203-1%201-1-3%200-3%200-3-1-2-2%201-3%201-6-1-4-2-12-3-16%200m65%2029c-2%200-4%202-5%203%200%202-2%203-2%203l1%202%202%201%201%201h1c1-2%200-2-1-2-2%200-2%200-1-1v-2l2-1v1c-1%201-1%201%201%201h3l-2%201v1h2c0-1%202%200%203%202l3%203-1-5c-1-8-3-10-7-8m-104%205l-4%201h-5c-5-1-10%200-15%205-4%204-5%208-2%207l3%201%204%203%205%201%203%201c4%200%209%205%208%209%200%202%200%202%201%201%203-3%204-1%201%202l-2%204c0%202%204-2%205-4l1-2c1%201%202-1%204-2%202-3%203-3%203%202%200%202%200%203%201%202l5%202%202%201c2%200%202%200%201%201-2%202-2%202%200%202l1%202%203%202c3%202%204%203%203%204-2%201%201%202%207%201%204%200%205%200%204%201s-1%201%201%201%202-1%202-4l1-3v-1l-2-2h1c0%202%202%201%202-1l-4-5c-4-4-4-6%200-2%206%205%208%206%208%204h1c2%201%201-2-1-4s-3-3-2-5l-1-2-1-1v-2l-1-1c1-2-1-4-14-12l-11-8h-7l-9%201m59%2030l-2%205-2%2013-2%2015c1%204%200%206-4%203v-1c1%201%202%200%202-4%200-5-4-7-7-4v5c-2%203-2%203%200%203l5%202c2%202%203%203%204%202h6l4%201h-5c-4%200-7%202-2%202%202%200%202%200-1%202l-2%201%205-1%204-1-2%202-3%201%203-1a627%20627%200%20007%200v3l-2%201h5c0%202-6%204-9%204l-4%201%202%201%201%201h2l2-2h7l-1%201c-1%200-4%207-3%209%200%203%203%201%204-4l1-4v10l1-6c0-4%201-4%201-2l1%204%201-5v-3l1%206c0%203%200%203%201%202l1-5v-2l1%203h1l-1-6c-3-8-1-27%203-31l1-6c0-4%200-4%201-3h2v-2l-1-2c1%200%200-3-2-5-2-4-3-4-3-3l1%203v6l-4%201c-4%202-6%201-6-4%201-3%201-3-2-5-4-1-5-1-3%201v2c-3%202-6%200-7-4h-1m50%2010c-1%200%200%202%202%202l2%202-4%201c-5%201-7%202-7%204s0%202-1%201c0-2-1-2-2-2l-3%201v2l2%201c1-1%201%200%201%201l2%202%201-2%202-3%2011-1h12l-1-1h-2l-1-1v-2l1-1h2c1-2%200-3-4-4-2-1-2-1-1%201%202%203%201%205-1%203-3-4-10-6-11-4m-99%2045l-2%202h2c1-1%202%200%202%201l-1%201v3c-1%201%200%201%202%201%201%200%202%200%201%201-1%200-1%201%201%202l1%201-1%201-2%202-2%202%203-1h2v1l2-1%201-13c1-5-5-7-9-3m290%20103v10h-18a20965%2020965%200%2001-87%201%203134%203134%200%2000-174%200l-60-1H0v5l1%206v1l-1%2014v14h96a1046%201046%200%200098-1%204136%204136%200%2000206-1c1%201%201-2%201-28-1-27-2-40-2-20'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"regular":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAEcklEQVQ4y21V+0+bVRjuv0BGyKD3q7SFQoECZcBKC1RaGu5k3MM9boAoYUEGrpbbSgQkwEQ3mFwyjMMIGIhhCwEdQX+BgCLhMi4rMf4Xj+c90OgSf3hy3nO+r8/7vO/7fKcChUIBtVqN8PBwxMbGIikpCVarFfn5+cjMzER2djZKS0tQUV7O44KCAv6MYpfLBafDyd/Ly8tFWVkZBHK5HDKZDBqNBgaDAVFRUTCbzZw4MTERNpsN6enpSElJgcViQVpaGt9TUnqWlZXFyPLQ0NCAwYEBCKRSKSQSCUipVqvlpDExMYiOjubwqyZyWhMSEviZ0WjkCVpaWjA0NIS5uTmsra1BQGR+qFQqTqrT6aDX6zk5tYJAZ7SPj49HOSufFJPKvr4+zM/PY3t7m4MrFIvFEIlEvHRSqlQqeV+pDUREhKSG2uFwONDf34/Z2VksLCxgZ2cHPp8PBwcHHAIiEwqFHBRTAuorKQ4MDER3dzf29vYwOTmJkZERXh6p6+rqwtbWFjY3N3F2doaTk5MrQlJGRH5i2t+4cYM3mkiSk5NRVFTEe/TL69dYXV1FW1sbh9PpRGNjI5aWlnB+fs4TC/xkpMhfNpVMvWxtbeVNJ9KcnBzY7Xa0t7djfHycW4XaMjU1hY6ODqysrODw8PBqKEQSFBTEbbC4uIjHY49RWVnJS6tia11dHZ8wTba5uZknKi0t5S3p7e3F8vIyH8zp6em/UyaVpIxUDA4O4tXLl9zEZF7yHk2XkhIZqaJk9fX1PJHb7eYlHx0dXRH6p0yrf7K5ubmoqa7mkyRSMq7H40FGRgbrWwNP0NnZyXtbWFjI1/39/f/YhiE4OJhnLi+vQEBAAGprazE6Osr7NvzFMCYmJjipyWRiVQxhZmYGx2y6f7LpUlUkQiBjFlGrNczIYbClpsLD7FBUXIzqmhrcvXcPxSUlaGxqgtfbjzJm6CdPnmKQWaeJna2vb2BqepopbmJfUhJuM68KVHIp3lPJYTZFo+OT+/hp+Ue4Ox+g+E4BNn9ex8baK/ww/x2qKsrw9fgY6murkOmww2ZJRkZ6KowGPSLCdLDeTkK2y8kI66chrnoG3YfzeP/z3+Aa3sadp4cIvfscqb0bqHn+Fo6BXxFzfxERH30Pel9ZNwVF7TdQ1DyD5oNZ6Bu/RXjzCxg/fgGBwnuJW1/+DfPYX9D2n0HrPYXe+wZKrw9CzymCOg8R8tkbSHouOOSPLiH3XoF+S3tZnw9SBnkPs42i+xjp4xfImfTBMnYB+1dvkTV5Ce2jEyi6T6DqZeQ9FB+/A3nX0TWuY3am9LBPT+n+HaKOXQgf7ELy6R7ELKa9nMXyh2x9uAfF/4B+9y7+gMa9C4HBdAs6YxyHNjIWKl0kFKEGSNVhECq0ECt1kGrCIVbpGPSQqPXseQR/Nyw6AZFxyTAlWmG22GGxuyAI04VCG6qBWsWuLTm7vmTsyxGzS0IYDFFIMIQhN68QfBPi6zOJKAQK5o5QDfvrYBM2RrJ7Ms6ENJsV/wBuwUQ2oclRXAAAAABJRU5ErkJggg==","aspectRatio":1,"src":"/static/8419c26418bf950f0604335b2cb7b494/3ddd4/cover2.png","srcSet":"/static/8419c26418bf950f0604335b2cb7b494/078a8/cover2.png 163w,\n/static/8419c26418bf950f0604335b2cb7b494/e56da/cover2.png 327w,\n/static/8419c26418bf950f0604335b2cb7b494/3ddd4/cover2.png 653w,\n/static/8419c26418bf950f0604335b2cb7b494/c5cc7/cover2.png 980w,\n/static/8419c26418bf950f0604335b2cb7b494/6050d/cover2.png 1200w","srcWebp":"/static/8419c26418bf950f0604335b2cb7b494/0acdf/cover2.webp","srcSetWebp":"/static/8419c26418bf950f0604335b2cb7b494/ac59e/cover2.webp 163w,\n/static/8419c26418bf950f0604335b2cb7b494/7660b/cover2.webp 327w,\n/static/8419c26418bf950f0604335b2cb7b494/0acdf/cover2.webp 653w,\n/static/8419c26418bf950f0604335b2cb7b494/75470/cover2.webp 980w,\n/static/8419c26418bf950f0604335b2cb7b494/9000d/cover2.webp 1200w","sizes":"(max-width: 653px) 100vw, 653px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M0%20143v143h17l16-1h1l11%201h9l3-5c3-4%203-4%201-4s-2%200%200-3l4-3%201-1%207-8%206-7v-1l2-1c1%201%203-2%202-3-1-2%202-1%203%201%203%202%207%204%207%202l3-1c3%200%203%200%202-1l-1-2-1-1-2%201c-2%203-3%201-1-2l4-10%201-1v2h1l5-2h3l-2-2c-1-2-2-2-4-1-2%202-5%200-3-3v-9c-1-1-1-1%201-2h1v5c0%203%200%204%203%201h3l4%201c4-1%207%202%205%204l-4%208-5%207-1%203%202%2010c1%207%203%2010%2013%2019s10%209%2023%209h11l-4-5-4-5c-1%200-12-11-10-11l-3-2c-1-2-3-3-3-2l-1-1%201-5%201-2%203-4c2-4%204-5%204-2s1%203%202%204%201%201%201-1%200-2%201%200l2%202c2%201%202-2%200-6-1-2%200-3%201-3v1c0%202%209%2012%2015%2016%207%204%2011%204%2021-1l8-4%203%203c2%202%203%203%204%201s5%200%205%203l1%201v1c-2%202-2%202%201%205%205%203%205%208%202%209l-2%201-1%201h-1l-1%201h-2l-3%203-3%202h11c10%200%2019-2%2010-2-3%200-4%200-3-1%202%200%200-2-2-2l-2-1c0-2%204-3%206-3%203%201%208-3%209-5l1-3v-1l-3-3-1-2-2%202-4%202c-1-1-1-1%201-2%203-2%203-3-1-3l-3%201%203-1%203-2h-3l-5-1c-2-1-2-1%200-2%204-2%204-3-1-2h-4l2-1c4-2%204-3%201-3-2%201-2%201%200-1%201-1%201-1-2-1-9%202-9%202-5%200l3-3-2%201h-3c-1%200-1-1%201-1l2-2-4%201h-5c-1-1-1-1%201-2s2-1-1-1-5-3-2-3l-1-1c-2-1-2-1%200-1s3-1%200-3c-1-2-1-2%204-2l9%201c3%202%203%202%203%200%200-3-1-3-7-4-10-2-11-2-10-3h1l1-1-1-1v-6l4%202c2%203%2010%204%2010%201a3333%203333%200%20005-3c2-1%202-1%201%202s2%2013%205%2015l1%203c-1%204%205%208%2015%2011h7c1%200%202%202%202%208%201%207%205%2012%209%2012l3%201%201%201%201-2%201-3%201-9-1%202-1%202-1-1c1-1%200-2-1-2v-12c-1-3%200-6%201-6l1-3c0-3-3-5-7-7-3-1-3-1-2%202l-1%202v6l-4-3%202-1v-1c-3-1-7%203-5%204v1h-2c0%202%200%202-1%201l-3-1c-2%201-7-1-6-2l-1-1c-2%200-6-6-6-8s-1-3-3-3c-3-1-2-1%203-2%201-1%202-3%200-3l-4-2-3-3%204-1c9-1%2020%202%2019%205%200%204%202%202%202-2l6-13%202%201c1%202%202%202%202%201h1l1%202%203%206%202%205c0%203%203%208%205%208l5%205c3%204%2013%2011%2018%2012%202%201%203%205%201%208l-1%203c1%201%200%206-1%206v-1l-4-1c-4%200-5%201-6%203%200%203%200%203-2%203l-3%201-1%201-3%201-8%204c-3%200-12%204-12%205l-1%201h-3l-6%202c-13%205-14%205%2015%205a215%20215%200%200030-1c-1%201%2015%201%2042%201a373%20373%200%200045-1l22%201h22V143c0-79%200-142-1-141%200%202-1%203-5%205a1500%201500%200%2000-6%201l1-2-2%202c-2%202-3%201-2-1l1-1c1%200%206-4%205-5h-18l-2%201h-1c1-2%200-2-4-2s-5%200-4%201v3h-3l1-1c3-2-4-2-30-3l-27%201h-1l-22-1h-20l-4%205c-4%205-5%204-2-1l3-4h-14a69%2069%200%2000-18%201h-3l-3%202-8%203c-5%203-8%204-4%201s1-2-5%202c-7%203-9%204-8%202s0-2-2%200l-3%201c-1-1%202-4%208-8l5-4a714%20714%200%2000-63%201L70%200H0v143M395%2017c-5%208-4%207-7%206h-2l-1%201c0-1-3%201-3%204-1%201-2%202-3%201v1l-1%203-2%202-1%201-2%202h-2l-2%201c-2%203-5%204-4%201h-2c-3%202-4%202-4%201%200-2%200-2-1-1h-5v-2c-1-1-1-2%201-3l2-3%203-2c1-1%202-1%201-2-2%200-8%203-6%204l1%201c-4%200-7%201-7%202l-1%201-1%201v4l-2%202-3%202-2%203-2%205c1%204-1%206-3%205-1-1-2-1-2%202l-2%202v-3l-1-2h-2v-2c-1%200-1-7%201-7l1-3c0-1%201-3%204-4l4-3c0-2-2-1-7%202-5%202-7%201-2-2l2-2c-2-1-7%201-12%205-4%203-4%204%201%202%203-2%206-2%206%201%200%201-6%2013-8%2014v4l4-3c4-4%204-3%204%202%200%203%200%203%203%203%203-1%202%200-3%203l-4%204-1%201c0-1-5%201-9%204l-8%206-4-2h-9c-4%201-5%201-10-2-11-6-23%201-28%2015v7l2%205c0%204%200%204-5%208-6%203-8%204-6%201l1-2%202-2c3-1%205-4%204-4v-3l-1-2v-2h-6c-2%201-2%202-5%202-2%200-2%200-1%202%201%201%201%201-1%201h-1l-1%204v3l1%202-1%201v1h-1l-2-4c1-1%200-2-1-2l-5-6c-5-8-8-8-22-2-6%202-6%202-11%201-7-3-12-2-18%200-8%204-11%2010-6%2014%201%201%201%201-2%202h-2l3%202%209%201%205%201%206%202c7%200%2014%206%2013%2010%200%202%200%202-1%201s-1%200-1%203l-1%207%201%202%202-1%202-1v2c0%202%200%202%202%200l2-3%201-3%203-4c0-4%203-9%204-9l-1%204c-2%203-4%2013-2%2010l3-1c2%200%202-1%202-3v-2l1%202%201%203v-3c1-2%201-2%202-1l2%201c1-1%201%200%201%201l2-1c1-2%201-2%201%202l-1%204%201-3%202-3v3c0%203%200%203%202%202%202-3%202-2%202%201-1%203%200%203%2010%204l9%203c5%202%205%201%205-2l1-3v4c0%204%200%204%202%204l1%201%201%201v1l2%201%201%201c1%202%204%202%205%201h1l-1%202c-2%202-2%203%200%203l2-1c1-1%202-1%203%202%203%202%203%203%201%204s-3%200-2-2h-1l-1-1c1-2-1-1-2%201-2%201-2%204-1%205l1-1%202-1v1l1%201c2-1%205%200%204%201l2%201-1%202-2%202%202%201h4c3-1%207%201%205%203h1c2-2%201%201-1%202s-2%202-1%202v1c-1%201%200%201%201%201%202%201%203%201%202%202l1%201%201%201%201%201c2%200%202%200%201%201v2l2-1%202%201c2%204%202%203%201-1-3-5-2-6%201-3s3%201-2-4l-5-5c-2%200-2-1-2-3l-1-5-2-9c0-10-2-14-5-13-3%200-4-1-3-6%200-4%202-6%202-2l1%202%201-1c-1-1%204-3%205-2l1-1h2l2-1%201-3%201%201v2l1-2v-6l-1-5v-2l-1-4v-1l2%202%201%203v-3l2-2%201%201c-1%202%201%204%203%205%202%200%202-1%201-2v-8l1%202%202%204%201%203v-4l-1-4v-2l1-2h1l2%201c2-2%203-1%202%202l1%203%201-1v-3l1%201%204%202c3%201%207%202%209%204%206%204%209%205%209%203l1-2v3c-1%202-1%202%201%202h1l1%201h1l1%201h1l1%201%201-1h1l-2%204-2%202h1c2-2%203-1%203%201%201%202%202%202%203%202l5%201v3c0%201%201%202%203%202%203%200%203%200%202-1v-1c2%200%203%202%203%204l-1%201-2-1h-1l-1%201-1%201v1l4%201c2%200%203%200%202%201h-3l-4%201c-1%201-1%201%201%201l7%201c3%202%203%202%202%203-2%201-1%202%201%201%202%200%200%2010-2%2011l-2%201c-1%202-3%200-3-3l-3-5-2-2v3l-1%204c-1%200-3-4-3-10%200-4%200-5-4-9l-4-5-11-13c-2-1-7%200-6%202l-2%204-1-3c0-3%200-3-4-3-3%200-4%200-4%202v2h2c1-1%201-1%202%201s0%203-6%202c-2%200-3%200-2%201%202%202%2013%201%2018-2l2-1a111%20111%200%2001-6%2013l3%202c1%201%201%201-1%201l-5%203c-4%203-4%205-1%203%204-2%205-2%203%200v1l2-1%201-1v3c0%202%201%203%203%203l1%201-3%203c-3%202-3%202-1%202h4l3%201-2%202-2%202h2c2%200%202%200%201%201l-2%201h9c3-2%203-2%203%200l2%201c2%200%204%202%202%203l-2%201h2l1%201-3%202c-3%200-4%202-1%202h5c-2-2-2-2%200-2s2%201%202%203%200%203-1%202c-3-1-3%202%200%204%203%203%204%206%201%208-2%201-1%205%202%204h3l2-4c0-5%201-6%201-3l3%203c2%201%202%201%201-2v-2l2%202%203%206c1%203%201%203%202%201%201-1%201%200%201%204%200%2010-7%2012-13%203-2-3-3-4-4-2-3%204-10%205-14%203l-9-9-6-12-2-2c0-1-2-4-5-6-4-4-4-4-5-2l-2%206-4%2010v5c2%202%202%205%202%208-1%204-1%204%201%203%201-2%201-2%202-1%200%202%201%202%202-1%202-3%202-3%202-1l-1%203v2c1%201%201%201-1%201-3-1-6%202-4%205v2c-1%201-1%201-1-1l-1-2-2-1h-3c-4%202-8%201-14-3-3-1-5-3-5-4l-2-4c-3-4-3-7-3-16%200-7%200-7-7-15l-3-5c0-3-1-2-2%201%200%205-2%2010-3%209-1%200-2-1-1-2l-2-3-1-3-2-4c-3-4-3-6-2-10%201-3%201-3-3-5-4-1-5-1-4%201v2l-1-2c0-1-8-1-9%201h-1c0-2-3-1-4%201-2%203-1%204%207%204%204%201%206%201%209-1%204-2%206-1%202%202-1%202-3%205-3%209l-2%201-2%202c-1%202-1%202%202%203%202%200%202%201%201%202v1l1%201c0%202%202%203%204%202%201-1%201-1%201%201v4c-2%200-2%202-2%202l-3%204-2%202%205-1c3%200%204%200%202%201s-2%201%202%201l6%203c3%202%203%201%203-5l1-6c2%200%2010%2023%2010%2031l1%202%202-8v-1c2%200%203%203%203%209%201%205%201%206%203%204%201-1%201-1%201%201-2%204-2%205-1%205l2%201c0%202%202%201%203-1v-5c-3-4-2-6%200-3%202%202%203%208%202%208-1%201%201%2013%202%2013%202%200%202-4%201-6v-1c3%200%203%206%200%208-1%201-1%204%201%204l1%201h-2l-3%201h-2l-4-1-2-1h-4c-2%202%203%205%205%204%204-1%201%202-6%206-10%204-8%205%201%201%206-3%209-4%2011-3%201%200%202%200%201-1%200-2%201-3%208-4h6l7-1h3l-2%201-1%201h-4c-2%201-2%201%201%201%202%200%202%200%201%201h-6l-1%201h-4c-1%201-1%201%201%202%201%202%201%202-3%204-6%203-2%202%206-1l9-4%207-4%206-3%201-1h2l6-1%2010-2%201%201v-1c0-2%201-4%208-6l7-2c1%202%203%200%203-3l12-6%2024-14-17%209-18%208c-2-3%2010-11%2025-19l10-4v-99a644%20644%200%20000-105c-1-1-2%200-5%205m-41%2041h-3l-1%202c0%202%200%202-1%201-1-2-1-2-1%201l-4%202-3-1-1-1-1%201v3c-1%201-1%201%202%201l2%201h3c1-1%202%200%204%202%202%203%203%203%205%202l2-2-1-1-2-3c-1-3-1-4%201-5%201%200%202-2%201-3h-2m-93%2032c-5%202-8%205-8%207s0%202%201%201c1-2%201-2%201%201l1%205c1%202%201%202%201%200l1-2%201%202v5h-1l2%202%201%202c-1%201%201%204%203%206%203%204%204%205%208%204%205%200%2012-4%2010-5-1-1-1-1%201-1l3-9c0-2%201-3%202-3%202-1%202-1%201-2-1%200-3-2-3-5-2-4-3-6-6-6v1h-5c-2%200-2-2%200-2l1-1h-15m0%2033l-5%209-1%201c-2%200-2%202-1%204%202%203%205%203%204%200l1-2v2h1c1-1%202%201%201%203l2%202%206%204%203%204%203-3%202-3-2-4-2-4h2c2%200%203%201%203%202l3%204c2%202%202%202%203%201v-4c-1-2-2-2-2-1h-2c-2-2-2-3%201-3%202-1%204-2%204-4%201-2%201-2-2-1-7%201-8%201-8%203-2%203-4%203-3%200l-1-1-1%203c0%202%200%202-1%201h-2c0%202-2%203-2%201l-1%201c-1%201-1%201-1-1l-3-3-2-2c0-2%205-6%206-6%202%200%202-1%201-3s-2-2-4%200m-123%205c-5%202-8%205-10%208-1%204-1%204%201%203l1%201%205%201h6l6%202c3%200%204%200%203%202h1v1l1%203v-2h2l3%202v2l-2%205c0%204-3%209-7%2010l-3%202%203%201c3%202%203%202%206%200l4-1c2%201%205%200%205-2s0-2-1-1c-2%201-2%201-2-1l1-2%202-3c1-2%201-2%201%200s0%202%202%201l2-2%201-6v3l1%202%201%202%201-1c2-2%203-2%203%201l2%202%205%205h-5l-1-1c0%201-1%202-2%201-1%200-2-1-1-3%200-3%200-3-1%201-2%204-1%207%200%206l1%201-1%201c-1%200%200%204%203%206%202%202%205%202%203-1l-1-10%201%205c1%205%201%205%204%204%201-1%201-1-1-2l-2-4v-3l3%202c2%202%203%202%203%201v-2c-2-2-2-2%201-2l2-2v-3c2-1%202-2%200-3-2-2-1-3%202-1h2l-1-1h1l4-1-2-1h-1l2-2%201-1%201-3-3%202c-3%203-10%206-10%204l-2-1c-2%200-2%200-1%201%202%200%205%205%203%205l-2-2-2-2%201%202c0%202%200%202-3-1-2-2-3-3-3-1l-1-2c-1-3-2-6-4-7-4-5-7-10-7-12s0-2-1%200c-1%203-1%201-1-3%200-3%200-3-1-2-2%201-3%201-6-1-4-2-12-3-16%200m65%2029c-2%200-4%202-5%203%200%202-2%203-2%203l1%202%202%201%201%201h1c1-2%200-2-1-2-2%200-2%200-1-1v-2l2-1v1c-1%201-1%201%201%201h3l-2%201v1h2c0-1%202%200%203%202l3%203-1-5c-1-8-3-10-7-8m-104%205l-4%201h-5c-5-1-10%200-15%205-4%204-5%208-2%207l3%201%204%203%205%201%203%201c4%200%209%205%208%209%200%202%200%202%201%201%203-3%204-1%201%202l-2%204c0%202%204-2%205-4l1-2c1%201%202-1%204-2%202-3%203-3%203%202%200%202%200%203%201%202l5%202%202%201c2%200%202%200%201%201-2%202-2%202%200%202l1%202%203%202c3%202%204%203%203%204-2%201%201%202%207%201%204%200%205%200%204%201s-1%201%201%201%202-1%202-4l1-3v-1l-2-2h1c0%202%202%201%202-1l-4-5c-4-4-4-6%200-2%206%205%208%206%208%204h1c2%201%201-2-1-4s-3-3-2-5l-1-2-1-1v-2l-1-1c1-2-1-4-14-12l-11-8h-7l-9%201m59%2030l-2%205-2%2013-2%2015c1%204%200%206-4%203v-1c1%201%202%200%202-4%200-5-4-7-7-4v5c-2%203-2%203%200%203l5%202c2%202%203%203%204%202h6l4%201h-5c-4%200-7%202-2%202%202%200%202%200-1%202l-2%201%205-1%204-1-2%202-3%201%203-1a627%20627%200%20007%200v3l-2%201h5c0%202-6%204-9%204l-4%201%202%201%201%201h2l2-2h7l-1%201c-1%200-4%207-3%209%200%203%203%201%204-4l1-4v10l1-6c0-4%201-4%201-2l1%204%201-5v-3l1%206c0%203%200%203%201%202l1-5v-2l1%203h1l-1-6c-3-8-1-27%203-31l1-6c0-4%200-4%201-3h2v-2l-1-2c1%200%200-3-2-5-2-4-3-4-3-3l1%203v6l-4%201c-4%202-6%201-6-4%201-3%201-3-2-5-4-1-5-1-3%201v2c-3%202-6%200-7-4h-1m50%2010c-1%200%200%202%202%202l2%202-4%201c-5%201-7%202-7%204s0%202-1%201c0-2-1-2-2-2l-3%201v2l2%201c1-1%201%200%201%201l2%202%201-2%202-3%2011-1h12l-1-1h-2l-1-1v-2l1-1h2c1-2%200-3-4-4-2-1-2-1-1%201%202%203%201%205-1%203-3-4-10-6-11-4m-99%2045l-2%202h2c1-1%202%200%202%201l-1%201v3c-1%201%200%201%202%201%201%200%202%200%201%201-1%200-1%201%201%202l1%201-1%201-2%202-2%202%203-1h2v1l2-1%201-13c1-5-5-7-9-3m290%20103v10h-18a20965%2020965%200%2001-87%201%203134%203134%200%2000-174%200l-60-1H0v5l1%206v1l-1%2014v14h96a1046%201046%200%200098-1%204136%204136%200%2000206-1c1%201%201-2%201-28-1-27-2-40-2-20'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"narrow":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAEcklEQVQ4y21V+0+bVRjuv0BGyKD3q7SFQoECZcBKC1RaGu5k3MM9boAoYUEGrpbbSgQkwEQ3mFwyjMMIGIhhCwEdQX+BgCLhMi4rMf4Xj+c90OgSf3hy3nO+r8/7vO/7fKcChUIBtVqN8PBwxMbGIikpCVarFfn5+cjMzER2djZKS0tQUV7O44KCAv6MYpfLBafDyd/Ly8tFWVkZBHK5HDKZDBqNBgaDAVFRUTCbzZw4MTERNpsN6enpSElJgcViQVpaGt9TUnqWlZXFyPLQ0NCAwYEBCKRSKSQSCUipVqvlpDExMYiOjubwqyZyWhMSEviZ0WjkCVpaWjA0NIS5uTmsra1BQGR+qFQqTqrT6aDX6zk5tYJAZ7SPj49HOSufFJPKvr4+zM/PY3t7m4MrFIvFEIlEvHRSqlQqeV+pDUREhKSG2uFwONDf34/Z2VksLCxgZ2cHPp8PBwcHHAIiEwqFHBRTAuorKQ4MDER3dzf29vYwOTmJkZERXh6p6+rqwtbWFjY3N3F2doaTk5MrQlJGRH5i2t+4cYM3mkiSk5NRVFTEe/TL69dYXV1FW1sbh9PpRGNjI5aWlnB+fs4TC/xkpMhfNpVMvWxtbeVNJ9KcnBzY7Xa0t7djfHycW4XaMjU1hY6ODqysrODw8PBqKEQSFBTEbbC4uIjHY49RWVnJS6tia11dHZ8wTba5uZknKi0t5S3p7e3F8vIyH8zp6em/UyaVpIxUDA4O4tXLl9zEZF7yHk2XkhIZqaJk9fX1PJHb7eYlHx0dXRH6p0yrf7K5ubmoqa7mkyRSMq7H40FGRgbrWwNP0NnZyXtbWFjI1/39/f/YhiE4OJhnLi+vQEBAAGprazE6Osr7NvzFMCYmJjipyWRiVQxhZmYGx2y6f7LpUlUkQiBjFlGrNczIYbClpsLD7FBUXIzqmhrcvXcPxSUlaGxqgtfbjzJm6CdPnmKQWaeJna2vb2BqepopbmJfUhJuM68KVHIp3lPJYTZFo+OT+/hp+Ue4Ox+g+E4BNn9ex8baK/ww/x2qKsrw9fgY6murkOmww2ZJRkZ6KowGPSLCdLDeTkK2y8kI66chrnoG3YfzeP/z3+Aa3sadp4cIvfscqb0bqHn+Fo6BXxFzfxERH30Pel9ZNwVF7TdQ1DyD5oNZ6Bu/RXjzCxg/fgGBwnuJW1/+DfPYX9D2n0HrPYXe+wZKrw9CzymCOg8R8tkbSHouOOSPLiH3XoF+S3tZnw9SBnkPs42i+xjp4xfImfTBMnYB+1dvkTV5Ce2jEyi6T6DqZeQ9FB+/A3nX0TWuY3am9LBPT+n+HaKOXQgf7ELy6R7ELKa9nMXyh2x9uAfF/4B+9y7+gMa9C4HBdAs6YxyHNjIWKl0kFKEGSNVhECq0ECt1kGrCIVbpGPSQqPXseQR/Nyw6AZFxyTAlWmG22GGxuyAI04VCG6qBWsWuLTm7vmTsyxGzS0IYDFFIMIQhN68QfBPi6zOJKAQK5o5QDfvrYBM2RrJ7Ms6ENJsV/wBuwUQ2oclRXAAAAABJRU5ErkJggg==","aspectRatio":1,"src":"/static/8419c26418bf950f0604335b2cb7b494/502b1/cover2.png","srcSet":"/static/8419c26418bf950f0604335b2cb7b494/f2e6d/cover2.png 114w,\n/static/8419c26418bf950f0604335b2cb7b494/4ddba/cover2.png 229w,\n/static/8419c26418bf950f0604335b2cb7b494/502b1/cover2.png 457w,\n/static/8419c26418bf950f0604335b2cb7b494/7ddc2/cover2.png 686w,\n/static/8419c26418bf950f0604335b2cb7b494/435bf/cover2.png 914w,\n/static/8419c26418bf950f0604335b2cb7b494/6050d/cover2.png 1200w","srcWebp":"/static/8419c26418bf950f0604335b2cb7b494/15384/cover2.webp","srcSetWebp":"/static/8419c26418bf950f0604335b2cb7b494/31fce/cover2.webp 114w,\n/static/8419c26418bf950f0604335b2cb7b494/e3e25/cover2.webp 229w,\n/static/8419c26418bf950f0604335b2cb7b494/15384/cover2.webp 457w,\n/static/8419c26418bf950f0604335b2cb7b494/0258d/cover2.webp 686w,\n/static/8419c26418bf950f0604335b2cb7b494/64ea2/cover2.webp 914w,\n/static/8419c26418bf950f0604335b2cb7b494/9000d/cover2.webp 1200w","sizes":"(max-width: 457px) 100vw, 457px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M0%20143v143h17l16-1h1l11%201h9l3-5c3-4%203-4%201-4s-2%200%200-3l4-3%201-1%207-8%206-7v-1l2-1c1%201%203-2%202-3-1-2%202-1%203%201%203%202%207%204%207%202l3-1c3%200%203%200%202-1l-1-2-1-1-2%201c-2%203-3%201-1-2l4-10%201-1v2h1l5-2h3l-2-2c-1-2-2-2-4-1-2%202-5%200-3-3v-9c-1-1-1-1%201-2h1v5c0%203%200%204%203%201h3l4%201c4-1%207%202%205%204l-4%208-5%207-1%203%202%2010c1%207%203%2010%2013%2019s10%209%2023%209h11l-4-5-4-5c-1%200-12-11-10-11l-3-2c-1-2-3-3-3-2l-1-1%201-5%201-2%203-4c2-4%204-5%204-2s1%203%202%204%201%201%201-1%200-2%201%200l2%202c2%201%202-2%200-6-1-2%200-3%201-3v1c0%202%209%2012%2015%2016%207%204%2011%204%2021-1l8-4%203%203c2%202%203%203%204%201s5%200%205%203l1%201v1c-2%202-2%202%201%205%205%203%205%208%202%209l-2%201-1%201h-1l-1%201h-2l-3%203-3%202h11c10%200%2019-2%2010-2-3%200-4%200-3-1%202%200%200-2-2-2l-2-1c0-2%204-3%206-3%203%201%208-3%209-5l1-3v-1l-3-3-1-2-2%202-4%202c-1-1-1-1%201-2%203-2%203-3-1-3l-3%201%203-1%203-2h-3l-5-1c-2-1-2-1%200-2%204-2%204-3-1-2h-4l2-1c4-2%204-3%201-3-2%201-2%201%200-1%201-1%201-1-2-1-9%202-9%202-5%200l3-3-2%201h-3c-1%200-1-1%201-1l2-2-4%201h-5c-1-1-1-1%201-2s2-1-1-1-5-3-2-3l-1-1c-2-1-2-1%200-1s3-1%200-3c-1-2-1-2%204-2l9%201c3%202%203%202%203%200%200-3-1-3-7-4-10-2-11-2-10-3h1l1-1-1-1v-6l4%202c2%203%2010%204%2010%201a3333%203333%200%20005-3c2-1%202-1%201%202s2%2013%205%2015l1%203c-1%204%205%208%2015%2011h7c1%200%202%202%202%208%201%207%205%2012%209%2012l3%201%201%201%201-2%201-3%201-9-1%202-1%202-1-1c1-1%200-2-1-2v-12c-1-3%200-6%201-6l1-3c0-3-3-5-7-7-3-1-3-1-2%202l-1%202v6l-4-3%202-1v-1c-3-1-7%203-5%204v1h-2c0%202%200%202-1%201l-3-1c-2%201-7-1-6-2l-1-1c-2%200-6-6-6-8s-1-3-3-3c-3-1-2-1%203-2%201-1%202-3%200-3l-4-2-3-3%204-1c9-1%2020%202%2019%205%200%204%202%202%202-2l6-13%202%201c1%202%202%202%202%201h1l1%202%203%206%202%205c0%203%203%208%205%208l5%205c3%204%2013%2011%2018%2012%202%201%203%205%201%208l-1%203c1%201%200%206-1%206v-1l-4-1c-4%200-5%201-6%203%200%203%200%203-2%203l-3%201-1%201-3%201-8%204c-3%200-12%204-12%205l-1%201h-3l-6%202c-13%205-14%205%2015%205a215%20215%200%200030-1c-1%201%2015%201%2042%201a373%20373%200%200045-1l22%201h22V143c0-79%200-142-1-141%200%202-1%203-5%205a1500%201500%200%2000-6%201l1-2-2%202c-2%202-3%201-2-1l1-1c1%200%206-4%205-5h-18l-2%201h-1c1-2%200-2-4-2s-5%200-4%201v3h-3l1-1c3-2-4-2-30-3l-27%201h-1l-22-1h-20l-4%205c-4%205-5%204-2-1l3-4h-14a69%2069%200%2000-18%201h-3l-3%202-8%203c-5%203-8%204-4%201s1-2-5%202c-7%203-9%204-8%202s0-2-2%200l-3%201c-1-1%202-4%208-8l5-4a714%20714%200%2000-63%201L70%200H0v143M395%2017c-5%208-4%207-7%206h-2l-1%201c0-1-3%201-3%204-1%201-2%202-3%201v1l-1%203-2%202-1%201-2%202h-2l-2%201c-2%203-5%204-4%201h-2c-3%202-4%202-4%201%200-2%200-2-1-1h-5v-2c-1-1-1-2%201-3l2-3%203-2c1-1%202-1%201-2-2%200-8%203-6%204l1%201c-4%200-7%201-7%202l-1%201-1%201v4l-2%202-3%202-2%203-2%205c1%204-1%206-3%205-1-1-2-1-2%202l-2%202v-3l-1-2h-2v-2c-1%200-1-7%201-7l1-3c0-1%201-3%204-4l4-3c0-2-2-1-7%202-5%202-7%201-2-2l2-2c-2-1-7%201-12%205-4%203-4%204%201%202%203-2%206-2%206%201%200%201-6%2013-8%2014v4l4-3c4-4%204-3%204%202%200%203%200%203%203%203%203-1%202%200-3%203l-4%204-1%201c0-1-5%201-9%204l-8%206-4-2h-9c-4%201-5%201-10-2-11-6-23%201-28%2015v7l2%205c0%204%200%204-5%208-6%203-8%204-6%201l1-2%202-2c3-1%205-4%204-4v-3l-1-2v-2h-6c-2%201-2%202-5%202-2%200-2%200-1%202%201%201%201%201-1%201h-1l-1%204v3l1%202-1%201v1h-1l-2-4c1-1%200-2-1-2l-5-6c-5-8-8-8-22-2-6%202-6%202-11%201-7-3-12-2-18%200-8%204-11%2010-6%2014%201%201%201%201-2%202h-2l3%202%209%201%205%201%206%202c7%200%2014%206%2013%2010%200%202%200%202-1%201s-1%200-1%203l-1%207%201%202%202-1%202-1v2c0%202%200%202%202%200l2-3%201-3%203-4c0-4%203-9%204-9l-1%204c-2%203-4%2013-2%2010l3-1c2%200%202-1%202-3v-2l1%202%201%203v-3c1-2%201-2%202-1l2%201c1-1%201%200%201%201l2-1c1-2%201-2%201%202l-1%204%201-3%202-3v3c0%203%200%203%202%202%202-3%202-2%202%201-1%203%200%203%2010%204l9%203c5%202%205%201%205-2l1-3v4c0%204%200%204%202%204l1%201%201%201v1l2%201%201%201c1%202%204%202%205%201h1l-1%202c-2%202-2%203%200%203l2-1c1-1%202-1%203%202%203%202%203%203%201%204s-3%200-2-2h-1l-1-1c1-2-1-1-2%201-2%201-2%204-1%205l1-1%202-1v1l1%201c2-1%205%200%204%201l2%201-1%202-2%202%202%201h4c3-1%207%201%205%203h1c2-2%201%201-1%202s-2%202-1%202v1c-1%201%200%201%201%201%202%201%203%201%202%202l1%201%201%201%201%201c2%200%202%200%201%201v2l2-1%202%201c2%204%202%203%201-1-3-5-2-6%201-3s3%201-2-4l-5-5c-2%200-2-1-2-3l-1-5-2-9c0-10-2-14-5-13-3%200-4-1-3-6%200-4%202-6%202-2l1%202%201-1c-1-1%204-3%205-2l1-1h2l2-1%201-3%201%201v2l1-2v-6l-1-5v-2l-1-4v-1l2%202%201%203v-3l2-2%201%201c-1%202%201%204%203%205%202%200%202-1%201-2v-8l1%202%202%204%201%203v-4l-1-4v-2l1-2h1l2%201c2-2%203-1%202%202l1%203%201-1v-3l1%201%204%202c3%201%207%202%209%204%206%204%209%205%209%203l1-2v3c-1%202-1%202%201%202h1l1%201h1l1%201h1l1%201%201-1h1l-2%204-2%202h1c2-2%203-1%203%201%201%202%202%202%203%202l5%201v3c0%201%201%202%203%202%203%200%203%200%202-1v-1c2%200%203%202%203%204l-1%201-2-1h-1l-1%201-1%201v1l4%201c2%200%203%200%202%201h-3l-4%201c-1%201-1%201%201%201l7%201c3%202%203%202%202%203-2%201-1%202%201%201%202%200%200%2010-2%2011l-2%201c-1%202-3%200-3-3l-3-5-2-2v3l-1%204c-1%200-3-4-3-10%200-4%200-5-4-9l-4-5-11-13c-2-1-7%200-6%202l-2%204-1-3c0-3%200-3-4-3-3%200-4%200-4%202v2h2c1-1%201-1%202%201s0%203-6%202c-2%200-3%200-2%201%202%202%2013%201%2018-2l2-1a111%20111%200%2001-6%2013l3%202c1%201%201%201-1%201l-5%203c-4%203-4%205-1%203%204-2%205-2%203%200v1l2-1%201-1v3c0%202%201%203%203%203l1%201-3%203c-3%202-3%202-1%202h4l3%201-2%202-2%202h2c2%200%202%200%201%201l-2%201h9c3-2%203-2%203%200l2%201c2%200%204%202%202%203l-2%201h2l1%201-3%202c-3%200-4%202-1%202h5c-2-2-2-2%200-2s2%201%202%203%200%203-1%202c-3-1-3%202%200%204%203%203%204%206%201%208-2%201-1%205%202%204h3l2-4c0-5%201-6%201-3l3%203c2%201%202%201%201-2v-2l2%202%203%206c1%203%201%203%202%201%201-1%201%200%201%204%200%2010-7%2012-13%203-2-3-3-4-4-2-3%204-10%205-14%203l-9-9-6-12-2-2c0-1-2-4-5-6-4-4-4-4-5-2l-2%206-4%2010v5c2%202%202%205%202%208-1%204-1%204%201%203%201-2%201-2%202-1%200%202%201%202%202-1%202-3%202-3%202-1l-1%203v2c1%201%201%201-1%201-3-1-6%202-4%205v2c-1%201-1%201-1-1l-1-2-2-1h-3c-4%202-8%201-14-3-3-1-5-3-5-4l-2-4c-3-4-3-7-3-16%200-7%200-7-7-15l-3-5c0-3-1-2-2%201%200%205-2%2010-3%209-1%200-2-1-1-2l-2-3-1-3-2-4c-3-4-3-6-2-10%201-3%201-3-3-5-4-1-5-1-4%201v2l-1-2c0-1-8-1-9%201h-1c0-2-3-1-4%201-2%203-1%204%207%204%204%201%206%201%209-1%204-2%206-1%202%202-1%202-3%205-3%209l-2%201-2%202c-1%202-1%202%202%203%202%200%202%201%201%202v1l1%201c0%202%202%203%204%202%201-1%201-1%201%201v4c-2%200-2%202-2%202l-3%204-2%202%205-1c3%200%204%200%202%201s-2%201%202%201l6%203c3%202%203%201%203-5l1-6c2%200%2010%2023%2010%2031l1%202%202-8v-1c2%200%203%203%203%209%201%205%201%206%203%204%201-1%201-1%201%201-2%204-2%205-1%205l2%201c0%202%202%201%203-1v-5c-3-4-2-6%200-3%202%202%203%208%202%208-1%201%201%2013%202%2013%202%200%202-4%201-6v-1c3%200%203%206%200%208-1%201-1%204%201%204l1%201h-2l-3%201h-2l-4-1-2-1h-4c-2%202%203%205%205%204%204-1%201%202-6%206-10%204-8%205%201%201%206-3%209-4%2011-3%201%200%202%200%201-1%200-2%201-3%208-4h6l7-1h3l-2%201-1%201h-4c-2%201-2%201%201%201%202%200%202%200%201%201h-6l-1%201h-4c-1%201-1%201%201%202%201%202%201%202-3%204-6%203-2%202%206-1l9-4%207-4%206-3%201-1h2l6-1%2010-2%201%201v-1c0-2%201-4%208-6l7-2c1%202%203%200%203-3l12-6%2024-14-17%209-18%208c-2-3%2010-11%2025-19l10-4v-99a644%20644%200%20000-105c-1-1-2%200-5%205m-41%2041h-3l-1%202c0%202%200%202-1%201-1-2-1-2-1%201l-4%202-3-1-1-1-1%201v3c-1%201-1%201%202%201l2%201h3c1-1%202%200%204%202%202%203%203%203%205%202l2-2-1-1-2-3c-1-3-1-4%201-5%201%200%202-2%201-3h-2m-93%2032c-5%202-8%205-8%207s0%202%201%201c1-2%201-2%201%201l1%205c1%202%201%202%201%200l1-2%201%202v5h-1l2%202%201%202c-1%201%201%204%203%206%203%204%204%205%208%204%205%200%2012-4%2010-5-1-1-1-1%201-1l3-9c0-2%201-3%202-3%202-1%202-1%201-2-1%200-3-2-3-5-2-4-3-6-6-6v1h-5c-2%200-2-2%200-2l1-1h-15m0%2033l-5%209-1%201c-2%200-2%202-1%204%202%203%205%203%204%200l1-2v2h1c1-1%202%201%201%203l2%202%206%204%203%204%203-3%202-3-2-4-2-4h2c2%200%203%201%203%202l3%204c2%202%202%202%203%201v-4c-1-2-2-2-2-1h-2c-2-2-2-3%201-3%202-1%204-2%204-4%201-2%201-2-2-1-7%201-8%201-8%203-2%203-4%203-3%200l-1-1-1%203c0%202%200%202-1%201h-2c0%202-2%203-2%201l-1%201c-1%201-1%201-1-1l-3-3-2-2c0-2%205-6%206-6%202%200%202-1%201-3s-2-2-4%200m-123%205c-5%202-8%205-10%208-1%204-1%204%201%203l1%201%205%201h6l6%202c3%200%204%200%203%202h1v1l1%203v-2h2l3%202v2l-2%205c0%204-3%209-7%2010l-3%202%203%201c3%202%203%202%206%200l4-1c2%201%205%200%205-2s0-2-1-1c-2%201-2%201-2-1l1-2%202-3c1-2%201-2%201%200s0%202%202%201l2-2%201-6v3l1%202%201%202%201-1c2-2%203-2%203%201l2%202%205%205h-5l-1-1c0%201-1%202-2%201-1%200-2-1-1-3%200-3%200-3-1%201-2%204-1%207%200%206l1%201-1%201c-1%200%200%204%203%206%202%202%205%202%203-1l-1-10%201%205c1%205%201%205%204%204%201-1%201-1-1-2l-2-4v-3l3%202c2%202%203%202%203%201v-2c-2-2-2-2%201-2l2-2v-3c2-1%202-2%200-3-2-2-1-3%202-1h2l-1-1h1l4-1-2-1h-1l2-2%201-1%201-3-3%202c-3%203-10%206-10%204l-2-1c-2%200-2%200-1%201%202%200%205%205%203%205l-2-2-2-2%201%202c0%202%200%202-3-1-2-2-3-3-3-1l-1-2c-1-3-2-6-4-7-4-5-7-10-7-12s0-2-1%200c-1%203-1%201-1-3%200-3%200-3-1-2-2%201-3%201-6-1-4-2-12-3-16%200m65%2029c-2%200-4%202-5%203%200%202-2%203-2%203l1%202%202%201%201%201h1c1-2%200-2-1-2-2%200-2%200-1-1v-2l2-1v1c-1%201-1%201%201%201h3l-2%201v1h2c0-1%202%200%203%202l3%203-1-5c-1-8-3-10-7-8m-104%205l-4%201h-5c-5-1-10%200-15%205-4%204-5%208-2%207l3%201%204%203%205%201%203%201c4%200%209%205%208%209%200%202%200%202%201%201%203-3%204-1%201%202l-2%204c0%202%204-2%205-4l1-2c1%201%202-1%204-2%202-3%203-3%203%202%200%202%200%203%201%202l5%202%202%201c2%200%202%200%201%201-2%202-2%202%200%202l1%202%203%202c3%202%204%203%203%204-2%201%201%202%207%201%204%200%205%200%204%201s-1%201%201%201%202-1%202-4l1-3v-1l-2-2h1c0%202%202%201%202-1l-4-5c-4-4-4-6%200-2%206%205%208%206%208%204h1c2%201%201-2-1-4s-3-3-2-5l-1-2-1-1v-2l-1-1c1-2-1-4-14-12l-11-8h-7l-9%201m59%2030l-2%205-2%2013-2%2015c1%204%200%206-4%203v-1c1%201%202%200%202-4%200-5-4-7-7-4v5c-2%203-2%203%200%203l5%202c2%202%203%203%204%202h6l4%201h-5c-4%200-7%202-2%202%202%200%202%200-1%202l-2%201%205-1%204-1-2%202-3%201%203-1a627%20627%200%20007%200v3l-2%201h5c0%202-6%204-9%204l-4%201%202%201%201%201h2l2-2h7l-1%201c-1%200-4%207-3%209%200%203%203%201%204-4l1-4v10l1-6c0-4%201-4%201-2l1%204%201-5v-3l1%206c0%203%200%203%201%202l1-5v-2l1%203h1l-1-6c-3-8-1-27%203-31l1-6c0-4%200-4%201-3h2v-2l-1-2c1%200%200-3-2-5-2-4-3-4-3-3l1%203v6l-4%201c-4%202-6%201-6-4%201-3%201-3-2-5-4-1-5-1-3%201v2c-3%202-6%200-7-4h-1m50%2010c-1%200%200%202%202%202l2%202-4%201c-5%201-7%202-7%204s0%202-1%201c0-2-1-2-2-2l-3%201v2l2%201c1-1%201%200%201%201l2%202%201-2%202-3%2011-1h12l-1-1h-2l-1-1v-2l1-1h2c1-2%200-3-4-4-2-1-2-1-1%201%202%203%201%205-1%203-3-4-10-6-11-4m-99%2045l-2%202h2c1-1%202%200%202%201l-1%201v3c-1%201%200%201%202%201%201%200%202%200%201%201-1%200-1%201%201%202l1%201-1%201-2%202-2%202%203-1h2v1l2-1%201-13c1-5-5-7-9-3m290%20103v10h-18a20965%2020965%200%2001-87%201%203134%203134%200%2000-174%200l-60-1H0v5l1%206v1l-1%2014v14h96a1046%201046%200%200098-1%204136%204136%200%2000206-1c1%201%201-2%201-28-1-27-2-40-2-20'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"seo":{"src":"/static/8419c26418bf950f0604335b2cb7b494/6050d/cover2.png"}}},"authors":[{"authorsPage":true,"bio":"Hello everybody 👋 !  My name is Luke and I am the creator and owner of the spaceout.pl. Personally, I am a big geek with huge love for Star Wars, Marvel and DC comic books, Funk and 80s music. I take most of my design inspiration from offline experiences like going to art museums, galleries and working with other creative people on various projects. I also work with various Activist and NGO groups as a pro-bono designer and developer.\n","id":"f69d27c7-7f9a-5fbd-b05d-1a324fd10c0a","name":"Luke Celitan","featured":true,"social":[{"url":"https://www.facebook.com/spaceout/"},{"url":"https://twitter.com/spaceout.pl"},{"url":"https://www.instagram.com/spaceout.pl/"},{"url":"https://huggingface.co/MassivDash"},{"url":"https://bsky.app/profile/lukecelitan.bsky.social"}],"slug":"/authors/luke-celitan","avatar":{"small":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGQABAAIDAAAAAAAAAAAAAAAAAAIFAQME/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEAMQAAABvOTVgtERIAH/xAAaEAEBAQEAAwAAAAAAAAAAAAACAQMEABAS/9oACAEBAAEFAmoDjs0/Oq1a9kUzN+j7/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAHhAAAgEDBQAAAAAAAAAAAAAAAQIAAxESECAxMlH/2gAIAQEABj8CLHgTGqmBPXSlTANsrmKyXLK0B92f/8QAHhABAAECBwAAAAAAAAAAAAAAAREAIRAgMUFhcdH/2gAIAQEAAT8hUmKFDbjke4JaIOG01Fthsd0YugnJ/9oADAMBAAIAAwAAABDzzzz/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/EB//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/EB//xAAfEAEBAAEDBQEAAAAAAAAAAAABETEAQWEQICFxgZH/2gAIAQEAAT8QhmFXf0c6oSU1s8jwz0W5QpAeFf1+Gp7aimCmBvvoV0CRyUvZ/9k=","aspectRatio":1,"src":"/static/4f53b0980dc97328dd1294bbc374fd0e/fa1ea/spaceghost.jpg","srcSet":"/static/4f53b0980dc97328dd1294bbc374fd0e/afb2b/spaceghost.jpg 13w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/7c20e/spaceghost.jpg 25w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/fa1ea/spaceghost.jpg 50w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/03612/spaceghost.jpg 75w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/61cdf/spaceghost.jpg 100w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/442ab/spaceghost.jpg 305w","srcWebp":"/static/4f53b0980dc97328dd1294bbc374fd0e/e7b2c/spaceghost.webp","srcSetWebp":"/static/4f53b0980dc97328dd1294bbc374fd0e/58718/spaceghost.webp 13w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/74aad/spaceghost.webp 25w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/e7b2c/spaceghost.webp 50w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/ed320/spaceghost.webp 75w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/66016/spaceghost.webp 100w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/85828/spaceghost.webp 305w","sizes":"(max-width: 50px) 100vw, 50px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M189%2065A519%20519%200%200065%20299c-5%2020-5%2018%203%2015%208-4%2039-10%2057-12%2011-1%2010%200%2010-11%200-29%206-103%2010-121%204-21%2016-36%2033-43%206-2%208-2%2020-2%2018%200%2024%202%2036%2013%2020%2021%2025%2046%2029%20138l2%2026h10a267%20267%200%200168%2014l-6-26A607%20607%200%2000218%2071c-10-10-15-15-18-15-2%200-6%203-11%209m47%20129c-14%208-26%2015-26%2017%200%203%2018%205%2024%202%205-3%209-10%209-18%200-5%200-5-7-1m-82%201l1%205c1%2011%209%2018%2020%2017%207-1%2013-3%2013-5s-32-19-34-17'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"medium":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGQABAAIDAAAAAAAAAAAAAAAAAAIFAQME/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEAMQAAABvOTVgtERIAH/xAAaEAEBAQEAAwAAAAAAAAAAAAACAQMEABAS/9oACAEBAAEFAmoDjs0/Oq1a9kUzN+j7/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAHhAAAgEDBQAAAAAAAAAAAAAAAQIAAxESECAxMlH/2gAIAQEABj8CLHgTGqmBPXSlTANsrmKyXLK0B92f/8QAHhABAAECBwAAAAAAAAAAAAAAAREAIRAgMUFhcdH/2gAIAQEAAT8hUmKFDbjke4JaIOG01Fthsd0YugnJ/9oADAMBAAIAAwAAABDzzzz/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/EB//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/EB//xAAfEAEBAAEDBQEAAAAAAAAAAAABETEAQWEQICFxgZH/2gAIAQEAAT8QhmFXf0c6oSU1s8jwz0W5QpAeFf1+Gp7aimCmBvvoV0CRyUvZ/9k=","aspectRatio":1,"src":"/static/4f53b0980dc97328dd1294bbc374fd0e/61cdf/spaceghost.jpg","srcSet":"/static/4f53b0980dc97328dd1294bbc374fd0e/7c20e/spaceghost.jpg 25w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/fa1ea/spaceghost.jpg 50w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/61cdf/spaceghost.jpg 100w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/59538/spaceghost.jpg 150w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/fd013/spaceghost.jpg 200w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/442ab/spaceghost.jpg 305w","srcWebp":"/static/4f53b0980dc97328dd1294bbc374fd0e/66016/spaceghost.webp","srcSetWebp":"/static/4f53b0980dc97328dd1294bbc374fd0e/74aad/spaceghost.webp 25w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/e7b2c/spaceghost.webp 50w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/66016/spaceghost.webp 100w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/d9b14/spaceghost.webp 150w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/6b183/spaceghost.webp 200w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/85828/spaceghost.webp 305w","sizes":"(max-width: 100px) 100vw, 100px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M189%2065A519%20519%200%200065%20299c-5%2020-5%2018%203%2015%208-4%2039-10%2057-12%2011-1%2010%200%2010-11%200-29%206-103%2010-121%204-21%2016-36%2033-43%206-2%208-2%2020-2%2018%200%2024%202%2036%2013%2020%2021%2025%2046%2029%20138l2%2026h10a267%20267%200%200168%2014l-6-26A607%20607%200%2000218%2071c-10-10-15-15-18-15-2%200-6%203-11%209m47%20129c-14%208-26%2015-26%2017%200%203%2018%205%2024%202%205-3%209-10%209-18%200-5%200-5-7-1m-82%201l1%205c1%2011%209%2018%2020%2017%207-1%2013-3%2013-5s-32-19-34-17'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"large":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGQABAAIDAAAAAAAAAAAAAAAAAAIFAQME/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEAMQAAABvOTVgtERIAH/xAAaEAEBAQEAAwAAAAAAAAAAAAACAQMEABAS/9oACAEBAAEFAmoDjs0/Oq1a9kUzN+j7/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAHhAAAgEDBQAAAAAAAAAAAAAAAQIAAxESECAxMlH/2gAIAQEABj8CLHgTGqmBPXSlTANsrmKyXLK0B92f/8QAHhABAAECBwAAAAAAAAAAAAAAAREAIRAgMUFhcdH/2gAIAQEAAT8hUmKFDbjke4JaIOG01Fthsd0YugnJ/9oADAMBAAIAAwAAABDzzzz/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/EB//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/EB//xAAfEAEBAAEDBQEAAAAAAAAAAAABETEAQWEQICFxgZH/2gAIAQEAAT8QhmFXf0c6oSU1s8jwz0W5QpAeFf1+Gp7aimCmBvvoV0CRyUvZ/9k=","aspectRatio":1,"src":"/static/4f53b0980dc97328dd1294bbc374fd0e/442ab/spaceghost.jpg","srcSet":"/static/4f53b0980dc97328dd1294bbc374fd0e/a2637/spaceghost.jpg 82w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/15203/spaceghost.jpg 164w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/442ab/spaceghost.jpg 305w","srcWebp":"/static/4f53b0980dc97328dd1294bbc374fd0e/85828/spaceghost.webp","srcSetWebp":"/static/4f53b0980dc97328dd1294bbc374fd0e/2d087/spaceghost.webp 82w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/29d87/spaceghost.webp 164w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/85828/spaceghost.webp 305w","sizes":"(max-width: 305px) 100vw, 305px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M189%2065A519%20519%200%200065%20299c-5%2020-5%2018%203%2015%208-4%2039-10%2057-12%2011-1%2010%200%2010-11%200-29%206-103%2010-121%204-21%2016-36%2033-43%206-2%208-2%2020-2%2018%200%2024%202%2036%2013%2020%2021%2025%2046%2029%20138l2%2026h10a267%20267%200%200168%2014l-6-26A607%20607%200%2000218%2071c-10-10-15-15-18-15-2%200-6%203-11%209m47%20129c-14%208-26%2015-26%2017%200%203%2018%205%2024%202%205-3%209-10%209-18%200-5%200-5-7-1m-82%201l1%205c1%2011%209%2018%2020%2017%207-1%2013-3%2013-5s-32-19-34-17'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"}}}],"basePath":"/","tech":["Rust","Nodejs"],"category":"Post","slug":"/static-race","id":"62d54027-c7c6-590e-8a64-c664a30230e3","title":"Static race","appDescription":"Sever Analysis","mailchimp":false,"next":[{"id":"384d3fab-354b-5d56-87c6-5156b53e3e99","slug":"/importance-of-design-system","secret":false,"title":"Importance of design system","author":"Luke Celitan","date":"December 12th, 2022","dateForSEO":"2022-12-12T00:00:00.000Z","timeToRead":3,"excerpt":"Why You Need A Design System, And How To Create One","subscription":true,"body":"var _excluded = [\"components\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {\n  \"title\": \"Importance of design system\",\n  \"author\": \"Luke Celitan\",\n  \"date\": \"2022-12-12T00:00:00.000Z\",\n  \"hero\": \"./designSystem1.jpg\",\n  \"excerpt\": \"Why You Need A Design System, And How To Create One\",\n  \"category\": \"Post\",\n  \"tech\": [\"TS\", \"Nodejs\", \"ReactIcon\", \"Rust\"]\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h1\", {\n    \"id\": \"what-is-a-design-system\"\n  }, \"What is a Design System?\"), mdx(\"p\", null, \"A design system is a collection of reusable components and guidelines for\\ndesigning and building digital products. It can be used to create a consistent\\nuser experience across multiple devices and platforms, and to streamline the\\ndesign and development process. Design systems often include style guides, UI\\nkits, code libraries, and other resources that developers and designers can use\\nto create consistent, cohesive user experiences. When used correctly, design\\nsystems can help teams work more efficiently, improve the quality of their work,\\nand ship better products faster.\"), mdx(\"h2\", {\n    \"id\": \"why-is-it-important-to-have-a-design-system\"\n  }, \"Why is it important to have a design system?\"), mdx(\"p\", null, \"A design system is a collection of reusable components and guidelines for design\\nand development. It can be used by a team of designers and developers to build\\ndigital products, such as websites and applications, in a consistent and\\ncohesive way. There are many benefits to having a design system, such as:\\n-Improved efficiency: A design system enables team members to work more\\nefficiently by reusing common components instead of starting from scratch each\\ntime. -Reduced errors and inconsistencies: By following the same design rules\\nand using the same components, mistakes and inconsistencies are reduced. -Faster\\nturnaround times: Using a design system can help speed up the development\\nprocess as team members are familiar with the components and how they fit\\ntogether. -Increased satisfaction: When designers and developers have a greater\\ndegree of control over the end product, they are usually more satisfied with\\ntheir work. This leads to improved morale and motivation within the team.\"), mdx(\"h2\", {\n    \"id\": \"what-are-the-different-types-of-design-systems\"\n  }, \"What are the different types of design systems?\"), mdx(\"p\", null, \"There are many different types of design systems, but they all share some\\ncommonalities. A design system is a set of reusable components and guidelines\\nthat can be used to build digital products. Design systems can help create\\nconsistency and coherence across a product, and make it easier to scale and\\nmaintain a product over time. The most common type of design system is a\\ncomponent library. A component library is a collection of UI components that can\\nbe reused in different contexts. Component libraries can be static (e.g.\\nBootstrap) or dynamic (e.g. React). Another type of design system is a style\\nguide. A style guide is a set of rules and guidelines for how to use the\\ncomponents in a component library. Style guides can be used to enforce\\nconsistency across a team, or across an entire organization. Other types of\\ndesign systems include pattern libraries and front-end frameworks. Pattern\\nlibraries are collections of UI patterns that can be reused in different\\ncontexts. Front-end frameworks are sets of code that can be used to build web\\napplications. Front-end frameworks often come with their own component libraries\\nand style guides.\"), mdx(\"h2\", {\n    \"id\": \"how-do-i-know-if-i-need-a-design-system\"\n  }, \"How do I know if I need a design system?\"), mdx(\"p\", null, \"If you\\u2019re not sure whether you need a design system, ask yourself the following\\nquestions: - Do you have a lot of different products or platforms that need to\\nbe designed? - Do you find yourself constantly reinventing the wheel when it\\ncomes to design? - Are your designers wasting time on creating assets that could\\nbe reused? - Do you have trouble maintaining consistency across your designs? If\\nyou answered yes to any of these questions, then it\\u2019s likely that a design\\nsystem would be beneficial for your organization. A design system can help to\\nstreamline your design process, improve efficiency, and create consistency\\nacross your products.\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"1024px\"\n    }\n  }, \"\\n      \", mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"100%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsTAAALEwEAmpwYAAADpElEQVQ4y5VUWW/cVBT2L+KJPwBv8ILEDwBVzUuLFAoPBKkVEggolRgQDeoCgQZVrUSStqKTVEmhTdIlmSwzWWbixLPZ49iO17Gv17vaXDcRFMQLn45lSz7nu+ee850j5C/AGMv/P4TjV8HB8iJnOaWM0qLkyxnlzzH1ieX/PEPgHhwTt1dVzUWkABFKMuKDFEQQEwoRySChhDMSzktx+f0XhYAwTTK6vHb421KgHiHgwECLxep682l/rlZsS5QzNntku0s3u/QoLGiZ4nEauZBmxPSIG7Bq1Yp35bs/zl8ZX6hU5r8af/LpeP3i9caNe7uinGkWbQ9Q//cWfvgUHpqkKHLKhDilXYN4Hip0y9lSzp4eb/ddK0Kq4hhWGA7B5NTOhcvWzWo+9QDK7WBoAFcyUs3mVRJAQkSFOA5iMa437A/OTSbrLVrbhj0jRmUdp+akS19sXL4RfD9NeibTosJpqnlXZmVwTFoyMRxMSL74YP/cyBV6p5pXruaLq4YUH3bo/KPOyOjtU6PTP91xJbXYEqFsEcxvztPmJ0sqaXWx2GNrs90Px341ND/S3dQGWUTAEJtWJra8mfviwjNT0bFm49VdFMY8PBeGIRlYpDKZvXUGvfdl+tGlx1EEHUBtD3kB5i7NdvjzzOC7H+qLK2ZngAf9UOxkME5zQgQ/IqpDP67Er7yRjJzPTo0tjV7YOF/RL07EN6f958vu9kE8u6TefyzrVuL4LJl5VKxvsbLaVAhiyu8wcRef/Yx+c6tY+MN+893lV99uvHbau/Vtx57dbB9E1rBwQW77xAXU3DsyD5wgJFyFAs9ePCqcZ81iasa/t7wr4jOftF5/p/7+mCj+UrPn6keyb7por4clFfV11NVxbTc1bMx1KYQJPdCotSKlG6LX97zDqDqtXPu6Wa2sdK7O709vAJChFO51ELdWD+kGBCHOIMOYB3ORqFC5VpWrm0ov3KoNNclLNC9eahw8FHee67aTRSGyPayoUDOg5yKYkRzjUmFRSjoa8XQwlN0nNe/z61JdKvugO8RNi7ZeNPZBZxCmuPD7+tpqF2JeZsoQLvscZ2XBHJ/6IdVcZm8rw4Yc9+3U9IdW0lWxC0ia0RSyCJQpvDyUAkTUA1QxSVsjokqULVNfVw53DE0aKmra1bgKqOFRyydhynA5l39HC3xIEeJTSfiERAkBMA9QEcAiyPIgpSChvJdcwvxvhighJ+vh5U3CXiyOEvl/2onPv/EnyS4vAU5+UKMAAAAASUVORK5CYII=')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"picture\", {\n    parentName: \"span\"\n  }, \"\\n          \", mdx(\"source\", {\n    parentName: \"picture\",\n    \"srcSet\": [\"/static/75751e1afed5261f6013a18327da63a8/53334/designSystem.webp 1024w\"],\n    \"sizes\": \"(max-width: 1024px) 100vw, 1024px\",\n    \"type\": \"image/webp\"\n  }), \"\\n          \", mdx(\"source\", {\n    parentName: \"picture\",\n    \"srcSet\": [\"/static/75751e1afed5261f6013a18327da63a8/658fc/designSystem.png 1024w\"],\n    \"sizes\": \"(max-width: 1024px) 100vw, 1024px\",\n    \"type\": \"image/png\"\n  }), \"\\n          \", mdx(\"img\", {\n    parentName: \"picture\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"src\": \"/static/75751e1afed5261f6013a18327da63a8/658fc/designSystem.png\",\n    \"alt\": \"design system\",\n    \"title\": \"design system\",\n    \"loading\": \"lazy\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    }\n  }), \"\\n        \"), \"\\n    \")), mdx(\"h2\", {\n    \"id\": \"how-do-i-create-and-maintain-a-design-system-when-we-have-so-many-internal-products\"\n  }, \"How do I create and maintain a design system when we have so many internal products?\"), mdx(\"p\", null, \"Design systems are a great way to ensure consistency, usability and\\naccessibility across your products. But they can also be challenging to create\\nand maintain, especially when you have a large and diverse portfolio of internal\\nproducts. How do you balance the needs of different teams, stakeholders and\\nusers? How do you keep your design system up to date and relevant? How do you\\navoid duplication, fragmentation and confusion?\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Define the scope and purpose of your design system\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Involve your users and stakeholders from the start\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Establish a clear governance and ownership model\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Document and communicate your design system effectively\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Use tools and platforms that support collaboration and automation\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Iterate and evolve your design system over time\")));\n}\n;\nMDXContent.isMDXComponent = true;","tech":["TS","Nodejs","ReactIcon","Rust"],"category":"Post","appDescription":null,"hero":{"full":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAIEBQH/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAAdCFOvNbrORdiHQf/8QAGhAAAgMBAQAAAAAAAAAAAAAAAgMAARQREv/aAAgBAQABBQJjLAiYVWBehM+QjuIMKXnXM65nVP/EABYRAAMAAAAAAAAAAAAAAAAAAAABEv/aAAgBAwEBPwGWSymUz//EABYRAQEBAAAAAAAAAAAAAAAAAAAREP/aAAgBAgEBPwHIj//EAB8QAAECBgMAAAAAAAAAAAAAAAACEQMQISIxoTJh4f/aAAgBAQAGPwLw6HGhrteV6qmNmNnE/8QAHBAAAwADAQEBAAAAAAAAAAAAAAERITFBYZHw/9oACAEBAAE/IUxcb2wnXDIn4Grqp30csjT4+GjLOw9f0ZnWfg/Rn//aAAwDAQACAAMAAAAQMMcB/8QAFhEAAwAAAAAAAAAAAAAAAAAAAAFh/9oACAEDAQE/EIsiyrKs/8QAFxEAAwEAAAAAAAAAAAAAAAAAABFRAf/aAAgBAgEBPxB5R5RIJD//xAAgEAEAAgICAQUAAAAAAAAAAAABABEhMUFR0WFxgfDx/9oACAEBAAE/EHamsgr5MUd4jaRC8ijw+0BFtprs3LAwio2WtruUgJKWOX5CgDiBdHGz0mjg+m5aoXCVEKPP5n//2Q==","aspectRatio":1,"src":"/static/60f53bc1df34e9dd797daa54291216ad/58fe7/designSystem1.jpg","srcSet":"/static/60f53bc1df34e9dd797daa54291216ad/e0f30/designSystem1.jpg 236w,\n/static/60f53bc1df34e9dd797daa54291216ad/86afd/designSystem1.jpg 472w,\n/static/60f53bc1df34e9dd797daa54291216ad/58fe7/designSystem1.jpg 944w,\n/static/60f53bc1df34e9dd797daa54291216ad/0ff54/designSystem1.jpg 1200w","srcWebp":"/static/60f53bc1df34e9dd797daa54291216ad/99fbb/designSystem1.webp","srcSetWebp":"/static/60f53bc1df34e9dd797daa54291216ad/77392/designSystem1.webp 236w,\n/static/60f53bc1df34e9dd797daa54291216ad/1f177/designSystem1.webp 472w,\n/static/60f53bc1df34e9dd797daa54291216ad/99fbb/designSystem1.webp 944w,\n/static/60f53bc1df34e9dd797daa54291216ad/9000d/designSystem1.webp 1200w","sizes":"(max-width: 944px) 100vw, 944px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M232%2048h-3c-2%200-2%200%200%201v2l-2-1h-7c-6%200-6%200-4%201%205%202%204%204-1%203l-7%201c-2%201-1%201%205%201%204%200%206%200%204%201s-2%201%202%201h6l5-1c2%200%202%200%201%202l-1%202%202-1c1-2%206-4%2012-5s16-5%2015-6l-7-1-5%201c2%201%202%201-1%202-4%201-6%201-2-1%202-1%202-1%200-1-1%200-2%200-1-1l-5-1-6%201M36%2052c-3%202-5%206-5%2011%200%203%200%203%201%202%202-2%202-2%203%201l4%207%202%203%203-2c9-9%202-28-8-22m211%206c-12%205-15%2028-6%2038l4%203h8c12-2%2018-8%2016-18l1-5c2-2-1-11-5-15-6-5-11-6-18-3m-123%203c0%203%200%204-1%203s-1%200-1%205c0%204%200%205%201%204%200-2%202-3%202-1%200%203-3%2011-4%2011v-2c2-4%201-4-1%200-3%204-5%202-3-2l1-3c-1%200-2%201-2%203l-2%201c0-4-3-4-4%201l-3%203-1%201-1%201c-4%201-4%201%200-2%204-5%207-13%204-14-7-1-7-1-7-5%200-2%200-3%201-2s4%201%204-1l-4-1-5%201%202%201c2%200%201%205-1%205s-2%200-1%201c3%200%202%202%200%205-3%203-4%203-3-1l1-6c0-2%200-3-1-1%200%202-1%202-2%202l-5-1c-3%200-3%200-3-4%200-3%200-3-1%200%200%203%200%203-5%203h-5l4%201c4%201%206%202%204%203-1%201-5%202-7%201l-1%201-4%201h-4c-1-2-1-2-4%200-2%201-3%200-3-4%200-2%200-2-2%200-1%202-1%203-2%202h-2l-3-1c-1-1-2%200-3%202l-6%206-3%202%205%201%2010%201h2c-3%201%205%202%2013%202%204%200%204%200%204%202-1%202%201%204%205%204l2%201-3%201h-3l-2%201c-3%200-4%202-1%202%202%200%202%200-1%202l-3%201h3l5%201h1c-1-2%202-3%206-2%202%201%203%203%201%205v1l2-2%205-2%206-1%207-2c2%200%203-1%203-2h1c0%202%202%203%2011%204%209%200%2011%202%202%202h-6l3%204c3%204%204%205%207%205s3%200%201-1l-2-1h2l3%201%202%201v-2c2-1%200-4-4-4l-3-1h3l4-1%201-1c2%202%206%200%206-3%201-4%202-4%2019-8%202%200%202%200%201-2l-2-3c-1-1-1%200-1%202s0%203-1%202h-10v-3c0-3%200-3%203-3l4-2%204-2c2%200%202%200%200-1-3-1-3-1%202-1l6-1h4c3%200%207-3%205-5l-1%201c-1%202-2%202-6%202-2%200-4%200-3%201l-4%201-10%201c-4%200-5%200-4-1l6-1c4-1%204-1-2-1-5%200-6%200-9%203l-5%203-4%203c-3%203-6%204-4%201%203-8%204-20%200-25v3m201%207h-6l-6%201c-2%200-1%207%201%207l1%202-1%202c-2%200-2%202-2%2011v12l1-11c0-11%200-11%203-12%203-2%204-1%202%201l-1%204c0%203%200%203%203%203h3l-3-1-2-1%202-1c2-1%202-1%203%201%202%203%203%206%202%207v1l-2%201c-3%200-2%203%202%208l3%203-1-6v-7h3c2%200%202%200%201%201s-2%202-1%2010v3l3-3%203-5%202-2%201-2%201-2%202-1c2-2%202-12%201-15v-1l-1-3-3-4h-7c-5%200-6%200-3-1l4-1h-4l-4%201m-98%2013c-6%201-6%201-6%208v7h-4l-5-1v-3l1-2c0-2-2-3-2%200-1%201-1%200-1-2v-4h5c3-1%205-1%204-2-2-1-29%204-29%206l1%201%201%202c1%201%201%201%201-1s1-3%206-4c10-2%209-2%2010%204a32%2032%200%20003%2012l-7-1-2-1%201%202c1%202%201%202-2%202s-3%200-2-1l1-2-2%201h-1c-1-1%200-2%204-2%204-1%204-1%204-4-1-5-2-5-8-4-5%200-5%200-6%204v5l-1%201h-2l1%201v1c-1%200-2-1-2-3s0-2-6-2l-5%201v-6c0-6-1-6-3-6s-2%200-2%206l-1%208c-3%203%208%2014%2012%2013l3%201-2%201h4l1-1c-3%200-2-2%201-2%203-1%203%200%202%201%200%201%200%202%202%201l3-5%201-4%206-2a17833%2017833%200%200034-5h3l-2-3-5-6c-1-3-1-3-2-1%200%203%200%203-4%202h-4l-2-5c0-3%202-5%207-5l4-1-1-1-5%201m24%2020l-5%202h-2l-3%201-7%201h-3c3%200%204%200%204%202%200%201%200%202%201%201l1%201%202%202c2%201%203%201%202%202-2%201-1%202%202%202l5%202%202%201c1-1-2-4-5-4l-2-1c1-1%203-2%209-2%207%200%207%200%202%201l-3%201c3%200%203%200%201%201h-2l2%204c2%203%203%204%206%205%205%201%209%203%2011%207l2%202c0-2%204-1%204%201l-2%201c-2-1-2%200-2%202s0%203-2%203l-4%201-1-1v-1l-1%202%204%201%205-1%201-2c0-2%201-3%203%200%202%201%202%201%206-2l4-4h-4c-4%200-5%200-4-4%200-3%204-3%204%200%200%202%201%203%202%203%202%201%202%200%202-2%200-3-3-5-7-5h-2l4-2c2%200%203-1%203-2%201-1%201-1%202%201v2l3-2c3-2%204-2%2014-1l29%204c2%200%205%206%205%2010%200%202%200%202%204%202%203%200%203%200%203-3s0-3%201-2l5%202%203%203c0%201%200%202%201%201v-6h5c4%200%205%201%206%202v-2c0-3-1-6-3-7-3-3-3-4%201-4l6-2a1141%201141%200%2001-103-18l-15%201m-115%208v3l-6-1-9-1c-4%200-4%200-4%202%200%204%208%206%2011%203h1c1%202-1%202-24%201l-18-2-1%203c1%204%201%204%2022%205%2010%201%2011%201%2010-1l1-2c1-1%201%200%201%201%200%203%202%204%2015%204l7%201v-4c0-3-1-3-2-3-2%200-2%200-1-1l1-3%201-2%201%202%202%202c3-1%204%201%201%202-2%200-2%201-2%204l1%203%201-3c0-4%202-4%202%200%201%204%206%204%206%200s-8-13-12-13l-5-2v2m148%200v1l9%201c30%205%2066%208%2059%205a1467%201467%200%2000-68-7m-231%205c-19%205-24%206-23%207%202%200%202%201%202%203-1%202-1%202%204%201%209-1%209-1%2010-5%200-4%202-4%202%200l1%203%201-1%202-2c2%200%202%200%201%201s-1%201%202%201l17-2h13v-3c0-3%200-3-5-3-13-2-20-2-27%200m3%2010l-24%204c-4%200%204%202%2010%202l10%201h15c12%200%2013%200%2012%202%200%201%200%202%202%203%203%200%204%202%202%202l-5%204c-3%202-4%204-3%204l2-1h1c-1%201%2010%204%2022%204l11%202%203-1%202-1%2014%201%2015%201%201%201v1c1%202%201%202-2%203-4%201-5%201-1%201l4-1h1c3%202%203%201%201-1-2-3-2-4%201-2l1%202%201%201c1-1%204%202%204%204l-2%203-2%201-6%201c-6%200-8%201-6%205h1c0-2%206-3%2016-1%204%200%204%200%202%201s-2%201-1%202l3-1h1l1%201v-13l1-12-3%202h-3v-2c3%201%206-2%205-5%200-4-2-5-4-2-3%202-6%202-7%200%200-2%200-2%202-2%201%201%203%200%205-1l2-2-2-1c-2-2-4-2-11%200-14%202-14%202-14-2l-1-4h6c3%200%205%200%204-1a916%20916%200%2000-87-3m240%207c0%208%200%209%202%209h4c6%202%2013%202%2012%201-2-1-3-3%200-3%201%201%201%200%201-4v-4l1%204%201%205v-5c0-3%201-4%203-6%203-3%203-4-8-4l-13-2h-3v9m-56-6c-2%201-2%205-2%2043v43h7v-42c0-39%200-42-2-44h-3m6%2043v45h-16l-12-1c5%200%205%200%205-3%200-2%200-3-2-3s-2%200%201-4l3-5h-1c-1%201-1%201-1-1l1-4c0-2%201-1%201%201l1%204v-4c0-6%201-9%203-9l1-1-3-1c-4%200-4%200-4%203%200%206-2%2014-4%2017s-2%202-1-2l3-7c0-5%200-5-2-5l-2%201%202%201%201%202-1%204-4%201h-4v-7c0-7%201-9%204-6s5%203%206%201c2-3%201-3-4-3s-6%200-6-7c0-3%200-3%204-3l4-1-5-1-5-1c-1-1-1-1-1%201%201%203-3%204-4%201v-3l-1-1c-3%200-4-2-2-4%202-1%202-2%202-3-1%200-2%200-3%202h-4l-16-1c-2%200-2%201-2%202%201%201%200%202-1%202-1%201-1%201%201%201l2%201%208%201c9-1%2010-1%2012%202%203%204%202%204-3%203h-12c-6%200-6%200-6-2%200-1%200-2-1-1-1%200-1%208%201%2022l-1%2012c0%204%200%205%203%207%2010%209%2015%2015%2011%2017l-1%202-2%204-4%203h-1c0-1-5%200-7%202h-2l-1-1c0-2-2-3-4-2l-1-3c0-2%200-3-1-1-3%2014-17%2031-27%2033-3%200-3%200-3-4%200-8%200-8%208-8h7l-7-1-6-1h5l8-2%202-2-2-3-1-4%201-2%202-4c2-3%202-3%205-2%202%202%203%202%203%201l-2-1c-2-1-2-1%200-3l2-1h8l-4-1h-3v-23l-1-25v-2h-10c-9%200-10%200-10%202h17c2%201%200%201-5%201-7%200-8%200-8%202%200%203%202%204%208%203l5-1%201-2c1-1%201%201%201%204v6h-8c-7%200-8%200-8-2%200-1-1-2-5-2l-4-1%201%205c0%204-1%206-2%203h-10l3-1c3%201%203%200%203-3s0-3-3-3l-4-2c-1-2-1-2-1%202l-1%208v5h-10c-10%200-12-1-10-5v-3l4-1%204%201c0%202%201%200%202-2l-1-3-1%202-4%201-4-1-1-1-1%204c0%207-2%2015-5%2018l-3%202%201-3v-1l1-1%201-1-14-1c-14%200-14%200-12%202l2%201c2-1%202%203%201%207s-1%204-6%204l-6-1-2%203c-2%203-2%203-3%202%200-2%200-2-1-1s-1%200-1-2l1-3-2%203-2%204%201-4v-3l-2%202c-1%203-1%203-2%202-1-2-1-2-2%200-3%208-10%2013-17%2013l-4%201%2023%204%2011%202c3%202%2012%203%2018%203%204%200%204%200%207%206l4%207-16%201a99%2099%200%2000-22%202c-2%200-2%200%200%203v6c-1%201%200%201%202%201l4%201%202%201%206%202h8l13-2c10%200%2010%200%2011-3s1-3-6-3c-5%200-6%200-6%202%200%201%200%203-2%203h-2v-4c1-4%202-4%206-4%207%200%2013%202%2013%204l-2%204c0%202%205%204%2011%203%203-1%206-1%209%201%204%201%2010%201%2018-1%202%200%202%200%201%201l-4%201c-2%200-2%200%201%201l4%203c2%201%202%201%202-6l1-8%201%203c0%204%202%208%205%208l1%201-3%201-4%201h8l39%202c-3%202-43%204-45%202l-2-2v2c1%201%201%201-3%201s-5%200-7-4c-3-4-4-5-4-2l-2%201-2%201h4l2%201v1l1%201-6%201c-5%200-6%200-7-3-3-4-7-7-8-5-2%201-2%202%201%204l2%204h-3c-2%200-4-1-8-5-2-3-6-5-7-5s-1%201%203%205l6%205H0v37l1%2038h46a733%20733%200%200145%203l4%201c3%200%203%200%202-1h9c6%202%206%203%201%203h-4l2%201h10c2-2%202-2-4-3l-6-3c1-1%2011%202%2013%204l4%201c2-1%202-1-1-2l-7-3c-8-1-1-1%2035-1a36539%2036539%200%200046%202c-5%200-5%202%200%203%204%200%204%200%202%201l-3%201h3c3%201%205%205%202%205v1l1%201c0%203%200%203%201%201l2-3c0-2%203-3%203-1l2%201h7l-3-2c-5-1-4-2%201-3h17c0%201-6%203-10%203-3%200-3%201-3%203%200%204%200%205%202%203%200-2%201-2%201-1l2%201%202-2h1c1%202%205%202%205%201-1-1%200-3%201-3v-2c-1%200-1-1%201-2%201-2%202-2%203-1l6%203c4%200%204%200%202%201h-6c-4-1-5-1-3%201l5%201c5%200%2019-3%2017-4-3%200-5-2-3-2l1-1%202-2h-3c-13%201-23-1-14-3l7-1a832%20832%200%200166%202c1-2%203-2%2044-2%2038%200%2043%200%2043-2l1-37v-36h-53l2-3%206-10%204-6h14c1%201%202%201%202-1l3-3c4-2%206-2-18-1a31425%2031425%200%2001-111%208l-11%201c-3%201%204%201%2030-1a451%20451%200%2001-79-2h-1l-3%201h-2l2-1%203-1h-3c-2%200-2%200-1-1l4-1c1%201%201%200%201-2s0-3%201-2l1%202v3h22a335%20335%200%200064-2l19-1%201-17v-16l-51%201-52-1v-3l1-2v5h37l-17-1-17-1%203-1c3%201%203%201%203-2l1-2v5l15-1c12%200%2015%200%2016%202%200%201%209%201%209-1l11-2a1274%201274%200%200023%202l1-1c1-2%205-2%205%200%200%203%202%200%203-4%201-3%201-4%201-1l-1%204%205-1h4l-1-6c0-6%201-6%201%201l1%205h7l11%202%203%202h-4l-10%201h-7v33h9a3693%203693%200%200161-5l7-2%201-1c3%200%200-2-5-3l-6-2%203-10%203-11h-24l-27-1c-4-2-5-4-3-4l3%201h1l28-1c27%200%2034-1%2032-3-2-4%205-9%2012-8h2c1-2%200-2-3-2l-4-2v-3h-1l-1-1-1-1c-2-1-1-3%201-3%201-1%200-1-2-1h-5a402%20402%200%2000-56-2c-3%200-4%200-3-2%200-2%201-2%205-2%203%200%204%200%204-2h1c0%203%202%202%202%200%201-3%203-2%204%201%200%202%201%202%208%202h7v-8l1-7v15h12v-14l1%207v7h3c2%200%203%200%203-3%201-4%203-5%206-5l4-2c2-2%202-2-2-3-2-1-1-1%201-1%204%200%206%202%203%204-1%202-1%202%202%202s3%200%203-2c-1-1%200-2%201-3%202-1%202-2%200-3-1-1-22-3-37-3h-6l6%201%2015%201%2011%201h-7a430%20430%200%2000-26-2c0-2-24-4-45-4l-9-1h17c20%200%2020%200%2024-3l4-2v3c0%202%200%203%202%203l7%201c4%200%208-2%208-5l2-1c2%200%202%200%201%201v5l1-2%201-2v5h20c1%202%203%201%203-1l-1-3%201-2c1-2%202-2%204%201%203%203%203%203%200%203-2-1-3%200-3%201%200%202%201%202%204%202%204%200%204-2%201-6-1-1-2-3-1-4l-1-1-2-1-2%202c-1%201-1%200-1-2%200-4-1-5-7-6-2-1-3-1-3%201-1%201%200%202%202%202%202%201%201%201-2%201l-5%202c-2%202-5%202-5%201l2-2c5-1%201-2-10-2l-14-2-1%201c1%201%200%202-1%202l-1-1c0-1-1-2-3-2-4%200-6-2-2-2%205%200%202-2-4-2-6-1-6-1-5-3s2-2%202%200c1%201%205%202%205%200s-2-3-8-4a320%20320%200%2001-13%200l-3%201c-1%200-2%200-1-1l-3-1h-4l-2%201c0%202%202%203%2015%204l10%201-3%201-14-2c-9%200-11-1-11-2s-2%201-3%205c-2%205-2%2017-1%2019l18%201%2017%201-18-1h-17v16l1%2015%201%202-1%201-1%205-1%207a527%20527%200%20010-81c1-5-1-5-6-1-6%205-16%206-23%200-5-3-5-3-5%203l1%205h6c11%200%2016%201%2016%203l2%201h-12c-15%200-17-1-15-4s1-12%200-12c-1-1-2%200-2%202l-1-3-1-9-1%2043m91-24c0%205%200%207-2%207h-1v-4c-2-5-5-3-4%203%201%204%202%205%2014%205%207%201%207%201%206-1l-1-3c-7%200-7%200-1-1l7-1h-6c-4%200-6%200-4-1h8c7%200%2010%203%207%207-1%202-1%202%202%202s3%200%202-1l-1-4c0-3%203-2%204%201%201%202%201%202%201-1l1-4v-4l-1-3h-2l-3-1-4-1c-10%200-17%200-16-1s1-1-2-1h-4v7m-54%201c0%205%200%206-2%208s-2%203-2%208c0%206%200%207-1%206l-3%201c0%201-1%202-3%202h-2v12c1%2012%201%2012-2%2014-2%202-2%203-2%208v7h4c4%200%204%200%204-4%200-2%200-3%201-2%201%204%202-1%202-15v-17c-2-2-1-4%201-4l1%2024%201%2024v-61l3-2c2-2%202-3%202-7-1-7-3-8-2-2m-31%208l-1%205v4h9l13%201h4v-4c0-5-2-6-12-6-5%200-5%200-2%201%204%200%204%200%204%204%200%203%200%203-1%201%200-3-1-4-6-4-4%200-6-1-7-2h-1M23%20163c-8%204-13%2015-13%2030v5c0-9%202-8%202%201%201%2010%203%2017%206%2023%202%204%205%207%205%205l-5-10c-2-2-3-13-2-16%201-4%202-4%206%200%203%203%204%205%2010%2018%204%2010%206%2011%2010%207%206-6%207-13%207-28%201-15-1-20-6-28-5-9-12-11-20-7m271%2022h-1c-3%200-4%202-4%205l1%204h30v-3c0-3%200-3-2-2l-13-1c-9%200-10%200-10-2v-2l-1%201m-1%2020c4%202%206%204%206%207v1l1-4v-3h9l9%201h1l5-1%205%201h5l3-1%203%201v1l2-1c0-2%2013-1%2013%200h2l5-1h5l-17-1a3780%203780%200%2001-57%200m-32%207c0%201-3%202-3%200l-3-1-3%201v1c4%200%202%203-1%203l11%201%2015-1c0-4-1-5-8-4l-6-1v-1l-2%202m-111%2063v5h19c14%200%2017%200%2012-1-14-2-18-2-19-1l-3%201c-2%200-2%200-2-4%200-5%200-5-2-5s-3%201-3%202c0%202%200%202-1%200s-1-1-1%203m48-1l-1%201-1%202v2l-1%201h-1l-2%203-4%202c-2%201%206%202%208%200h1l17%201c20%200%2019-2-1-2l-12-1h-5c0-1%202-3%204-3v-4l-1-4-1%202m-14%2046l-1%207c1%207%201%208%207%207%204-1%203-5-2-6-3%200-4-2-1-2%202%200%203-2%204-5%201-2%200-2-2-2l-5%201'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"regular":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAIEBQH/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAAdCFOvNbrORdiHQf/8QAGhAAAgMBAQAAAAAAAAAAAAAAAgMAARQREv/aAAgBAQABBQJjLAiYVWBehM+QjuIMKXnXM65nVP/EABYRAAMAAAAAAAAAAAAAAAAAAAABEv/aAAgBAwEBPwGWSymUz//EABYRAQEBAAAAAAAAAAAAAAAAAAAREP/aAAgBAgEBPwHIj//EAB8QAAECBgMAAAAAAAAAAAAAAAACEQMQISIxoTJh4f/aAAgBAQAGPwLw6HGhrteV6qmNmNnE/8QAHBAAAwADAQEBAAAAAAAAAAAAAAERITFBYZHw/9oACAEBAAE/IUxcb2wnXDIn4Grqp30csjT4+GjLOw9f0ZnWfg/Rn//aAAwDAQACAAMAAAAQMMcB/8QAFhEAAwAAAAAAAAAAAAAAAAAAAAFh/9oACAEDAQE/EIsiyrKs/8QAFxEAAwEAAAAAAAAAAAAAAAAAABFRAf/aAAgBAgEBPxB5R5RIJD//xAAgEAEAAgICAQUAAAAAAAAAAAABABEhMUFR0WFxgfDx/9oACAEBAAE/EHamsgr5MUd4jaRC8ijw+0BFtprs3LAwio2WtruUgJKWOX5CgDiBdHGz0mjg+m5aoXCVEKPP5n//2Q==","aspectRatio":1,"src":"/static/60f53bc1df34e9dd797daa54291216ad/1dc0b/designSystem1.jpg","srcSet":"/static/60f53bc1df34e9dd797daa54291216ad/3a5ce/designSystem1.jpg 163w,\n/static/60f53bc1df34e9dd797daa54291216ad/05730/designSystem1.jpg 327w,\n/static/60f53bc1df34e9dd797daa54291216ad/1dc0b/designSystem1.jpg 653w,\n/static/60f53bc1df34e9dd797daa54291216ad/f72c7/designSystem1.jpg 980w,\n/static/60f53bc1df34e9dd797daa54291216ad/0ff54/designSystem1.jpg 1200w","srcWebp":"/static/60f53bc1df34e9dd797daa54291216ad/0acdf/designSystem1.webp","srcSetWebp":"/static/60f53bc1df34e9dd797daa54291216ad/ac59e/designSystem1.webp 163w,\n/static/60f53bc1df34e9dd797daa54291216ad/7660b/designSystem1.webp 327w,\n/static/60f53bc1df34e9dd797daa54291216ad/0acdf/designSystem1.webp 653w,\n/static/60f53bc1df34e9dd797daa54291216ad/75470/designSystem1.webp 980w,\n/static/60f53bc1df34e9dd797daa54291216ad/9000d/designSystem1.webp 1200w","sizes":"(max-width: 653px) 100vw, 653px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M232%2048h-3c-2%200-2%200%200%201v2l-2-1h-7c-6%200-6%200-4%201%205%202%204%204-1%203l-7%201c-2%201-1%201%205%201%204%200%206%200%204%201s-2%201%202%201h6l5-1c2%200%202%200%201%202l-1%202%202-1c1-2%206-4%2012-5s16-5%2015-6l-7-1-5%201c2%201%202%201-1%202-4%201-6%201-2-1%202-1%202-1%200-1-1%200-2%200-1-1l-5-1-6%201M36%2052c-3%202-5%206-5%2011%200%203%200%203%201%202%202-2%202-2%203%201l4%207%202%203%203-2c9-9%202-28-8-22m211%206c-12%205-15%2028-6%2038l4%203h8c12-2%2018-8%2016-18l1-5c2-2-1-11-5-15-6-5-11-6-18-3m-123%203c0%203%200%204-1%203s-1%200-1%205c0%204%200%205%201%204%200-2%202-3%202-1%200%203-3%2011-4%2011v-2c2-4%201-4-1%200-3%204-5%202-3-2l1-3c-1%200-2%201-2%203l-2%201c0-4-3-4-4%201l-3%203-1%201-1%201c-4%201-4%201%200-2%204-5%207-13%204-14-7-1-7-1-7-5%200-2%200-3%201-2s4%201%204-1l-4-1-5%201%202%201c2%200%201%205-1%205s-2%200-1%201c3%200%202%202%200%205-3%203-4%203-3-1l1-6c0-2%200-3-1-1%200%202-1%202-2%202l-5-1c-3%200-3%200-3-4%200-3%200-3-1%200%200%203%200%203-5%203h-5l4%201c4%201%206%202%204%203-1%201-5%202-7%201l-1%201-4%201h-4c-1-2-1-2-4%200-2%201-3%200-3-4%200-2%200-2-2%200-1%202-1%203-2%202h-2l-3-1c-1-1-2%200-3%202l-6%206-3%202%205%201%2010%201h2c-3%201%205%202%2013%202%204%200%204%200%204%202-1%202%201%204%205%204l2%201-3%201h-3l-2%201c-3%200-4%202-1%202%202%200%202%200-1%202l-3%201h3l5%201h1c-1-2%202-3%206-2%202%201%203%203%201%205v1l2-2%205-2%206-1%207-2c2%200%203-1%203-2h1c0%202%202%203%2011%204%209%200%2011%202%202%202h-6l3%204c3%204%204%205%207%205s3%200%201-1l-2-1h2l3%201%202%201v-2c2-1%200-4-4-4l-3-1h3l4-1%201-1c2%202%206%200%206-3%201-4%202-4%2019-8%202%200%202%200%201-2l-2-3c-1-1-1%200-1%202s0%203-1%202h-10v-3c0-3%200-3%203-3l4-2%204-2c2%200%202%200%200-1-3-1-3-1%202-1l6-1h4c3%200%207-3%205-5l-1%201c-1%202-2%202-6%202-2%200-4%200-3%201l-4%201-10%201c-4%200-5%200-4-1l6-1c4-1%204-1-2-1-5%200-6%200-9%203l-5%203-4%203c-3%203-6%204-4%201%203-8%204-20%200-25v3m201%207h-6l-6%201c-2%200-1%207%201%207l1%202-1%202c-2%200-2%202-2%2011v12l1-11c0-11%200-11%203-12%203-2%204-1%202%201l-1%204c0%203%200%203%203%203h3l-3-1-2-1%202-1c2-1%202-1%203%201%202%203%203%206%202%207v1l-2%201c-3%200-2%203%202%208l3%203-1-6v-7h3c2%200%202%200%201%201s-2%202-1%2010v3l3-3%203-5%202-2%201-2%201-2%202-1c2-2%202-12%201-15v-1l-1-3-3-4h-7c-5%200-6%200-3-1l4-1h-4l-4%201m-98%2013c-6%201-6%201-6%208v7h-4l-5-1v-3l1-2c0-2-2-3-2%200-1%201-1%200-1-2v-4h5c3-1%205-1%204-2-2-1-29%204-29%206l1%201%201%202c1%201%201%201%201-1s1-3%206-4c10-2%209-2%2010%204a32%2032%200%20003%2012l-7-1-2-1%201%202c1%202%201%202-2%202s-3%200-2-1l1-2-2%201h-1c-1-1%200-2%204-2%204-1%204-1%204-4-1-5-2-5-8-4-5%200-5%200-6%204v5l-1%201h-2l1%201v1c-1%200-2-1-2-3s0-2-6-2l-5%201v-6c0-6-1-6-3-6s-2%200-2%206l-1%208c-3%203%208%2014%2012%2013l3%201-2%201h4l1-1c-3%200-2-2%201-2%203-1%203%200%202%201%200%201%200%202%202%201l3-5%201-4%206-2a17833%2017833%200%200034-5h3l-2-3-5-6c-1-3-1-3-2-1%200%203%200%203-4%202h-4l-2-5c0-3%202-5%207-5l4-1-1-1-5%201m24%2020l-5%202h-2l-3%201-7%201h-3c3%200%204%200%204%202%200%201%200%202%201%201l1%201%202%202c2%201%203%201%202%202-2%201-1%202%202%202l5%202%202%201c1-1-2-4-5-4l-2-1c1-1%203-2%209-2%207%200%207%200%202%201l-3%201c3%200%203%200%201%201h-2l2%204c2%203%203%204%206%205%205%201%209%203%2011%207l2%202c0-2%204-1%204%201l-2%201c-2-1-2%200-2%202s0%203-2%203l-4%201-1-1v-1l-1%202%204%201%205-1%201-2c0-2%201-3%203%200%202%201%202%201%206-2l4-4h-4c-4%200-5%200-4-4%200-3%204-3%204%200%200%202%201%203%202%203%202%201%202%200%202-2%200-3-3-5-7-5h-2l4-2c2%200%203-1%203-2%201-1%201-1%202%201v2l3-2c3-2%204-2%2014-1l29%204c2%200%205%206%205%2010%200%202%200%202%204%202%203%200%203%200%203-3s0-3%201-2l5%202%203%203c0%201%200%202%201%201v-6h5c4%200%205%201%206%202v-2c0-3-1-6-3-7-3-3-3-4%201-4l6-2a1141%201141%200%2001-103-18l-15%201m-115%208v3l-6-1-9-1c-4%200-4%200-4%202%200%204%208%206%2011%203h1c1%202-1%202-24%201l-18-2-1%203c1%204%201%204%2022%205%2010%201%2011%201%2010-1l1-2c1-1%201%200%201%201%200%203%202%204%2015%204l7%201v-4c0-3-1-3-2-3-2%200-2%200-1-1l1-3%201-2%201%202%202%202c3-1%204%201%201%202-2%200-2%201-2%204l1%203%201-3c0-4%202-4%202%200%201%204%206%204%206%200s-8-13-12-13l-5-2v2m148%200v1l9%201c30%205%2066%208%2059%205a1467%201467%200%2000-68-7m-231%205c-19%205-24%206-23%207%202%200%202%201%202%203-1%202-1%202%204%201%209-1%209-1%2010-5%200-4%202-4%202%200l1%203%201-1%202-2c2%200%202%200%201%201s-1%201%202%201l17-2h13v-3c0-3%200-3-5-3-13-2-20-2-27%200m3%2010l-24%204c-4%200%204%202%2010%202l10%201h15c12%200%2013%200%2012%202%200%201%200%202%202%203%203%200%204%202%202%202l-5%204c-3%202-4%204-3%204l2-1h1c-1%201%2010%204%2022%204l11%202%203-1%202-1%2014%201%2015%201%201%201v1c1%202%201%202-2%203-4%201-5%201-1%201l4-1h1c3%202%203%201%201-1-2-3-2-4%201-2l1%202%201%201c1-1%204%202%204%204l-2%203-2%201-6%201c-6%200-8%201-6%205h1c0-2%206-3%2016-1%204%200%204%200%202%201s-2%201-1%202l3-1h1l1%201v-13l1-12-3%202h-3v-2c3%201%206-2%205-5%200-4-2-5-4-2-3%202-6%202-7%200%200-2%200-2%202-2%201%201%203%200%205-1l2-2-2-1c-2-2-4-2-11%200-14%202-14%202-14-2l-1-4h6c3%200%205%200%204-1a916%20916%200%2000-87-3m240%207c0%208%200%209%202%209h4c6%202%2013%202%2012%201-2-1-3-3%200-3%201%201%201%200%201-4v-4l1%204%201%205v-5c0-3%201-4%203-6%203-3%203-4-8-4l-13-2h-3v9m-56-6c-2%201-2%205-2%2043v43h7v-42c0-39%200-42-2-44h-3m6%2043v45h-16l-12-1c5%200%205%200%205-3%200-2%200-3-2-3s-2%200%201-4l3-5h-1c-1%201-1%201-1-1l1-4c0-2%201-1%201%201l1%204v-4c0-6%201-9%203-9l1-1-3-1c-4%200-4%200-4%203%200%206-2%2014-4%2017s-2%202-1-2l3-7c0-5%200-5-2-5l-2%201%202%201%201%202-1%204-4%201h-4v-7c0-7%201-9%204-6s5%203%206%201c2-3%201-3-4-3s-6%200-6-7c0-3%200-3%204-3l4-1-5-1-5-1c-1-1-1-1-1%201%201%203-3%204-4%201v-3l-1-1c-3%200-4-2-2-4%202-1%202-2%202-3-1%200-2%200-3%202h-4l-16-1c-2%200-2%201-2%202%201%201%200%202-1%202-1%201-1%201%201%201l2%201%208%201c9-1%2010-1%2012%202%203%204%202%204-3%203h-12c-6%200-6%200-6-2%200-1%200-2-1-1-1%200-1%208%201%2022l-1%2012c0%204%200%205%203%207%2010%209%2015%2015%2011%2017l-1%202-2%204-4%203h-1c0-1-5%200-7%202h-2l-1-1c0-2-2-3-4-2l-1-3c0-2%200-3-1-1-3%2014-17%2031-27%2033-3%200-3%200-3-4%200-8%200-8%208-8h7l-7-1-6-1h5l8-2%202-2-2-3-1-4%201-2%202-4c2-3%202-3%205-2%202%202%203%202%203%201l-2-1c-2-1-2-1%200-3l2-1h8l-4-1h-3v-23l-1-25v-2h-10c-9%200-10%200-10%202h17c2%201%200%201-5%201-7%200-8%200-8%202%200%203%202%204%208%203l5-1%201-2c1-1%201%201%201%204v6h-8c-7%200-8%200-8-2%200-1-1-2-5-2l-4-1%201%205c0%204-1%206-2%203h-10l3-1c3%201%203%200%203-3s0-3-3-3l-4-2c-1-2-1-2-1%202l-1%208v5h-10c-10%200-12-1-10-5v-3l4-1%204%201c0%202%201%200%202-2l-1-3-1%202-4%201-4-1-1-1-1%204c0%207-2%2015-5%2018l-3%202%201-3v-1l1-1%201-1-14-1c-14%200-14%200-12%202l2%201c2-1%202%203%201%207s-1%204-6%204l-6-1-2%203c-2%203-2%203-3%202%200-2%200-2-1-1s-1%200-1-2l1-3-2%203-2%204%201-4v-3l-2%202c-1%203-1%203-2%202-1-2-1-2-2%200-3%208-10%2013-17%2013l-4%201%2023%204%2011%202c3%202%2012%203%2018%203%204%200%204%200%207%206l4%207-16%201a99%2099%200%2000-22%202c-2%200-2%200%200%203v6c-1%201%200%201%202%201l4%201%202%201%206%202h8l13-2c10%200%2010%200%2011-3s1-3-6-3c-5%200-6%200-6%202%200%201%200%203-2%203h-2v-4c1-4%202-4%206-4%207%200%2013%202%2013%204l-2%204c0%202%205%204%2011%203%203-1%206-1%209%201%204%201%2010%201%2018-1%202%200%202%200%201%201l-4%201c-2%200-2%200%201%201l4%203c2%201%202%201%202-6l1-8%201%203c0%204%202%208%205%208l1%201-3%201-4%201h8l39%202c-3%202-43%204-45%202l-2-2v2c1%201%201%201-3%201s-5%200-7-4c-3-4-4-5-4-2l-2%201-2%201h4l2%201v1l1%201-6%201c-5%200-6%200-7-3-3-4-7-7-8-5-2%201-2%202%201%204l2%204h-3c-2%200-4-1-8-5-2-3-6-5-7-5s-1%201%203%205l6%205H0v37l1%2038h46a733%20733%200%200145%203l4%201c3%200%203%200%202-1h9c6%202%206%203%201%203h-4l2%201h10c2-2%202-2-4-3l-6-3c1-1%2011%202%2013%204l4%201c2-1%202-1-1-2l-7-3c-8-1-1-1%2035-1a36539%2036539%200%200046%202c-5%200-5%202%200%203%204%200%204%200%202%201l-3%201h3c3%201%205%205%202%205v1l1%201c0%203%200%203%201%201l2-3c0-2%203-3%203-1l2%201h7l-3-2c-5-1-4-2%201-3h17c0%201-6%203-10%203-3%200-3%201-3%203%200%204%200%205%202%203%200-2%201-2%201-1l2%201%202-2h1c1%202%205%202%205%201-1-1%200-3%201-3v-2c-1%200-1-1%201-2%201-2%202-2%203-1l6%203c4%200%204%200%202%201h-6c-4-1-5-1-3%201l5%201c5%200%2019-3%2017-4-3%200-5-2-3-2l1-1%202-2h-3c-13%201-23-1-14-3l7-1a832%20832%200%200166%202c1-2%203-2%2044-2%2038%200%2043%200%2043-2l1-37v-36h-53l2-3%206-10%204-6h14c1%201%202%201%202-1l3-3c4-2%206-2-18-1a31425%2031425%200%2001-111%208l-11%201c-3%201%204%201%2030-1a451%20451%200%2001-79-2h-1l-3%201h-2l2-1%203-1h-3c-2%200-2%200-1-1l4-1c1%201%201%200%201-2s0-3%201-2l1%202v3h22a335%20335%200%200064-2l19-1%201-17v-16l-51%201-52-1v-3l1-2v5h37l-17-1-17-1%203-1c3%201%203%201%203-2l1-2v5l15-1c12%200%2015%200%2016%202%200%201%209%201%209-1l11-2a1274%201274%200%200023%202l1-1c1-2%205-2%205%200%200%203%202%200%203-4%201-3%201-4%201-1l-1%204%205-1h4l-1-6c0-6%201-6%201%201l1%205h7l11%202%203%202h-4l-10%201h-7v33h9a3693%203693%200%200161-5l7-2%201-1c3%200%200-2-5-3l-6-2%203-10%203-11h-24l-27-1c-4-2-5-4-3-4l3%201h1l28-1c27%200%2034-1%2032-3-2-4%205-9%2012-8h2c1-2%200-2-3-2l-4-2v-3h-1l-1-1-1-1c-2-1-1-3%201-3%201-1%200-1-2-1h-5a402%20402%200%2000-56-2c-3%200-4%200-3-2%200-2%201-2%205-2%203%200%204%200%204-2h1c0%203%202%202%202%200%201-3%203-2%204%201%200%202%201%202%208%202h7v-8l1-7v15h12v-14l1%207v7h3c2%200%203%200%203-3%201-4%203-5%206-5l4-2c2-2%202-2-2-3-2-1-1-1%201-1%204%200%206%202%203%204-1%202-1%202%202%202s3%200%203-2c-1-1%200-2%201-3%202-1%202-2%200-3-1-1-22-3-37-3h-6l6%201%2015%201%2011%201h-7a430%20430%200%2000-26-2c0-2-24-4-45-4l-9-1h17c20%200%2020%200%2024-3l4-2v3c0%202%200%203%202%203l7%201c4%200%208-2%208-5l2-1c2%200%202%200%201%201v5l1-2%201-2v5h20c1%202%203%201%203-1l-1-3%201-2c1-2%202-2%204%201%203%203%203%203%200%203-2-1-3%200-3%201%200%202%201%202%204%202%204%200%204-2%201-6-1-1-2-3-1-4l-1-1-2-1-2%202c-1%201-1%200-1-2%200-4-1-5-7-6-2-1-3-1-3%201-1%201%200%202%202%202%202%201%201%201-2%201l-5%202c-2%202-5%202-5%201l2-2c5-1%201-2-10-2l-14-2-1%201c1%201%200%202-1%202l-1-1c0-1-1-2-3-2-4%200-6-2-2-2%205%200%202-2-4-2-6-1-6-1-5-3s2-2%202%200c1%201%205%202%205%200s-2-3-8-4a320%20320%200%2001-13%200l-3%201c-1%200-2%200-1-1l-3-1h-4l-2%201c0%202%202%203%2015%204l10%201-3%201-14-2c-9%200-11-1-11-2s-2%201-3%205c-2%205-2%2017-1%2019l18%201%2017%201-18-1h-17v16l1%2015%201%202-1%201-1%205-1%207a527%20527%200%20010-81c1-5-1-5-6-1-6%205-16%206-23%200-5-3-5-3-5%203l1%205h6c11%200%2016%201%2016%203l2%201h-12c-15%200-17-1-15-4s1-12%200-12c-1-1-2%200-2%202l-1-3-1-9-1%2043m91-24c0%205%200%207-2%207h-1v-4c-2-5-5-3-4%203%201%204%202%205%2014%205%207%201%207%201%206-1l-1-3c-7%200-7%200-1-1l7-1h-6c-4%200-6%200-4-1h8c7%200%2010%203%207%207-1%202-1%202%202%202s3%200%202-1l-1-4c0-3%203-2%204%201%201%202%201%202%201-1l1-4v-4l-1-3h-2l-3-1-4-1c-10%200-17%200-16-1s1-1-2-1h-4v7m-54%201c0%205%200%206-2%208s-2%203-2%208c0%206%200%207-1%206l-3%201c0%201-1%202-3%202h-2v12c1%2012%201%2012-2%2014-2%202-2%203-2%208v7h4c4%200%204%200%204-4%200-2%200-3%201-2%201%204%202-1%202-15v-17c-2-2-1-4%201-4l1%2024%201%2024v-61l3-2c2-2%202-3%202-7-1-7-3-8-2-2m-31%208l-1%205v4h9l13%201h4v-4c0-5-2-6-12-6-5%200-5%200-2%201%204%200%204%200%204%204%200%203%200%203-1%201%200-3-1-4-6-4-4%200-6-1-7-2h-1M23%20163c-8%204-13%2015-13%2030v5c0-9%202-8%202%201%201%2010%203%2017%206%2023%202%204%205%207%205%205l-5-10c-2-2-3-13-2-16%201-4%202-4%206%200%203%203%204%205%2010%2018%204%2010%206%2011%2010%207%206-6%207-13%207-28%201-15-1-20-6-28-5-9-12-11-20-7m271%2022h-1c-3%200-4%202-4%205l1%204h30v-3c0-3%200-3-2-2l-13-1c-9%200-10%200-10-2v-2l-1%201m-1%2020c4%202%206%204%206%207v1l1-4v-3h9l9%201h1l5-1%205%201h5l3-1%203%201v1l2-1c0-2%2013-1%2013%200h2l5-1h5l-17-1a3780%203780%200%2001-57%200m-32%207c0%201-3%202-3%200l-3-1-3%201v1c4%200%202%203-1%203l11%201%2015-1c0-4-1-5-8-4l-6-1v-1l-2%202m-111%2063v5h19c14%200%2017%200%2012-1-14-2-18-2-19-1l-3%201c-2%200-2%200-2-4%200-5%200-5-2-5s-3%201-3%202c0%202%200%202-1%200s-1-1-1%203m48-1l-1%201-1%202v2l-1%201h-1l-2%203-4%202c-2%201%206%202%208%200h1l17%201c20%200%2019-2-1-2l-12-1h-5c0-1%202-3%204-3v-4l-1-4-1%202m-14%2046l-1%207c1%207%201%208%207%207%204-1%203-5-2-6-3%200-4-2-1-2%202%200%203-2%204-5%201-2%200-2-2-2l-5%201'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"narrow":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAIEBQH/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAAdCFOvNbrORdiHQf/8QAGhAAAgMBAQAAAAAAAAAAAAAAAgMAARQREv/aAAgBAQABBQJjLAiYVWBehM+QjuIMKXnXM65nVP/EABYRAAMAAAAAAAAAAAAAAAAAAAABEv/aAAgBAwEBPwGWSymUz//EABYRAQEBAAAAAAAAAAAAAAAAAAAREP/aAAgBAgEBPwHIj//EAB8QAAECBgMAAAAAAAAAAAAAAAACEQMQISIxoTJh4f/aAAgBAQAGPwLw6HGhrteV6qmNmNnE/8QAHBAAAwADAQEBAAAAAAAAAAAAAAERITFBYZHw/9oACAEBAAE/IUxcb2wnXDIn4Grqp30csjT4+GjLOw9f0ZnWfg/Rn//aAAwDAQACAAMAAAAQMMcB/8QAFhEAAwAAAAAAAAAAAAAAAAAAAAFh/9oACAEDAQE/EIsiyrKs/8QAFxEAAwEAAAAAAAAAAAAAAAAAABFRAf/aAAgBAgEBPxB5R5RIJD//xAAgEAEAAgICAQUAAAAAAAAAAAABABEhMUFR0WFxgfDx/9oACAEBAAE/EHamsgr5MUd4jaRC8ijw+0BFtprs3LAwio2WtruUgJKWOX5CgDiBdHGz0mjg+m5aoXCVEKPP5n//2Q==","aspectRatio":1,"src":"/static/60f53bc1df34e9dd797daa54291216ad/eaa58/designSystem1.jpg","srcSet":"/static/60f53bc1df34e9dd797daa54291216ad/5a3ee/designSystem1.jpg 114w,\n/static/60f53bc1df34e9dd797daa54291216ad/41f8f/designSystem1.jpg 229w,\n/static/60f53bc1df34e9dd797daa54291216ad/eaa58/designSystem1.jpg 457w,\n/static/60f53bc1df34e9dd797daa54291216ad/c309b/designSystem1.jpg 686w,\n/static/60f53bc1df34e9dd797daa54291216ad/e3008/designSystem1.jpg 914w,\n/static/60f53bc1df34e9dd797daa54291216ad/0ff54/designSystem1.jpg 1200w","srcWebp":"/static/60f53bc1df34e9dd797daa54291216ad/15384/designSystem1.webp","srcSetWebp":"/static/60f53bc1df34e9dd797daa54291216ad/31fce/designSystem1.webp 114w,\n/static/60f53bc1df34e9dd797daa54291216ad/e3e25/designSystem1.webp 229w,\n/static/60f53bc1df34e9dd797daa54291216ad/15384/designSystem1.webp 457w,\n/static/60f53bc1df34e9dd797daa54291216ad/0258d/designSystem1.webp 686w,\n/static/60f53bc1df34e9dd797daa54291216ad/64ea2/designSystem1.webp 914w,\n/static/60f53bc1df34e9dd797daa54291216ad/9000d/designSystem1.webp 1200w","sizes":"(max-width: 457px) 100vw, 457px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M232%2048h-3c-2%200-2%200%200%201v2l-2-1h-7c-6%200-6%200-4%201%205%202%204%204-1%203l-7%201c-2%201-1%201%205%201%204%200%206%200%204%201s-2%201%202%201h6l5-1c2%200%202%200%201%202l-1%202%202-1c1-2%206-4%2012-5s16-5%2015-6l-7-1-5%201c2%201%202%201-1%202-4%201-6%201-2-1%202-1%202-1%200-1-1%200-2%200-1-1l-5-1-6%201M36%2052c-3%202-5%206-5%2011%200%203%200%203%201%202%202-2%202-2%203%201l4%207%202%203%203-2c9-9%202-28-8-22m211%206c-12%205-15%2028-6%2038l4%203h8c12-2%2018-8%2016-18l1-5c2-2-1-11-5-15-6-5-11-6-18-3m-123%203c0%203%200%204-1%203s-1%200-1%205c0%204%200%205%201%204%200-2%202-3%202-1%200%203-3%2011-4%2011v-2c2-4%201-4-1%200-3%204-5%202-3-2l1-3c-1%200-2%201-2%203l-2%201c0-4-3-4-4%201l-3%203-1%201-1%201c-4%201-4%201%200-2%204-5%207-13%204-14-7-1-7-1-7-5%200-2%200-3%201-2s4%201%204-1l-4-1-5%201%202%201c2%200%201%205-1%205s-2%200-1%201c3%200%202%202%200%205-3%203-4%203-3-1l1-6c0-2%200-3-1-1%200%202-1%202-2%202l-5-1c-3%200-3%200-3-4%200-3%200-3-1%200%200%203%200%203-5%203h-5l4%201c4%201%206%202%204%203-1%201-5%202-7%201l-1%201-4%201h-4c-1-2-1-2-4%200-2%201-3%200-3-4%200-2%200-2-2%200-1%202-1%203-2%202h-2l-3-1c-1-1-2%200-3%202l-6%206-3%202%205%201%2010%201h2c-3%201%205%202%2013%202%204%200%204%200%204%202-1%202%201%204%205%204l2%201-3%201h-3l-2%201c-3%200-4%202-1%202%202%200%202%200-1%202l-3%201h3l5%201h1c-1-2%202-3%206-2%202%201%203%203%201%205v1l2-2%205-2%206-1%207-2c2%200%203-1%203-2h1c0%202%202%203%2011%204%209%200%2011%202%202%202h-6l3%204c3%204%204%205%207%205s3%200%201-1l-2-1h2l3%201%202%201v-2c2-1%200-4-4-4l-3-1h3l4-1%201-1c2%202%206%200%206-3%201-4%202-4%2019-8%202%200%202%200%201-2l-2-3c-1-1-1%200-1%202s0%203-1%202h-10v-3c0-3%200-3%203-3l4-2%204-2c2%200%202%200%200-1-3-1-3-1%202-1l6-1h4c3%200%207-3%205-5l-1%201c-1%202-2%202-6%202-2%200-4%200-3%201l-4%201-10%201c-4%200-5%200-4-1l6-1c4-1%204-1-2-1-5%200-6%200-9%203l-5%203-4%203c-3%203-6%204-4%201%203-8%204-20%200-25v3m201%207h-6l-6%201c-2%200-1%207%201%207l1%202-1%202c-2%200-2%202-2%2011v12l1-11c0-11%200-11%203-12%203-2%204-1%202%201l-1%204c0%203%200%203%203%203h3l-3-1-2-1%202-1c2-1%202-1%203%201%202%203%203%206%202%207v1l-2%201c-3%200-2%203%202%208l3%203-1-6v-7h3c2%200%202%200%201%201s-2%202-1%2010v3l3-3%203-5%202-2%201-2%201-2%202-1c2-2%202-12%201-15v-1l-1-3-3-4h-7c-5%200-6%200-3-1l4-1h-4l-4%201m-98%2013c-6%201-6%201-6%208v7h-4l-5-1v-3l1-2c0-2-2-3-2%200-1%201-1%200-1-2v-4h5c3-1%205-1%204-2-2-1-29%204-29%206l1%201%201%202c1%201%201%201%201-1s1-3%206-4c10-2%209-2%2010%204a32%2032%200%20003%2012l-7-1-2-1%201%202c1%202%201%202-2%202s-3%200-2-1l1-2-2%201h-1c-1-1%200-2%204-2%204-1%204-1%204-4-1-5-2-5-8-4-5%200-5%200-6%204v5l-1%201h-2l1%201v1c-1%200-2-1-2-3s0-2-6-2l-5%201v-6c0-6-1-6-3-6s-2%200-2%206l-1%208c-3%203%208%2014%2012%2013l3%201-2%201h4l1-1c-3%200-2-2%201-2%203-1%203%200%202%201%200%201%200%202%202%201l3-5%201-4%206-2a17833%2017833%200%200034-5h3l-2-3-5-6c-1-3-1-3-2-1%200%203%200%203-4%202h-4l-2-5c0-3%202-5%207-5l4-1-1-1-5%201m24%2020l-5%202h-2l-3%201-7%201h-3c3%200%204%200%204%202%200%201%200%202%201%201l1%201%202%202c2%201%203%201%202%202-2%201-1%202%202%202l5%202%202%201c1-1-2-4-5-4l-2-1c1-1%203-2%209-2%207%200%207%200%202%201l-3%201c3%200%203%200%201%201h-2l2%204c2%203%203%204%206%205%205%201%209%203%2011%207l2%202c0-2%204-1%204%201l-2%201c-2-1-2%200-2%202s0%203-2%203l-4%201-1-1v-1l-1%202%204%201%205-1%201-2c0-2%201-3%203%200%202%201%202%201%206-2l4-4h-4c-4%200-5%200-4-4%200-3%204-3%204%200%200%202%201%203%202%203%202%201%202%200%202-2%200-3-3-5-7-5h-2l4-2c2%200%203-1%203-2%201-1%201-1%202%201v2l3-2c3-2%204-2%2014-1l29%204c2%200%205%206%205%2010%200%202%200%202%204%202%203%200%203%200%203-3s0-3%201-2l5%202%203%203c0%201%200%202%201%201v-6h5c4%200%205%201%206%202v-2c0-3-1-6-3-7-3-3-3-4%201-4l6-2a1141%201141%200%2001-103-18l-15%201m-115%208v3l-6-1-9-1c-4%200-4%200-4%202%200%204%208%206%2011%203h1c1%202-1%202-24%201l-18-2-1%203c1%204%201%204%2022%205%2010%201%2011%201%2010-1l1-2c1-1%201%200%201%201%200%203%202%204%2015%204l7%201v-4c0-3-1-3-2-3-2%200-2%200-1-1l1-3%201-2%201%202%202%202c3-1%204%201%201%202-2%200-2%201-2%204l1%203%201-3c0-4%202-4%202%200%201%204%206%204%206%200s-8-13-12-13l-5-2v2m148%200v1l9%201c30%205%2066%208%2059%205a1467%201467%200%2000-68-7m-231%205c-19%205-24%206-23%207%202%200%202%201%202%203-1%202-1%202%204%201%209-1%209-1%2010-5%200-4%202-4%202%200l1%203%201-1%202-2c2%200%202%200%201%201s-1%201%202%201l17-2h13v-3c0-3%200-3-5-3-13-2-20-2-27%200m3%2010l-24%204c-4%200%204%202%2010%202l10%201h15c12%200%2013%200%2012%202%200%201%200%202%202%203%203%200%204%202%202%202l-5%204c-3%202-4%204-3%204l2-1h1c-1%201%2010%204%2022%204l11%202%203-1%202-1%2014%201%2015%201%201%201v1c1%202%201%202-2%203-4%201-5%201-1%201l4-1h1c3%202%203%201%201-1-2-3-2-4%201-2l1%202%201%201c1-1%204%202%204%204l-2%203-2%201-6%201c-6%200-8%201-6%205h1c0-2%206-3%2016-1%204%200%204%200%202%201s-2%201-1%202l3-1h1l1%201v-13l1-12-3%202h-3v-2c3%201%206-2%205-5%200-4-2-5-4-2-3%202-6%202-7%200%200-2%200-2%202-2%201%201%203%200%205-1l2-2-2-1c-2-2-4-2-11%200-14%202-14%202-14-2l-1-4h6c3%200%205%200%204-1a916%20916%200%2000-87-3m240%207c0%208%200%209%202%209h4c6%202%2013%202%2012%201-2-1-3-3%200-3%201%201%201%200%201-4v-4l1%204%201%205v-5c0-3%201-4%203-6%203-3%203-4-8-4l-13-2h-3v9m-56-6c-2%201-2%205-2%2043v43h7v-42c0-39%200-42-2-44h-3m6%2043v45h-16l-12-1c5%200%205%200%205-3%200-2%200-3-2-3s-2%200%201-4l3-5h-1c-1%201-1%201-1-1l1-4c0-2%201-1%201%201l1%204v-4c0-6%201-9%203-9l1-1-3-1c-4%200-4%200-4%203%200%206-2%2014-4%2017s-2%202-1-2l3-7c0-5%200-5-2-5l-2%201%202%201%201%202-1%204-4%201h-4v-7c0-7%201-9%204-6s5%203%206%201c2-3%201-3-4-3s-6%200-6-7c0-3%200-3%204-3l4-1-5-1-5-1c-1-1-1-1-1%201%201%203-3%204-4%201v-3l-1-1c-3%200-4-2-2-4%202-1%202-2%202-3-1%200-2%200-3%202h-4l-16-1c-2%200-2%201-2%202%201%201%200%202-1%202-1%201-1%201%201%201l2%201%208%201c9-1%2010-1%2012%202%203%204%202%204-3%203h-12c-6%200-6%200-6-2%200-1%200-2-1-1-1%200-1%208%201%2022l-1%2012c0%204%200%205%203%207%2010%209%2015%2015%2011%2017l-1%202-2%204-4%203h-1c0-1-5%200-7%202h-2l-1-1c0-2-2-3-4-2l-1-3c0-2%200-3-1-1-3%2014-17%2031-27%2033-3%200-3%200-3-4%200-8%200-8%208-8h7l-7-1-6-1h5l8-2%202-2-2-3-1-4%201-2%202-4c2-3%202-3%205-2%202%202%203%202%203%201l-2-1c-2-1-2-1%200-3l2-1h8l-4-1h-3v-23l-1-25v-2h-10c-9%200-10%200-10%202h17c2%201%200%201-5%201-7%200-8%200-8%202%200%203%202%204%208%203l5-1%201-2c1-1%201%201%201%204v6h-8c-7%200-8%200-8-2%200-1-1-2-5-2l-4-1%201%205c0%204-1%206-2%203h-10l3-1c3%201%203%200%203-3s0-3-3-3l-4-2c-1-2-1-2-1%202l-1%208v5h-10c-10%200-12-1-10-5v-3l4-1%204%201c0%202%201%200%202-2l-1-3-1%202-4%201-4-1-1-1-1%204c0%207-2%2015-5%2018l-3%202%201-3v-1l1-1%201-1-14-1c-14%200-14%200-12%202l2%201c2-1%202%203%201%207s-1%204-6%204l-6-1-2%203c-2%203-2%203-3%202%200-2%200-2-1-1s-1%200-1-2l1-3-2%203-2%204%201-4v-3l-2%202c-1%203-1%203-2%202-1-2-1-2-2%200-3%208-10%2013-17%2013l-4%201%2023%204%2011%202c3%202%2012%203%2018%203%204%200%204%200%207%206l4%207-16%201a99%2099%200%2000-22%202c-2%200-2%200%200%203v6c-1%201%200%201%202%201l4%201%202%201%206%202h8l13-2c10%200%2010%200%2011-3s1-3-6-3c-5%200-6%200-6%202%200%201%200%203-2%203h-2v-4c1-4%202-4%206-4%207%200%2013%202%2013%204l-2%204c0%202%205%204%2011%203%203-1%206-1%209%201%204%201%2010%201%2018-1%202%200%202%200%201%201l-4%201c-2%200-2%200%201%201l4%203c2%201%202%201%202-6l1-8%201%203c0%204%202%208%205%208l1%201-3%201-4%201h8l39%202c-3%202-43%204-45%202l-2-2v2c1%201%201%201-3%201s-5%200-7-4c-3-4-4-5-4-2l-2%201-2%201h4l2%201v1l1%201-6%201c-5%200-6%200-7-3-3-4-7-7-8-5-2%201-2%202%201%204l2%204h-3c-2%200-4-1-8-5-2-3-6-5-7-5s-1%201%203%205l6%205H0v37l1%2038h46a733%20733%200%200145%203l4%201c3%200%203%200%202-1h9c6%202%206%203%201%203h-4l2%201h10c2-2%202-2-4-3l-6-3c1-1%2011%202%2013%204l4%201c2-1%202-1-1-2l-7-3c-8-1-1-1%2035-1a36539%2036539%200%200046%202c-5%200-5%202%200%203%204%200%204%200%202%201l-3%201h3c3%201%205%205%202%205v1l1%201c0%203%200%203%201%201l2-3c0-2%203-3%203-1l2%201h7l-3-2c-5-1-4-2%201-3h17c0%201-6%203-10%203-3%200-3%201-3%203%200%204%200%205%202%203%200-2%201-2%201-1l2%201%202-2h1c1%202%205%202%205%201-1-1%200-3%201-3v-2c-1%200-1-1%201-2%201-2%202-2%203-1l6%203c4%200%204%200%202%201h-6c-4-1-5-1-3%201l5%201c5%200%2019-3%2017-4-3%200-5-2-3-2l1-1%202-2h-3c-13%201-23-1-14-3l7-1a832%20832%200%200166%202c1-2%203-2%2044-2%2038%200%2043%200%2043-2l1-37v-36h-53l2-3%206-10%204-6h14c1%201%202%201%202-1l3-3c4-2%206-2-18-1a31425%2031425%200%2001-111%208l-11%201c-3%201%204%201%2030-1a451%20451%200%2001-79-2h-1l-3%201h-2l2-1%203-1h-3c-2%200-2%200-1-1l4-1c1%201%201%200%201-2s0-3%201-2l1%202v3h22a335%20335%200%200064-2l19-1%201-17v-16l-51%201-52-1v-3l1-2v5h37l-17-1-17-1%203-1c3%201%203%201%203-2l1-2v5l15-1c12%200%2015%200%2016%202%200%201%209%201%209-1l11-2a1274%201274%200%200023%202l1-1c1-2%205-2%205%200%200%203%202%200%203-4%201-3%201-4%201-1l-1%204%205-1h4l-1-6c0-6%201-6%201%201l1%205h7l11%202%203%202h-4l-10%201h-7v33h9a3693%203693%200%200161-5l7-2%201-1c3%200%200-2-5-3l-6-2%203-10%203-11h-24l-27-1c-4-2-5-4-3-4l3%201h1l28-1c27%200%2034-1%2032-3-2-4%205-9%2012-8h2c1-2%200-2-3-2l-4-2v-3h-1l-1-1-1-1c-2-1-1-3%201-3%201-1%200-1-2-1h-5a402%20402%200%2000-56-2c-3%200-4%200-3-2%200-2%201-2%205-2%203%200%204%200%204-2h1c0%203%202%202%202%200%201-3%203-2%204%201%200%202%201%202%208%202h7v-8l1-7v15h12v-14l1%207v7h3c2%200%203%200%203-3%201-4%203-5%206-5l4-2c2-2%202-2-2-3-2-1-1-1%201-1%204%200%206%202%203%204-1%202-1%202%202%202s3%200%203-2c-1-1%200-2%201-3%202-1%202-2%200-3-1-1-22-3-37-3h-6l6%201%2015%201%2011%201h-7a430%20430%200%2000-26-2c0-2-24-4-45-4l-9-1h17c20%200%2020%200%2024-3l4-2v3c0%202%200%203%202%203l7%201c4%200%208-2%208-5l2-1c2%200%202%200%201%201v5l1-2%201-2v5h20c1%202%203%201%203-1l-1-3%201-2c1-2%202-2%204%201%203%203%203%203%200%203-2-1-3%200-3%201%200%202%201%202%204%202%204%200%204-2%201-6-1-1-2-3-1-4l-1-1-2-1-2%202c-1%201-1%200-1-2%200-4-1-5-7-6-2-1-3-1-3%201-1%201%200%202%202%202%202%201%201%201-2%201l-5%202c-2%202-5%202-5%201l2-2c5-1%201-2-10-2l-14-2-1%201c1%201%200%202-1%202l-1-1c0-1-1-2-3-2-4%200-6-2-2-2%205%200%202-2-4-2-6-1-6-1-5-3s2-2%202%200c1%201%205%202%205%200s-2-3-8-4a320%20320%200%2001-13%200l-3%201c-1%200-2%200-1-1l-3-1h-4l-2%201c0%202%202%203%2015%204l10%201-3%201-14-2c-9%200-11-1-11-2s-2%201-3%205c-2%205-2%2017-1%2019l18%201%2017%201-18-1h-17v16l1%2015%201%202-1%201-1%205-1%207a527%20527%200%20010-81c1-5-1-5-6-1-6%205-16%206-23%200-5-3-5-3-5%203l1%205h6c11%200%2016%201%2016%203l2%201h-12c-15%200-17-1-15-4s1-12%200-12c-1-1-2%200-2%202l-1-3-1-9-1%2043m91-24c0%205%200%207-2%207h-1v-4c-2-5-5-3-4%203%201%204%202%205%2014%205%207%201%207%201%206-1l-1-3c-7%200-7%200-1-1l7-1h-6c-4%200-6%200-4-1h8c7%200%2010%203%207%207-1%202-1%202%202%202s3%200%202-1l-1-4c0-3%203-2%204%201%201%202%201%202%201-1l1-4v-4l-1-3h-2l-3-1-4-1c-10%200-17%200-16-1s1-1-2-1h-4v7m-54%201c0%205%200%206-2%208s-2%203-2%208c0%206%200%207-1%206l-3%201c0%201-1%202-3%202h-2v12c1%2012%201%2012-2%2014-2%202-2%203-2%208v7h4c4%200%204%200%204-4%200-2%200-3%201-2%201%204%202-1%202-15v-17c-2-2-1-4%201-4l1%2024%201%2024v-61l3-2c2-2%202-3%202-7-1-7-3-8-2-2m-31%208l-1%205v4h9l13%201h4v-4c0-5-2-6-12-6-5%200-5%200-2%201%204%200%204%200%204%204%200%203%200%203-1%201%200-3-1-4-6-4-4%200-6-1-7-2h-1M23%20163c-8%204-13%2015-13%2030v5c0-9%202-8%202%201%201%2010%203%2017%206%2023%202%204%205%207%205%205l-5-10c-2-2-3-13-2-16%201-4%202-4%206%200%203%203%204%205%2010%2018%204%2010%206%2011%2010%207%206-6%207-13%207-28%201-15-1-20-6-28-5-9-12-11-20-7m271%2022h-1c-3%200-4%202-4%205l1%204h30v-3c0-3%200-3-2-2l-13-1c-9%200-10%200-10-2v-2l-1%201m-1%2020c4%202%206%204%206%207v1l1-4v-3h9l9%201h1l5-1%205%201h5l3-1%203%201v1l2-1c0-2%2013-1%2013%200h2l5-1h5l-17-1a3780%203780%200%2001-57%200m-32%207c0%201-3%202-3%200l-3-1-3%201v1c4%200%202%203-1%203l11%201%2015-1c0-4-1-5-8-4l-6-1v-1l-2%202m-111%2063v5h19c14%200%2017%200%2012-1-14-2-18-2-19-1l-3%201c-2%200-2%200-2-4%200-5%200-5-2-5s-3%201-3%202c0%202%200%202-1%200s-1-1-1%203m48-1l-1%201-1%202v2l-1%201h-1l-2%203-4%202c-2%201%206%202%208%200h1l17%201c20%200%2019-2-1-2l-12-1h-5c0-1%202-3%204-3v-4l-1-4-1%202m-14%2046l-1%207c1%207%201%208%207%207%204-1%203-5-2-6-3%200-4-2-1-2%202%200%203-2%204-5%201-2%200-2-2-2l-5%201'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"seo":{"src":"/static/60f53bc1df34e9dd797daa54291216ad/0ff54/designSystem1.jpg"}}},{"id":"19207872-c4ca-5f5d-8ea1-af504359cb67","slug":"/clean-architecture-common-pitfalls","secret":false,"title":"Clean Architecture - common pitfalls","author":"Luke Celitan","date":"November 1st, 2022","dateForSEO":"2022-11-01T00:00:00.000Z","timeToRead":5,"excerpt":"How To Avoid The Pitfalls Of Not Applying Clean Architecture In Software","subscription":true,"body":"var _excluded = [\"components\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {\n  \"title\": \"Clean Architecture - common pitfalls\",\n  \"author\": \"Luke Celitan\",\n  \"date\": \"2022-11-01T00:00:00.000Z\",\n  \"hero\": \"./cleancode.jpg\",\n  \"excerpt\": \"How To Avoid The Pitfalls Of Not Applying Clean Architecture In Software\",\n  \"category\": \"Post\",\n  \"tech\": [\"Rust\", \"Nodejs\"]\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h1\", {\n    \"id\": \"how-to-avoid-the-pitfalls-of-not-applying-clean-architecture-in-software\"\n  }, \"How To Avoid The Pitfalls Of Not Applying Clean Architecture In Software\"), mdx(\"p\", null, \"The software that we design and implement has to be reliable, maintainable and\\nscalable. If a software is not designed with these qualities in mind, it can\\nturn into a mess. This article discusses the importance of practicing clean code\\nand architecture in order to avoid the pitfalls of not applying them\"), mdx(\"h2\", {\n    \"id\": \"clean-code-and-clean-architecture\"\n  }, \"Clean code and clean architecture\"), mdx(\"p\", null, \"When it comes to software development, clean code and clean architecture are two\\nof the most important concepts to keep in mind. Unfortunately, they are often\\noverlooked or not applied properly, which can lead to a number of problems down\\nthe line. Clean code is all about making your code easy to read, understand, and\\nmaintain. It should be well-organized and free of any unnecessary clutter. This\\nmakes it simpler and faster to make changes when needed, and also helps prevent\\nerrors from creeping in. Meanwhile, clean architecture is all about designing\\nyour software in a way that keeps the different parts loosely coupled and easily\\ninterchangeable. This makes your code more robust and easier to scale as your\\nneeds change over time. Unfortunately, both of these concepts are often ignored\\nor misunderstood. As a result, many software projects end up being needlessly\\ncomplex and difficult to maintain. If you want to avoid these pitfalls, be sure\\nto keep clean code and clean architecture in mind from the very start of your\\nproject.\"), mdx(\"p\", null, \"When in need of good architecture patterns look out for existing platforms and\\nsolutions. Open source projects that survived the harsh reality of software\\nengineering will be a great source for anyone who is looking for good patterns.\\nWith time and experience a software engineer will be able to tell apart the\\nanti-patterns and patterns one should follow.\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"1024px\"\n    }\n  }, \"\\n      \", mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"100%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsTAAALEwEAmpwYAAADXklEQVQ4y12T+VMScRTA/dPKpp8aO6xsJqVrprxmUrwQj1FBKURKCUVUBDtEnVLyyAJNRc28EFzzChi1yQiUc1nYu7dgKH7nze77vn2fd32/m0JRxH8haYqkOCGSjQRJEgxNMQyV/IlISWg0TYKgaIgk8bMeOBFB0eBf1x94nuNPYYKI7mxvbm1uRCJY3AKufr83HEZxIrq99WP802icT0TnYNiwLI2FUeuaZWnpezDgB49oFDs+PvJ6j6MRzON2rSwvCsvLVleXWZaFNCcwlArhvd4jHI/s7mwvfl+A7cHBHiRZWV4a6NdruzuHBt83SiXp6dedTnsSnOjW7XZNTpgQm9VmXRsZ/ghkZ4dao+kqLHx6j5fFy8oEI5BnJ8JlhsIO9vd+/dpfXFwA8vP4J33vu9c9OrGoDsJhGIogNigHyPPTBpPVapE+l0yYjDMzU2YQ8zQ852bNBsOgUtGs1XQ5HEnVJmXGsJDVujb80aBStclkjZKGekVLi0LRLBQKcnKewJzm52YpkjhHnvTs8x0vfJvPy81OvXihtJgvqqu5k5FxM/1GTXUl6Pfv81yuQ5ZlEt2eHhXUEwoFpyYnW17KS4r5G+vrToe9qqpCWC7Q6TQCQcnlS6nabg240RTF0DTL0AwDb05P4fYsGwwGBj+8f/f2DYKsI+s2gBvqxW2tyuqqysLCgmtX01ZXV8ANx3EMw448Hia2uMwOu10ub8rLyxEISkWiWunzZ/Vicbuq9UVTY2bm3fz8PAixu7MTCAZQFDVPT/X36cPhMIAcHAgEjEajRNLQ1dkxPfV1bGxU+UoBadtVbaWlxWUlRfNz5iOP22a19PX1VldXVFUKnU5nDI51ABrE7lC3a7o637zWqdWqnh5tk0xaWSEs4hfAzG7fusnjZT56+KC2tiY7+7FWp+VgJvangIYgSIcaDks50N/nsP/cQGyfx0flctkLeROfX9AolcIpwiUzmb5A2aFQCObPwfHM8PesWSwv5dC+zDD0obiIn5uTfTXtCkwLhofjUQDCKOrxuA8Pf4N/bGAMwwkHh/1+PwxvdGTYZDLq9b0VQoFYLDIMDYIRJ4g4EF9wbOwpHOPjCz7AkZAEEcEwv8/ndrvjWMIzoZ+BYxH/R2FiAjeCPunrjFtC/gHqYNgYh/Z68gAAAABJRU5ErkJggg==')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"picture\", {\n    parentName: \"span\"\n  }, \"\\n          \", mdx(\"source\", {\n    parentName: \"picture\",\n    \"srcSet\": [\"/static/e0a2b089269e7989df033fa027c06cd9/53334/blueprint2.webp 1024w\"],\n    \"sizes\": \"(max-width: 1024px) 100vw, 1024px\",\n    \"type\": \"image/webp\"\n  }), \"\\n          \", mdx(\"source\", {\n    parentName: \"picture\",\n    \"srcSet\": [\"/static/e0a2b089269e7989df033fa027c06cd9/658fc/blueprint2.png 1024w\"],\n    \"sizes\": \"(max-width: 1024px) 100vw, 1024px\",\n    \"type\": \"image/png\"\n  }), \"\\n          \", mdx(\"img\", {\n    parentName: \"picture\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"src\": \"/static/e0a2b089269e7989df033fa027c06cd9/658fc/blueprint2.png\",\n    \"alt\": \"Blueprint for clean code\",\n    \"title\": \"Blueprint for clean code\",\n    \"loading\": \"lazy\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    }\n  }), \"\\n        \"), \"\\n    \")), mdx(\"h2\", {\n    \"id\": \"what-does-clean-code-look-like\"\n  }, \"What does clean code look like?\"), mdx(\"p\", null, \"When it comes to clean code, there are a few key things to keep in mind. First\\nand foremost, clean code is readable and easy to understand. It is well-\\norganized and well-documented, so that anyone who needs to can easily find and\\nuse the information they need. Clean code is also consistent in style and\\nformatting. This makes it easier to read and understand, as well as more likely\\nto be error-free. In addition, clean code is modular \\u2013 it is organized into\\nsmall, self-contained units that can be easily reused. Finally, clean code is\\ntestable. This means that it can be verified that the code does what it is\\nsupposed to do, and that any changes made will not break existing functionality.\\nBy following these guidelines, you can ensure that your code is clean, readable,\\nand maintainable \\u2013 all of which are essential for any software project.\"), mdx(\"h2\", {\n    \"id\": \"clean-code-essentials\"\n  }, \"Clean code essentials:\"), mdx(\"h3\", {\n    \"id\": \"security\"\n  }, \"Security\"), mdx(\"p\", null, \"The best present any software architect can do for himself is to start the\\ndesign from security first perspective. Making a proper threat modeling will\\nhelp in establishing the correct patterns and services needed to complete the\\nproject.\"), mdx(\"p\", null, \"These days security first approach in my opinion is the only way to write a\\nprofessional software. Even if your code or project is squeaky clean but you did\\nnot plan or execute any kind of security strategy, you may end up loosing\\nreputation or feel wrath of your client when their application gets DDOS\\u2019ed or\\ndata breached.\"), mdx(\"p\", null, \"For more info om threat modeling and running your project in the DevSecOps\\nmethodology please checkout his \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://spaceout.pl/dev-sec-ops\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"link\")), mdx(\"h3\", {\n    \"id\": \"documentation\"\n  }, \"Documentation\"), mdx(\"p\", null, \"This sometimes can be the most overlooked part of the project, however it will\\nbe the most important thing in keeping it truly alive. Proper documentation\\nshould include\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"How to install the project\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"How to start the application in dev mode\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"How to build the project (production mode)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"What is the delivery scenario (CI/CD, Release strategy and naming conventions)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Architecture and Services used in Software (Servers, DB\\u2019s, Caches, Blobs, 3rd\\nparty)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Where to get the secret keys (Vaults, People, \\u2026)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"How to monitor the software (Logs, AppInsights, Trackers \\u2026)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"coding and contributions standards (Style, Commits, Tests, Coverage)\")), mdx(\"h2\", {\n    \"id\": \"common-pitfalls\"\n  }, \"Common pitfalls\"), mdx(\"h3\", {\n    \"id\": \"we-do-not-need-to-think-about-the-structure-or-clean-code-at-the-beginning-of-the-project\"\n  }, \"We do not need to think about the structure or clean code at the beginning of the project\"), mdx(\"p\", null, \"There are many potential problems that can arise from not having a clean\\narchitecture or clean code in your software project. Some of the more common\\nones include:\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Increased complexity and confusion: Without a well-defined architecture, your\\ncode can quickly become complex and difficult to understand. This can lead to\\nconfusion and errors when making changes or adding new features.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"decreased flexibility: A messy codebase can be very inflexible, making it\\nhard to make changes or add new functionality without breaking existing code.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"increased maintenance costs: Dirty code is often more difficult and\\ntime-consuming to maintain, leading to higher costs over time.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"decreased reliability: Code that is poorly organized and written in a hurry\\nis often less reliable and may contain more bugs. This can lead to unexpected\\nbehavior and crashes, which can be very frustrating for users.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"decreased quality: In general, lower-quality code is simply not as good as\\nwell-crafted code. This can impact the overall quality of your project and\\nmake it less likely to meet users\\u2019 needs and expectations.\")), mdx(\"p\", null, \"Not following the rules outlined before will result in a typical scenario where\\nyour development velocity will drop exponentially, leaving your project manager\\nor client frustrated. In this case the development team primary goal is to\\ndeliver features, not thinking about the structure of the project, not giving\\nthe team or developer the time needed to implement proper testing or refactoring\\nwhat was already written. The usual management response to this situation is add\\nmore man power to the development team in hopes that additional team mates will\\nbring the velocity back up to where it was at the beginning of the project.\\nHowever adding more people to a late project will make it even latter.\"), mdx(\"p\", null, \"It is important to understand that the business does not understand this, nor\\ncare, however it is up the development team to establish the speed and proper\\ntimetable. The conversation about the proposed velocity with business side will\\nbe a difficult one, but it will always be a part of the development cycle.\"), mdx(\"h3\", {\n    \"id\": \"no-need-to-deploy-straight-away-we-will-think-about-the-cicd-later-on\"\n  }, \"No need to deploy straight away, we will think about the CI/CD later on\"), mdx(\"p\", null, \"Not establishing proper git flow, automatic code delivery to an online\\nenvironment, will result in a classic \\u201CIt works on my computer\\u201D - \\u201Cbut are we\\ngoing to give your computer to the client ?\\u201D Developers tend to have fast\\nmachines with loads of ram, pushing straight to online instances should be a\\nnatural step in order to catch these differences. Calls and functions that work\\nnormally on your computer can suddenly be too much for a small server or online\\ncloud instance. We also have to think about differences in Operating Systems,\\nnetwork speed and other external factors.\"), mdx(\"p\", null, \"Make yourself a favour and make sure to test major pushes straight on the online\\nenvironment.\"), mdx(\"p\", null, \"This will also help with any kind of more advanced patterns like microservices,\\none must be careful not fall into a trap of creating applications that are easy\\nto develop but hard to deploy\"), mdx(\"h3\", {\n    \"id\": \"clean-architecture-does-not-impact-on-how-the-system-works\"\n  }, \"Clean architecture does not impact on how the system works\"), mdx(\"p\", null, \"This is another misconception among developers, true software architects will\\ntake into consideration what are the business costs of running a project. Clean\\narchitecture keeps the system lean, unnecessary code or bad arch will have\\nimpact on system performance, ram and cpu usage. Upgrading servers or instances\\nso your application works as it should can result in additional frictions with\\nyour client, or can even result in client dropping the project if the estimated\\nserver costs are met with huge real costs of sustaining an application.\"), mdx(\"h2\", {\n    \"id\": \"conclusion\"\n  }, \"Conclusion\"), mdx(\"p\", null, \"If you\\u2019re not careful, it\\u2019s easy to fall into the trap of not applying clean\\narchitecture in your software development projects. However, by following the\\ntips outlined in this article, you can avoid these pitfalls and create cleaner,\\nmore maintainable code. By adhering to the principles of clean architecture, you\\ncan make your code easier to understand, reuse, and modify \\u2013 which will save you\\ntime and money in the long run.\"), mdx(\"p\", null, \"Clean arch tries to minimize costs of adding features, fixing bugs, it will\\ndirect the developer in where solution should be added, and what is the most\\nimportant it should protect the system from implementing a bug that cannot be\\nfixed.\"));\n}\n;\nMDXContent.isMDXComponent = true;","tech":["Rust","Nodejs"],"category":"Post","appDescription":null,"hero":{"full":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAQFAgb/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAgH/2gAMAwEAAhADEAAAAdCVFNeiTjL4CkN//8QAGhAAAQUBAAAAAAAAAAAAAAAAAgABAwQRE//aAAgBAQABBQKxLxBrLbityRyB0Il3iTi2YijDf//EABYRAAMAAAAAAAAAAAAAAAAAAAABEv/aAAgBAwEBPwGWSymUz//EABYRAQEBAAAAAAAAAAAAAAAAAAAREP/aAAgBAgEBPwFcj//EAB4QAAIBAwUAAAAAAAAAAAAAAAABAhARISIxMmFx/9oACAEBAAY/AvSGmSvRKOWWawcqPo2P/8QAHRAAAgMAAgMAAAAAAAAAAAAAAREAITFBYXGBof/aAAgBAQABPyFRbb2oVx0iRxENm4QBZ0DBGMU04BBAa6i0hiid8RQBuj3uBV+5/9oADAMBAAIAAwAAABDAAHz/xAAWEQADAAAAAAAAAAAAAAAAAAAAAWH/2gAIAQMBAT8QiyLKsqz/xAAXEQEBAQEAAAAAAAAAAAAAAAAAEQFR/9oACAECAQE/ELiExHH/xAAfEAEBAAICAQUAAAAAAAAAAAABEQAhMdFBUWFxobH/2gAIAQEAAT8QkaUQC8FMFAUBIpnh4zmtuxGExFlEQept84GTW02DqE9u8GBAgV1kPIaC3HT7cTKqhq3X8x0AHy7z/9k=","aspectRatio":1,"src":"/static/7d4a98470ec7e64e3cbb19681c7c7fab/58fe7/cleancode.jpg","srcSet":"/static/7d4a98470ec7e64e3cbb19681c7c7fab/e0f30/cleancode.jpg 236w,\n/static/7d4a98470ec7e64e3cbb19681c7c7fab/86afd/cleancode.jpg 472w,\n/static/7d4a98470ec7e64e3cbb19681c7c7fab/58fe7/cleancode.jpg 944w,\n/static/7d4a98470ec7e64e3cbb19681c7c7fab/0ff54/cleancode.jpg 1200w","srcWebp":"/static/7d4a98470ec7e64e3cbb19681c7c7fab/99fbb/cleancode.webp","srcSetWebp":"/static/7d4a98470ec7e64e3cbb19681c7c7fab/77392/cleancode.webp 236w,\n/static/7d4a98470ec7e64e3cbb19681c7c7fab/1f177/cleancode.webp 472w,\n/static/7d4a98470ec7e64e3cbb19681c7c7fab/99fbb/cleancode.webp 944w,\n/static/7d4a98470ec7e64e3cbb19681c7c7fab/9000d/cleancode.webp 1200w","sizes":"(max-width: 944px) 100vw, 944px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M232%203c-3%203%205%207%2013%206%205%200%209%202%2012%206%203%205%204%205%201%205-2%200-2%205%200%208%202%202%202%202%201%203-2%201%202%203%204%203l3%201v-4c-3-6-1-7%204-2%204%204%207%208%204%207h-1c-1%201%2011%2013%2012%2012l-1-2-2-3c1-1%2010%208%2014%2014l4%205-3-7c-4-6-5-7-2-4h2c0-2-4-5-5-4l-2-1-8-10c-5-5-6-6-4-6l3%201-3-3c-4-5-6-6-9-6s-7-4-9-8c-3-6-25-15-28-11m150%2027a456%20456%200%2001-32%2027c6-7%203-5-4%202-8%208-10%2011-6%2012h4a127%20127%200%200021-23c1%201%201%201%200%200%200-2%203-4%205-3v-2c0%201%206-4%2011-11%2013-13%2013-14%201-2m-251%202a171%20171%200%2000-13%2024l-1%203h-3l-1%201%201%201c2-2%201%201-1%202l-2%202-1%204-1%203-2-3-1-3v3c0%204%203%2011%207%2016%204%204%2010%206%2019%206h5l2-6%204-10c4-6%204-6%200-8-3-1-5%200-4%204l-7%209%203-5c3-6%202-10-2-9-2%200-2%200%200-1l4-2c2%201%203%200%201-4l-3-7-1-4c-1%200-2-3-1-5%201-1%201-4-1-4v-2l2-8-3%203m133%2025c0%204%203%2010%205%2010l1-2v-1l2%205c0%202%204%206%207%206%202%200%200-7-3-11s-3-4-3-1c1%203-5-3-8-8l-2-2%201%204m39-1c3%206%202%209-2%207l1%203c2%205%202%2010-1%2010h-2l-3-1c-3%200-9-3-9-4l-1-1-1%204c0%204%201%204%204%205%204%201%206%203%204%203-1%200-2%201-1%202%200%201%200%202-1%201h-1l-1-2c1-2%201-2-5-2h-11c-8-2-8-2-12-1s-4%202-2%209c0%202%203%203%204%201h15c13%200%2013%200%2014-2%200-2%200-2%201%200%204%204%2014-11%2014-20%200-6-1-12-3-13-1-1-1-1-1%201m-111%205v7h21v-5h-10l-10%201v-5c-1-3-1-3-1%202M44%2057l3%203%202%204c0%203%209%2011%2012%2011%204-2%204-5%200-10l-5-4%203%204c4%204%201%204-4-1l-11-7m105%2016c-2%201-6%209-7%2015l-1%203h6c6-1%207-2%205-4s-1-3%201-10c1-2-2-5-4-4m-42%208l2%204%201%203c-1%201-1%200-2-1-2-5-4-3-5%205-1%203-1%203%201%203l1%202%202-1%202-2v2l-1%204c-1%201-2%209%200%208%201%200%201%204-1%208l-3%2012c-1%2014-2%2012-2-3v-13c-2-1-3%201-3%206v4l-1-4-1-15c0-9%200-11-1-10l-3%202c-3-1-4%201-4%2015l-2%2015-2%2016c-1%2018-3%2019-5%204%200-11-2-9-2%203%200%209%200%2010-2%2010s-3%203-1%206c1%203%203%202%203%200%200-4%202%201%203%208%201%205%201%205%201-5v-10l2%201c3%201%203%202%201%202s-3%202-1%202l1%201v2c1%200%202%204%202%2010l1%205v-3l1%203%202%2012c1%2011%202%2012%207%2010s6-1%205%207c0%204%200%206%201%205%201-2%201-2%201%200v3c-2%201%205%2011%2012%2015%201%201%201%201-1%202-2%200-3%201-3%202l-1%201c-2-2-2%206%200%2013l-1%202-2-5-1-4-9%2018c-2%205-6%2012-6%2010-1-1-20%207-22%209h-2c1-2-2-1-6%203l-7%203H0v37a372%20372%200%20002%2039c0-2%208-1%209%201%202%204%203%206%201%204-2-1-2-1-1%202l2%2012%201%2013-3-7c-4-12-7-17-9-15%200%201-1%201-1-1-1-1-1%205-1%2012%200%2017%200%2017%205%2017h4l-4-10c-4-13-4-15-3-15l1%201%204%2013%204%2011h9l8-1%202-2h6c3-1%203-1%202%201s-1%202%205%202h7v-3a1465%201465%200%20001-35l12-1c13%200%2013%200%2014%207v6l1%2014%201%2012h27l-1-5v-7l-1-19%207%205%204%204%203%202c0%204%204%204%207%202%204-3%205-2%202%201-4%205-4%2014%201%2013%201-1%202-1%202%201s1%203%2016%203c8%200%2014%200%2013-1-2%200-4-9-3-9v-3c1-2%201-2-3-2-6%201-6%200%200-1%204-1%207%200%207%201l-1%201-1%201v2c1%200%203%208%202%209l1%201h2l2%201%201-1%202-2c1-1%201%200%201%201l1%202%204-12%201-4c1-1%201-1%201%201%200%203%200%203%201%201%201-1%202-3%201-5l1-4c4-2%204%200%204%2012v12l1-11%201-11v21h21l-1-8-1-8%201%202%201%203%201-2-1-21h2v-2h-3c-1%201-1%201-1-1%200-1%201-2%203-2%203%200%203%200%203%204s0%204%202%203v-5c1-3%2011-3%2011%200l1%203c3%200%204-4%201-4-1-1%204-1%2010-1l10%201v3c0%202-1%203-5%203-6%202-9%201-9-3%200-2%200-3-1-2l-1%206c0%205%200%205-3%205-5%200-7-1-7-7%201-7-2-3-2%205l-3%2011c-1%204-1%204-2%202s-1-2-1%201c0%202%201%203%204%205l5%206%201%202c0-1%201-2%203-2s2%200%202%202v1l1-1h1l4%201h4v-11l1-11h5c4%200%206%202%202%202-2%200-2%200%200%201l1%201c-1%200-2%200-1%201l-1%202c0%201-1%201-1-1l-2-4-1%208-1%2010c0%202%200%202%2011%202%2013%200%2013%200%2012-5l3-3%202-6%201-4v-16c1-1%201-1%201%201v2l5-3%205-4%205-1c4%200%204%200%205%205a689%20689%200%20001%2024v10h29v-14l-2-19v-6h84l1-38v-37h-44l3-3c3-3%206-4%2010-4l5-1c1-1%201-1-2-1-5%200-10%202-15%205-6%204-14%206-12%203l-1-1-1%201-15%201h-15l1-10%201-18c2-11%200-19-5-24l-1-2%201-1c0-2%202-3%204-2h1l1-2v-6l-1-6c1-1-1-2-1%200v9h-3%201v-2c-2-3-6-4-6-2h-7c-6%201-6%201-6%204s0%203%201%201l2-2v2l-2%205c-1-1-2%200-2%201%200%202-1%203-2%203-2%200-2%200-1-1%202-2%204-11%202-11l-1%202h-1c0-2-5-4-10-7-8-4-8-5-5-5l4%201%208%204c5%203%206%203%2011%202l6-1-2-2c-1-2-1-2%201-2h3c1%200%205-7%205-10l5-1c6%201%206%201%209-8%203-7%203-14%201-12-2%201-3-9-3-30a386%20386%200%2000-1-17c-2%205-4%204-4-2%200-11-1-3-2%2013%200%2013-1%2018-2%2019-2%203-3%201-4-8-2-10-3-12-8-10l-3%202v-7l-1-8%204-6c6-5%206-6%203-13-8-16-18-17-95-17a531%20531%200%2001-54-1c0%201-16%203-18%202-1-1%200-1%202-1h3l-3-1-3-1h2l3-1c0-1-22-2-23-1h-3c-2-1-2-1-1-2%202-1%201-1-2-1l-3-2%201-1v-1c-1-4-4-9-4-7m92%2051c-4%202-16%2012-16%2014h2l-2%204-2%204%207-6c15-16%2021-15%2042%205%2013%2013%2017%2016%2028%2020%2010%204%2020%203%2027-4%204-4%202-4-3%200-8%206-15%205-29-1-10-5-14-8-12-8l-4-5c-3-3-5-5-4-6h-1l-1-1c2-2-13-16-17-16h-15m-3%2016c-5%203-8%206-18%2018-4%206-7%208-9%208-5%202-5%203-3%2013l3%2010%206%201c6%201%206%201%209-3l4-5a265%20265%200%20002-10l1%206c-1%202%200%203%202%200l2-1%202-1%2010-1c10%200%2011%201%2021%2013l8%209v2l1%201c4-2%209-2%2011-1s2%201-1%201c-5%200-9%202-13%207s-4%205%201%207c3%201%203%201%206-2%204-4%209-6%2012-6%204%201%204%200%201-4-2-3-3-4-2-5%201-2%203-2%202%200l2%203c3%201%203%201%203-1%200-1%200-2%201-1l1-5c0-3%200-4-1-2s-1%200-3-8c0-7-2-10-6-13l-2-3c0-2-1-2-8-3-3-1-5-2-9-7-15-18-18-20-27-20l-9%203m134%2013l-1%2023%205-12c1-4%200-12-1-12l-2-4c0-3-1-2-1%205m-70-4c-2%200-2%201-2%202%201%203-1%203-6%201-9-4-7-1%203%205%208%204%2018%205%2024%202%202-1%203-2%202-3v-1c1-2-10-6-13-4-1%201-1%200-1-1%200-2-1-2-7-1m32%2016l-4%203-2%201c-1-1-3%200-5%203l-3%204%208%202c11%203%209%204-5%201-3%200-4%201-1%202%201%201%200%201-1%201-5%200-3%201%204%203h7l1-1c2%201%202%200%204-2l1-3-1%204c0%203%200%204%201%203%202%200%203-4%202-5v-3c2-4%202-9%201-10l-1-2c0-2-1-2-6-1m11%209c-2%203-6%2016-6%2024l-1%205%202-3%202-2v3c1%202%201%202%201-3l2-4%201-2c1-4%203-2%202%203%200%203%200%204%201%203%201-2%203-15%201-13v3l-2%201c-2%201-3%200-3-1l1-2%202-1v-1l-1-3c1-2%201-2%201%200%200%203%202%203%202%200%200-4-1-5-3-3v-2c0-5%200-5-2-2m-89%2023c0%209-2%208-2-1%200-4%200-5-2-5s-2%201-2%207c0%205%200%206-2%206l-2-1%201-1%201-5-1-6c-2%200-2%201-2%207v7l-1-7-1-7v8c0%205%200%208%201%207l7-1%206%201h1v-3l-1-8-1-6v8m54%209l-6%202h-5l2%202%203%202-3-1c-3-1-3-1-2%201v1l-4-2v3l-1-1-2-1v2l4%206c1%203%201%203%202%201s1-2%202%200l1%202v-2c0-2%200-2%201-1h5l6-1c7-1%207-1%203-8-5-6-6-6-6-5m-101%2011h-1l-1%201-1%201-1-1c1-2-2-1-4%202-2%202-2%202%200%202l3%201c1%201%200%201-3%201h-5l2%201%203%201c0%201-1%202-3%201-1%200-2%200-1%201%204%203%203%204-2%204l-6-1%201-2%204-1-4-1c-5%200-7%202-7%208v4l2-2c3-4%2010-4%209%200h2c1-2%202-2%206%205%202%203%204%206%203%207h3v-2l-1-2c0-3-3-8-5-11-3-2-2-3%201-1l4%204c2%203%202%203%202%201s0-2%202-2c1%201%202%200%203-3%200-2%202-3%203-4l2-1-2-5c-2%200-2%200-1-2%202-3-5-7-7-4m111%2031c-8%206-11%209-9%209%203%200-2%202-7%203-5%200-6%201-6%203%200%204%203%204%2015%200%2010-3%2012-4%2018-9%204-3%205-6%202-6a953%20953%200%2001-13%200M15%20363c-1%202%201%204%205%204h4l14%201c2%200%203%200%204-3l2-3-9-1c-9%200-12%200-10%202%201%201%201%201-1%201s-3%200-2-1c2-1%201-2-3-2l-4%202m126%204l3%206%205-1h5l-2%202c-3%204-3%204%206%204l8%201c1%202%200%204-2%204s-1%202%201%202v1c-2%200-2%201-2%202l1%204c0%202%207%201%208-2%202-4%201-5-1-5-4%200-3-2%201-3s5-2%204-7c-1-2-1-2-2%200l-4%201h-2c-1%201-1%201-1-1s1-3%203-2c3%202%203-1%201-2l-6-2c-3%200-3%200-1-1%202%200%202-1%200-3l-3-2-1-1-1-1c-2%200-2%201%200%204%203%204%202%205-5%205h-7c-1%201-3%200-3-2h3l-1-3v-3c1-1%200-1-2-1l-3%201h-1l-1-1%202%206m113-2c-1%203-1%203%201%203s2%201%202%204v5h8v-6c0-7%200-7-3-9-6-2-7-1-8%203M15%20387c1%204%201%204%205%203%204-2%207-2%207%201l5%202h6l1-4c1-4%201-5-4-3s-5%202-8%200l-5-1h-5c-2-1-2-1-2%202'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"regular":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAQFAgb/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAgH/2gAMAwEAAhADEAAAAdCVFNeiTjL4CkN//8QAGhAAAQUBAAAAAAAAAAAAAAAAAgABAwQRE//aAAgBAQABBQKxLxBrLbityRyB0Il3iTi2YijDf//EABYRAAMAAAAAAAAAAAAAAAAAAAABEv/aAAgBAwEBPwGWSymUz//EABYRAQEBAAAAAAAAAAAAAAAAAAAREP/aAAgBAgEBPwFcj//EAB4QAAIBAwUAAAAAAAAAAAAAAAABAhARISIxMmFx/9oACAEBAAY/AvSGmSvRKOWWawcqPo2P/8QAHRAAAgMAAgMAAAAAAAAAAAAAAREAITFBYXGBof/aAAgBAQABPyFRbb2oVx0iRxENm4QBZ0DBGMU04BBAa6i0hiid8RQBuj3uBV+5/9oADAMBAAIAAwAAABDAAHz/xAAWEQADAAAAAAAAAAAAAAAAAAAAAWH/2gAIAQMBAT8QiyLKsqz/xAAXEQEBAQEAAAAAAAAAAAAAAAAAEQFR/9oACAECAQE/ELiExHH/xAAfEAEBAAICAQUAAAAAAAAAAAABEQAhMdFBUWFxobH/2gAIAQEAAT8QkaUQC8FMFAUBIpnh4zmtuxGExFlEQept84GTW02DqE9u8GBAgV1kPIaC3HT7cTKqhq3X8x0AHy7z/9k=","aspectRatio":1,"src":"/static/7d4a98470ec7e64e3cbb19681c7c7fab/1dc0b/cleancode.jpg","srcSet":"/static/7d4a98470ec7e64e3cbb19681c7c7fab/3a5ce/cleancode.jpg 163w,\n/static/7d4a98470ec7e64e3cbb19681c7c7fab/05730/cleancode.jpg 327w,\n/static/7d4a98470ec7e64e3cbb19681c7c7fab/1dc0b/cleancode.jpg 653w,\n/static/7d4a98470ec7e64e3cbb19681c7c7fab/f72c7/cleancode.jpg 980w,\n/static/7d4a98470ec7e64e3cbb19681c7c7fab/0ff54/cleancode.jpg 1200w","srcWebp":"/static/7d4a98470ec7e64e3cbb19681c7c7fab/0acdf/cleancode.webp","srcSetWebp":"/static/7d4a98470ec7e64e3cbb19681c7c7fab/ac59e/cleancode.webp 163w,\n/static/7d4a98470ec7e64e3cbb19681c7c7fab/7660b/cleancode.webp 327w,\n/static/7d4a98470ec7e64e3cbb19681c7c7fab/0acdf/cleancode.webp 653w,\n/static/7d4a98470ec7e64e3cbb19681c7c7fab/75470/cleancode.webp 980w,\n/static/7d4a98470ec7e64e3cbb19681c7c7fab/9000d/cleancode.webp 1200w","sizes":"(max-width: 653px) 100vw, 653px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M232%203c-3%203%205%207%2013%206%205%200%209%202%2012%206%203%205%204%205%201%205-2%200-2%205%200%208%202%202%202%202%201%203-2%201%202%203%204%203l3%201v-4c-3-6-1-7%204-2%204%204%207%208%204%207h-1c-1%201%2011%2013%2012%2012l-1-2-2-3c1-1%2010%208%2014%2014l4%205-3-7c-4-6-5-7-2-4h2c0-2-4-5-5-4l-2-1-8-10c-5-5-6-6-4-6l3%201-3-3c-4-5-6-6-9-6s-7-4-9-8c-3-6-25-15-28-11m150%2027a456%20456%200%2001-32%2027c6-7%203-5-4%202-8%208-10%2011-6%2012h4a127%20127%200%200021-23c1%201%201%201%200%200%200-2%203-4%205-3v-2c0%201%206-4%2011-11%2013-13%2013-14%201-2m-251%202a171%20171%200%2000-13%2024l-1%203h-3l-1%201%201%201c2-2%201%201-1%202l-2%202-1%204-1%203-2-3-1-3v3c0%204%203%2011%207%2016%204%204%2010%206%2019%206h5l2-6%204-10c4-6%204-6%200-8-3-1-5%200-4%204l-7%209%203-5c3-6%202-10-2-9-2%200-2%200%200-1l4-2c2%201%203%200%201-4l-3-7-1-4c-1%200-2-3-1-5%201-1%201-4-1-4v-2l2-8-3%203m133%2025c0%204%203%2010%205%2010l1-2v-1l2%205c0%202%204%206%207%206%202%200%200-7-3-11s-3-4-3-1c1%203-5-3-8-8l-2-2%201%204m39-1c3%206%202%209-2%207l1%203c2%205%202%2010-1%2010h-2l-3-1c-3%200-9-3-9-4l-1-1-1%204c0%204%201%204%204%205%204%201%206%203%204%203-1%200-2%201-1%202%200%201%200%202-1%201h-1l-1-2c1-2%201-2-5-2h-11c-8-2-8-2-12-1s-4%202-2%209c0%202%203%203%204%201h15c13%200%2013%200%2014-2%200-2%200-2%201%200%204%204%2014-11%2014-20%200-6-1-12-3-13-1-1-1-1-1%201m-111%205v7h21v-5h-10l-10%201v-5c-1-3-1-3-1%202M44%2057l3%203%202%204c0%203%209%2011%2012%2011%204-2%204-5%200-10l-5-4%203%204c4%204%201%204-4-1l-11-7m105%2016c-2%201-6%209-7%2015l-1%203h6c6-1%207-2%205-4s-1-3%201-10c1-2-2-5-4-4m-42%208l2%204%201%203c-1%201-1%200-2-1-2-5-4-3-5%205-1%203-1%203%201%203l1%202%202-1%202-2v2l-1%204c-1%201-2%209%200%208%201%200%201%204-1%208l-3%2012c-1%2014-2%2012-2-3v-13c-2-1-3%201-3%206v4l-1-4-1-15c0-9%200-11-1-10l-3%202c-3-1-4%201-4%2015l-2%2015-2%2016c-1%2018-3%2019-5%204%200-11-2-9-2%203%200%209%200%2010-2%2010s-3%203-1%206c1%203%203%202%203%200%200-4%202%201%203%208%201%205%201%205%201-5v-10l2%201c3%201%203%202%201%202s-3%202-1%202l1%201v2c1%200%202%204%202%2010l1%205v-3l1%203%202%2012c1%2011%202%2012%207%2010s6-1%205%207c0%204%200%206%201%205%201-2%201-2%201%200v3c-2%201%205%2011%2012%2015%201%201%201%201-1%202-2%200-3%201-3%202l-1%201c-2-2-2%206%200%2013l-1%202-2-5-1-4-9%2018c-2%205-6%2012-6%2010-1-1-20%207-22%209h-2c1-2-2-1-6%203l-7%203H0v37a372%20372%200%20002%2039c0-2%208-1%209%201%202%204%203%206%201%204-2-1-2-1-1%202l2%2012%201%2013-3-7c-4-12-7-17-9-15%200%201-1%201-1-1-1-1-1%205-1%2012%200%2017%200%2017%205%2017h4l-4-10c-4-13-4-15-3-15l1%201%204%2013%204%2011h9l8-1%202-2h6c3-1%203-1%202%201s-1%202%205%202h7v-3a1465%201465%200%20001-35l12-1c13%200%2013%200%2014%207v6l1%2014%201%2012h27l-1-5v-7l-1-19%207%205%204%204%203%202c0%204%204%204%207%202%204-3%205-2%202%201-4%205-4%2014%201%2013%201-1%202-1%202%201s1%203%2016%203c8%200%2014%200%2013-1-2%200-4-9-3-9v-3c1-2%201-2-3-2-6%201-6%200%200-1%204-1%207%200%207%201l-1%201-1%201v2c1%200%203%208%202%209l1%201h2l2%201%201-1%202-2c1-1%201%200%201%201l1%202%204-12%201-4c1-1%201-1%201%201%200%203%200%203%201%201%201-1%202-3%201-5l1-4c4-2%204%200%204%2012v12l1-11%201-11v21h21l-1-8-1-8%201%202%201%203%201-2-1-21h2v-2h-3c-1%201-1%201-1-1%200-1%201-2%203-2%203%200%203%200%203%204s0%204%202%203v-5c1-3%2011-3%2011%200l1%203c3%200%204-4%201-4-1-1%204-1%2010-1l10%201v3c0%202-1%203-5%203-6%202-9%201-9-3%200-2%200-3-1-2l-1%206c0%205%200%205-3%205-5%200-7-1-7-7%201-7-2-3-2%205l-3%2011c-1%204-1%204-2%202s-1-2-1%201c0%202%201%203%204%205l5%206%201%202c0-1%201-2%203-2s2%200%202%202v1l1-1h1l4%201h4v-11l1-11h5c4%200%206%202%202%202-2%200-2%200%200%201l1%201c-1%200-2%200-1%201l-1%202c0%201-1%201-1-1l-2-4-1%208-1%2010c0%202%200%202%2011%202%2013%200%2013%200%2012-5l3-3%202-6%201-4v-16c1-1%201-1%201%201v2l5-3%205-4%205-1c4%200%204%200%205%205a689%20689%200%20001%2024v10h29v-14l-2-19v-6h84l1-38v-37h-44l3-3c3-3%206-4%2010-4l5-1c1-1%201-1-2-1-5%200-10%202-15%205-6%204-14%206-12%203l-1-1-1%201-15%201h-15l1-10%201-18c2-11%200-19-5-24l-1-2%201-1c0-2%202-3%204-2h1l1-2v-6l-1-6c1-1-1-2-1%200v9h-3%201v-2c-2-3-6-4-6-2h-7c-6%201-6%201-6%204s0%203%201%201l2-2v2l-2%205c-1-1-2%200-2%201%200%202-1%203-2%203-2%200-2%200-1-1%202-2%204-11%202-11l-1%202h-1c0-2-5-4-10-7-8-4-8-5-5-5l4%201%208%204c5%203%206%203%2011%202l6-1-2-2c-1-2-1-2%201-2h3c1%200%205-7%205-10l5-1c6%201%206%201%209-8%203-7%203-14%201-12-2%201-3-9-3-30a386%20386%200%2000-1-17c-2%205-4%204-4-2%200-11-1-3-2%2013%200%2013-1%2018-2%2019-2%203-3%201-4-8-2-10-3-12-8-10l-3%202v-7l-1-8%204-6c6-5%206-6%203-13-8-16-18-17-95-17a531%20531%200%2001-54-1c0%201-16%203-18%202-1-1%200-1%202-1h3l-3-1-3-1h2l3-1c0-1-22-2-23-1h-3c-2-1-2-1-1-2%202-1%201-1-2-1l-3-2%201-1v-1c-1-4-4-9-4-7m92%2051c-4%202-16%2012-16%2014h2l-2%204-2%204%207-6c15-16%2021-15%2042%205%2013%2013%2017%2016%2028%2020%2010%204%2020%203%2027-4%204-4%202-4-3%200-8%206-15%205-29-1-10-5-14-8-12-8l-4-5c-3-3-5-5-4-6h-1l-1-1c2-2-13-16-17-16h-15m-3%2016c-5%203-8%206-18%2018-4%206-7%208-9%208-5%202-5%203-3%2013l3%2010%206%201c6%201%206%201%209-3l4-5a265%20265%200%20002-10l1%206c-1%202%200%203%202%200l2-1%202-1%2010-1c10%200%2011%201%2021%2013l8%209v2l1%201c4-2%209-2%2011-1s2%201-1%201c-5%200-9%202-13%207s-4%205%201%207c3%201%203%201%206-2%204-4%209-6%2012-6%204%201%204%200%201-4-2-3-3-4-2-5%201-2%203-2%202%200l2%203c3%201%203%201%203-1%200-1%200-2%201-1l1-5c0-3%200-4-1-2s-1%200-3-8c0-7-2-10-6-13l-2-3c0-2-1-2-8-3-3-1-5-2-9-7-15-18-18-20-27-20l-9%203m134%2013l-1%2023%205-12c1-4%200-12-1-12l-2-4c0-3-1-2-1%205m-70-4c-2%200-2%201-2%202%201%203-1%203-6%201-9-4-7-1%203%205%208%204%2018%205%2024%202%202-1%203-2%202-3v-1c1-2-10-6-13-4-1%201-1%200-1-1%200-2-1-2-7-1m32%2016l-4%203-2%201c-1-1-3%200-5%203l-3%204%208%202c11%203%209%204-5%201-3%200-4%201-1%202%201%201%200%201-1%201-5%200-3%201%204%203h7l1-1c2%201%202%200%204-2l1-3-1%204c0%203%200%204%201%203%202%200%203-4%202-5v-3c2-4%202-9%201-10l-1-2c0-2-1-2-6-1m11%209c-2%203-6%2016-6%2024l-1%205%202-3%202-2v3c1%202%201%202%201-3l2-4%201-2c1-4%203-2%202%203%200%203%200%204%201%203%201-2%203-15%201-13v3l-2%201c-2%201-3%200-3-1l1-2%202-1v-1l-1-3c1-2%201-2%201%200%200%203%202%203%202%200%200-4-1-5-3-3v-2c0-5%200-5-2-2m-89%2023c0%209-2%208-2-1%200-4%200-5-2-5s-2%201-2%207c0%205%200%206-2%206l-2-1%201-1%201-5-1-6c-2%200-2%201-2%207v7l-1-7-1-7v8c0%205%200%208%201%207l7-1%206%201h1v-3l-1-8-1-6v8m54%209l-6%202h-5l2%202%203%202-3-1c-3-1-3-1-2%201v1l-4-2v3l-1-1-2-1v2l4%206c1%203%201%203%202%201s1-2%202%200l1%202v-2c0-2%200-2%201-1h5l6-1c7-1%207-1%203-8-5-6-6-6-6-5m-101%2011h-1l-1%201-1%201-1-1c1-2-2-1-4%202-2%202-2%202%200%202l3%201c1%201%200%201-3%201h-5l2%201%203%201c0%201-1%202-3%201-1%200-2%200-1%201%204%203%203%204-2%204l-6-1%201-2%204-1-4-1c-5%200-7%202-7%208v4l2-2c3-4%2010-4%209%200h2c1-2%202-2%206%205%202%203%204%206%203%207h3v-2l-1-2c0-3-3-8-5-11-3-2-2-3%201-1l4%204c2%203%202%203%202%201s0-2%202-2c1%201%202%200%203-3%200-2%202-3%203-4l2-1-2-5c-2%200-2%200-1-2%202-3-5-7-7-4m111%2031c-8%206-11%209-9%209%203%200-2%202-7%203-5%200-6%201-6%203%200%204%203%204%2015%200%2010-3%2012-4%2018-9%204-3%205-6%202-6a953%20953%200%2001-13%200M15%20363c-1%202%201%204%205%204h4l14%201c2%200%203%200%204-3l2-3-9-1c-9%200-12%200-10%202%201%201%201%201-1%201s-3%200-2-1c2-1%201-2-3-2l-4%202m126%204l3%206%205-1h5l-2%202c-3%204-3%204%206%204l8%201c1%202%200%204-2%204s-1%202%201%202v1c-2%200-2%201-2%202l1%204c0%202%207%201%208-2%202-4%201-5-1-5-4%200-3-2%201-3s5-2%204-7c-1-2-1-2-2%200l-4%201h-2c-1%201-1%201-1-1s1-3%203-2c3%202%203-1%201-2l-6-2c-3%200-3%200-1-1%202%200%202-1%200-3l-3-2-1-1-1-1c-2%200-2%201%200%204%203%204%202%205-5%205h-7c-1%201-3%200-3-2h3l-1-3v-3c1-1%200-1-2-1l-3%201h-1l-1-1%202%206m113-2c-1%203-1%203%201%203s2%201%202%204v5h8v-6c0-7%200-7-3-9-6-2-7-1-8%203M15%20387c1%204%201%204%205%203%204-2%207-2%207%201l5%202h6l1-4c1-4%201-5-4-3s-5%202-8%200l-5-1h-5c-2-1-2-1-2%202'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"narrow":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAQFAgb/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAgH/2gAMAwEAAhADEAAAAdCVFNeiTjL4CkN//8QAGhAAAQUBAAAAAAAAAAAAAAAAAgABAwQRE//aAAgBAQABBQKxLxBrLbityRyB0Il3iTi2YijDf//EABYRAAMAAAAAAAAAAAAAAAAAAAABEv/aAAgBAwEBPwGWSymUz//EABYRAQEBAAAAAAAAAAAAAAAAAAAREP/aAAgBAgEBPwFcj//EAB4QAAIBAwUAAAAAAAAAAAAAAAABAhARISIxMmFx/9oACAEBAAY/AvSGmSvRKOWWawcqPo2P/8QAHRAAAgMAAgMAAAAAAAAAAAAAAREAITFBYXGBof/aAAgBAQABPyFRbb2oVx0iRxENm4QBZ0DBGMU04BBAa6i0hiid8RQBuj3uBV+5/9oADAMBAAIAAwAAABDAAHz/xAAWEQADAAAAAAAAAAAAAAAAAAAAAWH/2gAIAQMBAT8QiyLKsqz/xAAXEQEBAQEAAAAAAAAAAAAAAAAAEQFR/9oACAECAQE/ELiExHH/xAAfEAEBAAICAQUAAAAAAAAAAAABEQAhMdFBUWFxobH/2gAIAQEAAT8QkaUQC8FMFAUBIpnh4zmtuxGExFlEQept84GTW02DqE9u8GBAgV1kPIaC3HT7cTKqhq3X8x0AHy7z/9k=","aspectRatio":1,"src":"/static/7d4a98470ec7e64e3cbb19681c7c7fab/eaa58/cleancode.jpg","srcSet":"/static/7d4a98470ec7e64e3cbb19681c7c7fab/5a3ee/cleancode.jpg 114w,\n/static/7d4a98470ec7e64e3cbb19681c7c7fab/41f8f/cleancode.jpg 229w,\n/static/7d4a98470ec7e64e3cbb19681c7c7fab/eaa58/cleancode.jpg 457w,\n/static/7d4a98470ec7e64e3cbb19681c7c7fab/c309b/cleancode.jpg 686w,\n/static/7d4a98470ec7e64e3cbb19681c7c7fab/e3008/cleancode.jpg 914w,\n/static/7d4a98470ec7e64e3cbb19681c7c7fab/0ff54/cleancode.jpg 1200w","srcWebp":"/static/7d4a98470ec7e64e3cbb19681c7c7fab/15384/cleancode.webp","srcSetWebp":"/static/7d4a98470ec7e64e3cbb19681c7c7fab/31fce/cleancode.webp 114w,\n/static/7d4a98470ec7e64e3cbb19681c7c7fab/e3e25/cleancode.webp 229w,\n/static/7d4a98470ec7e64e3cbb19681c7c7fab/15384/cleancode.webp 457w,\n/static/7d4a98470ec7e64e3cbb19681c7c7fab/0258d/cleancode.webp 686w,\n/static/7d4a98470ec7e64e3cbb19681c7c7fab/64ea2/cleancode.webp 914w,\n/static/7d4a98470ec7e64e3cbb19681c7c7fab/9000d/cleancode.webp 1200w","sizes":"(max-width: 457px) 100vw, 457px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M232%203c-3%203%205%207%2013%206%205%200%209%202%2012%206%203%205%204%205%201%205-2%200-2%205%200%208%202%202%202%202%201%203-2%201%202%203%204%203l3%201v-4c-3-6-1-7%204-2%204%204%207%208%204%207h-1c-1%201%2011%2013%2012%2012l-1-2-2-3c1-1%2010%208%2014%2014l4%205-3-7c-4-6-5-7-2-4h2c0-2-4-5-5-4l-2-1-8-10c-5-5-6-6-4-6l3%201-3-3c-4-5-6-6-9-6s-7-4-9-8c-3-6-25-15-28-11m150%2027a456%20456%200%2001-32%2027c6-7%203-5-4%202-8%208-10%2011-6%2012h4a127%20127%200%200021-23c1%201%201%201%200%200%200-2%203-4%205-3v-2c0%201%206-4%2011-11%2013-13%2013-14%201-2m-251%202a171%20171%200%2000-13%2024l-1%203h-3l-1%201%201%201c2-2%201%201-1%202l-2%202-1%204-1%203-2-3-1-3v3c0%204%203%2011%207%2016%204%204%2010%206%2019%206h5l2-6%204-10c4-6%204-6%200-8-3-1-5%200-4%204l-7%209%203-5c3-6%202-10-2-9-2%200-2%200%200-1l4-2c2%201%203%200%201-4l-3-7-1-4c-1%200-2-3-1-5%201-1%201-4-1-4v-2l2-8-3%203m133%2025c0%204%203%2010%205%2010l1-2v-1l2%205c0%202%204%206%207%206%202%200%200-7-3-11s-3-4-3-1c1%203-5-3-8-8l-2-2%201%204m39-1c3%206%202%209-2%207l1%203c2%205%202%2010-1%2010h-2l-3-1c-3%200-9-3-9-4l-1-1-1%204c0%204%201%204%204%205%204%201%206%203%204%203-1%200-2%201-1%202%200%201%200%202-1%201h-1l-1-2c1-2%201-2-5-2h-11c-8-2-8-2-12-1s-4%202-2%209c0%202%203%203%204%201h15c13%200%2013%200%2014-2%200-2%200-2%201%200%204%204%2014-11%2014-20%200-6-1-12-3-13-1-1-1-1-1%201m-111%205v7h21v-5h-10l-10%201v-5c-1-3-1-3-1%202M44%2057l3%203%202%204c0%203%209%2011%2012%2011%204-2%204-5%200-10l-5-4%203%204c4%204%201%204-4-1l-11-7m105%2016c-2%201-6%209-7%2015l-1%203h6c6-1%207-2%205-4s-1-3%201-10c1-2-2-5-4-4m-42%208l2%204%201%203c-1%201-1%200-2-1-2-5-4-3-5%205-1%203-1%203%201%203l1%202%202-1%202-2v2l-1%204c-1%201-2%209%200%208%201%200%201%204-1%208l-3%2012c-1%2014-2%2012-2-3v-13c-2-1-3%201-3%206v4l-1-4-1-15c0-9%200-11-1-10l-3%202c-3-1-4%201-4%2015l-2%2015-2%2016c-1%2018-3%2019-5%204%200-11-2-9-2%203%200%209%200%2010-2%2010s-3%203-1%206c1%203%203%202%203%200%200-4%202%201%203%208%201%205%201%205%201-5v-10l2%201c3%201%203%202%201%202s-3%202-1%202l1%201v2c1%200%202%204%202%2010l1%205v-3l1%203%202%2012c1%2011%202%2012%207%2010s6-1%205%207c0%204%200%206%201%205%201-2%201-2%201%200v3c-2%201%205%2011%2012%2015%201%201%201%201-1%202-2%200-3%201-3%202l-1%201c-2-2-2%206%200%2013l-1%202-2-5-1-4-9%2018c-2%205-6%2012-6%2010-1-1-20%207-22%209h-2c1-2-2-1-6%203l-7%203H0v37a372%20372%200%20002%2039c0-2%208-1%209%201%202%204%203%206%201%204-2-1-2-1-1%202l2%2012%201%2013-3-7c-4-12-7-17-9-15%200%201-1%201-1-1-1-1-1%205-1%2012%200%2017%200%2017%205%2017h4l-4-10c-4-13-4-15-3-15l1%201%204%2013%204%2011h9l8-1%202-2h6c3-1%203-1%202%201s-1%202%205%202h7v-3a1465%201465%200%20001-35l12-1c13%200%2013%200%2014%207v6l1%2014%201%2012h27l-1-5v-7l-1-19%207%205%204%204%203%202c0%204%204%204%207%202%204-3%205-2%202%201-4%205-4%2014%201%2013%201-1%202-1%202%201s1%203%2016%203c8%200%2014%200%2013-1-2%200-4-9-3-9v-3c1-2%201-2-3-2-6%201-6%200%200-1%204-1%207%200%207%201l-1%201-1%201v2c1%200%203%208%202%209l1%201h2l2%201%201-1%202-2c1-1%201%200%201%201l1%202%204-12%201-4c1-1%201-1%201%201%200%203%200%203%201%201%201-1%202-3%201-5l1-4c4-2%204%200%204%2012v12l1-11%201-11v21h21l-1-8-1-8%201%202%201%203%201-2-1-21h2v-2h-3c-1%201-1%201-1-1%200-1%201-2%203-2%203%200%203%200%203%204s0%204%202%203v-5c1-3%2011-3%2011%200l1%203c3%200%204-4%201-4-1-1%204-1%2010-1l10%201v3c0%202-1%203-5%203-6%202-9%201-9-3%200-2%200-3-1-2l-1%206c0%205%200%205-3%205-5%200-7-1-7-7%201-7-2-3-2%205l-3%2011c-1%204-1%204-2%202s-1-2-1%201c0%202%201%203%204%205l5%206%201%202c0-1%201-2%203-2s2%200%202%202v1l1-1h1l4%201h4v-11l1-11h5c4%200%206%202%202%202-2%200-2%200%200%201l1%201c-1%200-2%200-1%201l-1%202c0%201-1%201-1-1l-2-4-1%208-1%2010c0%202%200%202%2011%202%2013%200%2013%200%2012-5l3-3%202-6%201-4v-16c1-1%201-1%201%201v2l5-3%205-4%205-1c4%200%204%200%205%205a689%20689%200%20001%2024v10h29v-14l-2-19v-6h84l1-38v-37h-44l3-3c3-3%206-4%2010-4l5-1c1-1%201-1-2-1-5%200-10%202-15%205-6%204-14%206-12%203l-1-1-1%201-15%201h-15l1-10%201-18c2-11%200-19-5-24l-1-2%201-1c0-2%202-3%204-2h1l1-2v-6l-1-6c1-1-1-2-1%200v9h-3%201v-2c-2-3-6-4-6-2h-7c-6%201-6%201-6%204s0%203%201%201l2-2v2l-2%205c-1-1-2%200-2%201%200%202-1%203-2%203-2%200-2%200-1-1%202-2%204-11%202-11l-1%202h-1c0-2-5-4-10-7-8-4-8-5-5-5l4%201%208%204c5%203%206%203%2011%202l6-1-2-2c-1-2-1-2%201-2h3c1%200%205-7%205-10l5-1c6%201%206%201%209-8%203-7%203-14%201-12-2%201-3-9-3-30a386%20386%200%2000-1-17c-2%205-4%204-4-2%200-11-1-3-2%2013%200%2013-1%2018-2%2019-2%203-3%201-4-8-2-10-3-12-8-10l-3%202v-7l-1-8%204-6c6-5%206-6%203-13-8-16-18-17-95-17a531%20531%200%2001-54-1c0%201-16%203-18%202-1-1%200-1%202-1h3l-3-1-3-1h2l3-1c0-1-22-2-23-1h-3c-2-1-2-1-1-2%202-1%201-1-2-1l-3-2%201-1v-1c-1-4-4-9-4-7m92%2051c-4%202-16%2012-16%2014h2l-2%204-2%204%207-6c15-16%2021-15%2042%205%2013%2013%2017%2016%2028%2020%2010%204%2020%203%2027-4%204-4%202-4-3%200-8%206-15%205-29-1-10-5-14-8-12-8l-4-5c-3-3-5-5-4-6h-1l-1-1c2-2-13-16-17-16h-15m-3%2016c-5%203-8%206-18%2018-4%206-7%208-9%208-5%202-5%203-3%2013l3%2010%206%201c6%201%206%201%209-3l4-5a265%20265%200%20002-10l1%206c-1%202%200%203%202%200l2-1%202-1%2010-1c10%200%2011%201%2021%2013l8%209v2l1%201c4-2%209-2%2011-1s2%201-1%201c-5%200-9%202-13%207s-4%205%201%207c3%201%203%201%206-2%204-4%209-6%2012-6%204%201%204%200%201-4-2-3-3-4-2-5%201-2%203-2%202%200l2%203c3%201%203%201%203-1%200-1%200-2%201-1l1-5c0-3%200-4-1-2s-1%200-3-8c0-7-2-10-6-13l-2-3c0-2-1-2-8-3-3-1-5-2-9-7-15-18-18-20-27-20l-9%203m134%2013l-1%2023%205-12c1-4%200-12-1-12l-2-4c0-3-1-2-1%205m-70-4c-2%200-2%201-2%202%201%203-1%203-6%201-9-4-7-1%203%205%208%204%2018%205%2024%202%202-1%203-2%202-3v-1c1-2-10-6-13-4-1%201-1%200-1-1%200-2-1-2-7-1m32%2016l-4%203-2%201c-1-1-3%200-5%203l-3%204%208%202c11%203%209%204-5%201-3%200-4%201-1%202%201%201%200%201-1%201-5%200-3%201%204%203h7l1-1c2%201%202%200%204-2l1-3-1%204c0%203%200%204%201%203%202%200%203-4%202-5v-3c2-4%202-9%201-10l-1-2c0-2-1-2-6-1m11%209c-2%203-6%2016-6%2024l-1%205%202-3%202-2v3c1%202%201%202%201-3l2-4%201-2c1-4%203-2%202%203%200%203%200%204%201%203%201-2%203-15%201-13v3l-2%201c-2%201-3%200-3-1l1-2%202-1v-1l-1-3c1-2%201-2%201%200%200%203%202%203%202%200%200-4-1-5-3-3v-2c0-5%200-5-2-2m-89%2023c0%209-2%208-2-1%200-4%200-5-2-5s-2%201-2%207c0%205%200%206-2%206l-2-1%201-1%201-5-1-6c-2%200-2%201-2%207v7l-1-7-1-7v8c0%205%200%208%201%207l7-1%206%201h1v-3l-1-8-1-6v8m54%209l-6%202h-5l2%202%203%202-3-1c-3-1-3-1-2%201v1l-4-2v3l-1-1-2-1v2l4%206c1%203%201%203%202%201s1-2%202%200l1%202v-2c0-2%200-2%201-1h5l6-1c7-1%207-1%203-8-5-6-6-6-6-5m-101%2011h-1l-1%201-1%201-1-1c1-2-2-1-4%202-2%202-2%202%200%202l3%201c1%201%200%201-3%201h-5l2%201%203%201c0%201-1%202-3%201-1%200-2%200-1%201%204%203%203%204-2%204l-6-1%201-2%204-1-4-1c-5%200-7%202-7%208v4l2-2c3-4%2010-4%209%200h2c1-2%202-2%206%205%202%203%204%206%203%207h3v-2l-1-2c0-3-3-8-5-11-3-2-2-3%201-1l4%204c2%203%202%203%202%201s0-2%202-2c1%201%202%200%203-3%200-2%202-3%203-4l2-1-2-5c-2%200-2%200-1-2%202-3-5-7-7-4m111%2031c-8%206-11%209-9%209%203%200-2%202-7%203-5%200-6%201-6%203%200%204%203%204%2015%200%2010-3%2012-4%2018-9%204-3%205-6%202-6a953%20953%200%2001-13%200M15%20363c-1%202%201%204%205%204h4l14%201c2%200%203%200%204-3l2-3-9-1c-9%200-12%200-10%202%201%201%201%201-1%201s-3%200-2-1c2-1%201-2-3-2l-4%202m126%204l3%206%205-1h5l-2%202c-3%204-3%204%206%204l8%201c1%202%200%204-2%204s-1%202%201%202v1c-2%200-2%201-2%202l1%204c0%202%207%201%208-2%202-4%201-5-1-5-4%200-3-2%201-3s5-2%204-7c-1-2-1-2-2%200l-4%201h-2c-1%201-1%201-1-1s1-3%203-2c3%202%203-1%201-2l-6-2c-3%200-3%200-1-1%202%200%202-1%200-3l-3-2-1-1-1-1c-2%200-2%201%200%204%203%204%202%205-5%205h-7c-1%201-3%200-3-2h3l-1-3v-3c1-1%200-1-2-1l-3%201h-1l-1-1%202%206m113-2c-1%203-1%203%201%203s2%201%202%204v5h8v-6c0-7%200-7-3-9-6-2-7-1-8%203M15%20387c1%204%201%204%205%203%204-2%207-2%207%201l5%202h6l1-4c1-4%201-5-4-3s-5%202-8%200l-5-1h-5c-2-1-2-1-2%202'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"seo":{"src":"/static/7d4a98470ec7e64e3cbb19681c7c7fab/0ff54/cleancode.jpg"}}}]}},"staticQueryHashes":["1609575157","2068910035","2361467917","2361467917","3838421970","500183989","5650841"]}