https://wokwi.com/projects/415889950183848961

Eingereichte URL:
https://wokwi.com/projects/415889950183848961
Bericht beendet:

Die von der Seite ausgehenden identifizierten Links

JavaScript-Variablen · 35 gefunden

Globale JavaScript-Variablen, die in das Window Object einer Seite geladen werden, sind Variablen, die außerhalb von Funktionen deklariert werden und von jeder Stelle des Codes innerhalb des aktuellen Bereichs zugänglich sind

NameTyp
onbeforetoggleobject
documentPictureInPictureobject
onscrollendobject
webpackChunk_N_Eobject
__next_set_public_path__function
nextobject
__NEXT_DATA__object
__SSG_MANIFEST_CBfunction
__NEXT_Pobject
_N_Eobject

Konsolenprotokoll-Meldungen · 0 gefunden

In der Web-Konsole protokollierte Meldungen

HTML

Der HTML-Rohtext der Seite

<!DOCTYPE html><html lang="en"><head><style data-emotion="css-global" data-s="">html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box;-webkit-text-size-adjust:100%;}*,*::before,*::after{box-sizing:inherit;}strong,b{font-weight:700;}body{margin:0;color:#fff;font-family:"Roboto","Helvetica","Arial",sans-serif;font-weight:400;font-size:1rem;line-height:1.5;letter-spacing:0.00938em;background-color:#121212;}@media print{body{background-color:#fff;}}body::backdrop{background-color:#121212;}</style><style data-emotion="css zf0iqh 5kthed 126e75q u0g51i 9hblc8 1vv51b1 vubbuv 9q40pm 6ci2yv 1ynyhby 1yeoas6 1tanlhh 7zja2y 1ohvc2h" data-s="">.css-zf0iqh{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;min-height:100vh;}.css-5kthed{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;border-radius:4px;box-shadow:0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12);}.css-5kthed .MuiButtonGroup-grouped{min-width:40px;box-shadow:none;}.css-5kthed .MuiButtonGroup-grouped:hover{box-shadow:none;}.css-5kthed .MuiButtonGroup-firstButton,.css-5kthed .MuiButtonGroup-middleButton{border-top-right-radius:0;border-bottom-right-radius:0;border-right:1px solid #bdbdbd;border-color:#42a5f5;}.css-5kthed .MuiButtonGroup-firstButton.Mui-disabled,.css-5kthed .MuiButtonGroup-middleButton.Mui-disabled{border-right:1px solid rgba(255, 255, 255, 0.3);}.css-5kthed .MuiButtonGroup-lastButton,.css-5kthed .MuiButtonGroup-middleButton{border-top-left-radius:0;border-bottom-left-radius:0;}.css-126e75q{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;font-family:"Roboto","Helvetica","Arial",sans-serif;font-weight:500;font-size:0.8125rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-width:64px;padding:4px 10px;border-radius:4px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;color:rgba(0, 0, 0, 0.87);background-color:#90caf9;box-shadow:0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12);color:white;background-color:#2196f3;}.css-126e75q::-moz-focus-inner{border-style:none;}.css-126e75q.Mui-disabled{pointer-events:none;cursor:default;}@media print{.css-126e75q{-webkit-print-color-adjust:exact;color-adjust:exact;}}.css-126e75q:hover{-webkit-text-decoration:none;text-decoration:none;background-color:#42a5f5;box-shadow:0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12);}@media (hover: none){.css-126e75q:hover{background-color:#90caf9;}}.css-126e75q:active{box-shadow:0px 5px 5px -3px rgba(0,0,0,0.2),0px 8px 10px 1px rgba(0,0,0,0.14),0px 3px 14px 2px rgba(0,0,0,0.12);}.css-126e75q.Mui-focusVisible{box-shadow:0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12);}.css-126e75q.Mui-disabled{color:rgba(255, 255, 255, 0.3);box-shadow:none;background-color:rgba(255, 255, 255, 0.12);}.css-u0g51i{display:inherit;margin-right:8px;margin-left:-2px;}.css-u0g51i>*:nth-of-type(1){font-size:18px;}@media (min-width:0px){.css-9hblc8{display:none;}}@media (min-width:600px){.css-9hblc8{display:initial;}}.css-1vv51b1{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;font-family:"Roboto","Helvetica","Arial",sans-serif;font-weight:500;font-size:0.8125rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-width:64px;padding:4px 10px;border-radius:4px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;color:rgba(0, 0, 0, 0.87);background-color:#90caf9;box-shadow:0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12);color:white;background-color:#2196f3;min-width:28px;padding:4px 0;}.css-1vv51b1::-moz-focus-inner{border-style:none;}.css-1vv51b1.Mui-disabled{pointer-events:none;cursor:default;}@media print{.css-1vv51b1{-webkit-print-color-adjust:exact;color-adjust:exact;}}.css-1vv51b1:hover{-webkit-text-decoration:none;text-decoration:none;background-color:#42a5f5;box-shadow:0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12);}@media (hover: none){.css-1vv51b1:hover{background-color:#90caf9;}}.css-1vv51b1:active{box-shadow:0px 5px 5px -3px rgba(0,0,0,0.2),0px 8px 10px 1px rgba(0,0,0,0.14),0px 3px 14px 2px rgba(0,0,0,0.12);}.css-1vv51b1.Mui-focusVisible{box-shadow:0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12);}.css-1vv51b1.Mui-disabled{color:rgba(255, 255, 255, 0.3);box-shadow:none;background-color:rgba(255, 255, 255, 0.12);}.css-vubbuv{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:1em;height:1em;display:inline-block;fill:currentColor;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;-webkit-transition:fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;font-size:1.5rem;}.css-9q40pm{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;font-family:"Roboto","Helvetica","Arial",sans-serif;font-weight:500;font-size:0.8125rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-width:64px;padding:4px 10px;border-radius:4px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;color:rgba(0, 0, 0, 0.87);background-color:#90caf9;box-shadow:0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12);color:white;background-color:#2196f3;}.css-9q40pm::-moz-focus-inner{border-style:none;}.css-9q40pm.Mui-disabled{pointer-events:none;cursor:default;}@media print{.css-9q40pm{-webkit-print-color-adjust:exact;color-adjust:exact;}}.css-9q40pm:hover{-webkit-text-decoration:none;text-decoration:none;background-color:#42a5f5;box-shadow:0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12);}@media (hover: none){.css-9q40pm:hover{background-color:#90caf9;}}.css-9q40pm:active{box-shadow:0px 5px 5px -3px rgba(0,0,0,0.2),0px 8px 10px 1px rgba(0,0,0,0.14),0px 3px 14px 2px rgba(0,0,0,0.12);}.css-9q40pm.Mui-focusVisible{box-shadow:0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12);}.css-9q40pm.Mui-disabled{color:rgba(255, 255, 255, 0.3);box-shadow:none;background-color:rgba(255, 255, 255, 0.12);}@media (min-width:0px){.css-9q40pm{display:none;}}@media (min-width:600px){.css-9q40pm{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}.css-6ci2yv{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;text-align:center;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;font-size:1.5rem;padding:8px;border-radius:50%;overflow:visible;color:#fff;-webkit-transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;padding:12px;font-size:1.75rem;}.css-6ci2yv::-moz-focus-inner{border-style:none;}.css-6ci2yv.Mui-disabled{pointer-events:none;cursor:default;}@media print{.css-6ci2yv{-webkit-print-color-adjust:exact;color-adjust:exact;}}.css-6ci2yv:hover{background-color:rgba(255, 255, 255, 0.08);}@media (hover: none){.css-6ci2yv:hover{background-color:transparent;}}.css-6ci2yv.Mui-disabled{background-color:transparent;color:rgba(255, 255, 255, 0.3);}.css-1ynyhby{margin:8px;}.css-1yeoas6{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;font-family:"Roboto","Helvetica","Arial",sans-serif;font-weight:500;font-size:0.875rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-height:36px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:50%;padding:0;min-width:0;width:40px;height:40px;z-index:1050;box-shadow:0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12);color:rgba(0, 0, 0, 0.87);background-color:#e0e0e0;background-color:#43a047;color:white;}.css-1yeoas6::-moz-focus-inner{border-style:none;}.css-1yeoas6.Mui-disabled{pointer-events:none;cursor:default;}@media print{.css-1yeoas6{-webkit-print-color-adjust:exact;color-adjust:exact;}}.css-1yeoas6:active{box-shadow:0px 7px 8px -4px rgba(0,0,0,0.2),0px 12px 17px 2px rgba(0,0,0,0.14),0px 5px 22px 4px rgba(0,0,0,0.12);}.css-1yeoas6:hover{background-color:#f5f5f5;-webkit-text-decoration:none;text-decoration:none;}@media (hover: none){.css-1yeoas6:hover{background-color:#e0e0e0;}}.css-1yeoas6.Mui-focusVisible{box-shadow:0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12);}.css-1yeoas6.Mui-disabled{color:rgba(255, 255, 255, 0.3);box-shadow:none;background-color:rgba(255, 255, 255, 0.12);}.css-1yeoas6:hover{background-color:#388e3c;}.css-1tanlhh{margin-top:8px;margin-bottom:8px;margin-right:8px;}.css-7zja2y{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;font-family:"Roboto","Helvetica","Arial",sans-serif;font-weight:500;font-size:0.875rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-height:36px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:50%;padding:0;min-width:0;width:40px;height:40px;z-index:1050;box-shadow:0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12);color:rgba(0, 0, 0, 0.87);background-color:#e0e0e0;background:#1565c0;color:white;}.css-7zja2y::-moz-focus-inner{border-style:none;}.css-7zja2y.Mui-disabled{pointer-events:none;cursor:default;}@media print{.css-7zja2y{-webkit-print-color-adjust:exact;color-adjust:exact;}}.css-7zja2y:active{box-shadow:0px 7px 8px -4px rgba(0,0,0,0.2),0px 12px 17px 2px rgba(0,0,0,0.14),0px 5px 22px 4px rgba(0,0,0,0.12);}.css-7zja2y:hover{background-color:#f5f5f5;-webkit-text-decoration:none;text-decoration:none;}@media (hover: none){.css-7zja2y:hover{background-color:#e0e0e0;}}.css-7zja2y.Mui-focusVisible{box-shadow:0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12);}.css-7zja2y.Mui-disabled{color:rgba(255, 255, 255, 0.3);box-shadow:none;background-color:rgba(255, 255, 255, 0.12);}.css-7zja2y:hover{background:#0d47a1;}.css-1ohvc2h{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;font-family:"Roboto","Helvetica","Arial",sans-serif;font-weight:500;font-size:0.875rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-height:36px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:50%;padding:0;min-width:0;width:40px;height:40px;z-index:1050;box-shadow:0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12);color:rgba(0, 0, 0, 0.87);background-color:#e0e0e0;background:#757575;color:white;}.css-1ohvc2h::-moz-focus-inner{border-style:none;}.css-1ohvc2h.Mui-disabled{pointer-events:none;cursor:default;}@media print{.css-1ohvc2h{-webkit-print-color-adjust:exact;color-adjust:exact;}}.css-1ohvc2h:active{box-shadow:0px 7px 8px -4px rgba(0,0,0,0.2),0px 12px 17px 2px rgba(0,0,0,0.14),0px 5px 22px 4px rgba(0,0,0,0.12);}.css-1ohvc2h:hover{background-color:#f5f5f5;-webkit-text-decoration:none;text-decoration:none;}@media (hover: none){.css-1ohvc2h:hover{background-color:#e0e0e0;}}.css-1ohvc2h.Mui-focusVisible{box-shadow:0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12);}.css-1ohvc2h.Mui-disabled{color:rgba(255, 255, 255, 0.3);box-shadow:none;background-color:rgba(255, 255, 255, 0.12);}.css-1ohvc2h:hover{background:#616161;}</style><style data-emotion="css" data-s=""></style><meta charset="utf-8"><meta name="viewport" content="width=device-width"><link href="/favicon-white.png" rel="icon" media="(prefers-color-scheme: dark)"><link href="/favicon.png" rel="icon" media="(prefers-color-scheme: light)"><meta name="twitter:site" content="@WokwiMakes"><meta name="twitter:card" content="summary_large_image"><title>esp32-micropython-ssd1306 Copy - Wokwi ESP32, STM32, Arduino Simulator</title><meta property="og:title" content="esp32-micropython-ssd1306 Copy - Wokwi ESP32, STM32, Arduino Simulator"><meta property="og:description" content="Run IoT and embedded projects in your browser: ESP32, STM32, Arduino, Pi Pico, and more. No installation required!"><meta property="og:image" content="https://thumbs.wokwi.com/projects/415889950183848961/social/1732882413925.png"><meta property="og:image:type" content="image/png"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><link rel="alternate" type="application/json+oembed" href="https://wokwi.com/api/oembed?url=https%3A%2F%2Fwokwi.com%2Fshare%2F415889950183848961&amp;t=1732882413925}" title="Wokwi oEmbed provider"><meta name="next-head-count" content="14"><meta name="theme-color" content="#90caf9"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin=""><link rel="preload" href="/_next/static/css/cc97500f1ef959df.css" as="style"><link rel="stylesheet" href="/_next/static/css/cc97500f1ef959df.css" data-n-g=""><link rel="preload" href="/_next/static/css/0aa695c96f2e24b7.css" as="style"><link rel="stylesheet" href="/_next/static/css/0aa695c96f2e24b7.css" data-n-p=""><noscript data-n-css=""></noscript><script type="text/javascript" async="" src="https://www.google-analytics.com/analytics.js"></script><script type="text/javascript" async="" src="https://www.googletagmanager.com/gtag/js?id=G-NCK2JJ7E5V&amp;l=dataLayer&amp;cx=c&amp;gtm=457e4bk0za200"></script><script defer="" nomodule="" src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/_next/static/chunks/webpack-07ff09b461963f91.js" defer=""></script><script src="/_next/static/chunks/framework-128cfde67f3541f2.js" defer=""></script><script src="/_next/static/chunks/main-694c09c59ce722f5.js" defer=""></script><script src="/_next/static/chunks/pages/_app-08cc3a6ade24fcbc.js" defer=""></script><script src="/_next/static/chunks/b2e984c5-ca39afa8231e61d4.js" defer=""></script><script src="/_next/static/chunks/2792-017442d2becba91c.js" defer=""></script><script src="/_next/static/chunks/768-455d5ca36c626c69.js" defer=""></script><script src="/_next/static/chunks/7965-77ef3db5a8c3b2ce.js" defer=""></script><script src="/_next/static/chunks/652-1c2bd041eb382407.js" defer=""></script><script src="/_next/static/chunks/2124-5b53e12ca4d04308.js" defer=""></script><script src="/_next/static/chunks/5591-35d2b55a1d48c2e4.js" defer=""></script><script src="/_next/static/chunks/7218-dc2a250da361ffc5.js" defer=""></script><script src="/_next/static/chunks/1986-30062943eed4a5a0.js" defer=""></script><script src="/_next/static/chunks/7482-214355522d6e13b4.js" defer=""></script><script src="/_next/static/chunks/2064-d276a9d0b7af6de3.js" defer=""></script><script src="/_next/static/chunks/3764-6378acdaf83bcc60.js" defer=""></script><script src="/_next/static/chunks/1215-58aaf1c98c0816fc.js" defer=""></script><script src="/_next/static/chunks/7295-828425bda9b81df8.js" defer=""></script><script src="/_next/static/chunks/6801-344f28a1ba51915f.js" defer=""></script><script src="/_next/static/chunks/3969-5a2b9ff97d33e26e.js" defer=""></script><script src="/_next/static/chunks/6333-81b7f2d6cf753d9f.js" defer=""></script><script src="/_next/static/chunks/8521-f21c1c6f5dc65191.js" defer=""></script><script src="/_next/static/chunks/9552-a2b336a6b9dc8b01.js" defer=""></script><script src="/_next/static/chunks/pages/projects/%5BprojectId%5D-f758895c826f8935.js" defer=""></script><script src="/_next/static/Jgf9C4Fm-yuItJy5IN1PL/_buildManifest.js" defer=""></script><script src="/_next/static/Jgf9C4Fm-yuItJy5IN1PL/_ssgManifest.js" defer=""></script><style data-href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&amp;display=swap">@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fBBc-.woff) format('woff')}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu4mxM.woff) format('woff')}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fBBc-.woff) format('woff')}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfBBc-.woff) format('woff')}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fCRc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fABc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fCBc4AMP6lbBP.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fBxc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fCxc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fChc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu72xKKTU1Kvnz.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu5mxKKTU1Kvnz.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu7mxKKTU1Kvnz.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu4WxKKTU1Kvnz.woff2) format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu7WxKKTU1Kvnz.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu7GxKKTU1Kvnz.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fCRc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fABc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fCBc4AMP6lbBP.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fBxc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fCxc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfCRc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfABc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfCBc4AMP6lbBP.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfBxc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfCxc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfChc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfBBc4AMP6lQ.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}</style><style data-styled="active" data-styled-version="5.3.10"></style><script async="async" type="text/javascript" src="https://wokwi.com/cdn/monaco-editor/0.48.0/vs/editor/editor.main.js"></script><link rel="stylesheet" type="text/css" data-name="vs/editor/editor.main" href="https://wokwi.com/cdn/monaco-editor/0.48.0/vs/editor/editor.main.css"><script async="async" type="text/javascript" src="https://wokwi.com/cdn/monaco-editor/0.48.0/vs/editor/editor.main.nls.js"></script><link as="script" rel="prefetch" href="/_next/static/chunks/1354-dde8698882d588ba.js"><link as="script" rel="prefetch" href="/_next/static/chunks/pages/index-e6b2ed21e312ddf4.js"><style type="text/css" media="screen" class="monaco-colors">.codicon-add:before { content: '\ea60'; }
.codicon-plus:before { content: '\ea60'; }
.codicon-gist-new:before { content: '\ea60'; }
.codicon-repo-create:before { content: '\ea60'; }
.codicon-lightbulb:before { content: '\ea61'; }
.codicon-light-bulb:before { content: '\ea61'; }
.codicon-repo:before { content: '\ea62'; }
.codicon-repo-delete:before { content: '\ea62'; }
.codicon-gist-fork:before { content: '\ea63'; }
.codicon-repo-forked:before { content: '\ea63'; }
.codicon-git-pull-request:before { content: '\ea64'; }
.codicon-git-pull-request-abandoned:before { content: '\ea64'; }
.codicon-record-keys:before { content: '\ea65'; }
.codicon-keyboard:before { content: '\ea65'; }
.codicon-tag:before { content: '\ea66'; }
.codicon-git-pull-request-label:before { content: '\ea66'; }
.codicon-tag-add:before { content: '\ea66'; }
.codicon-tag-remove:before { content: '\ea66'; }
.codicon-person:before { content: '\ea67'; }
.codicon-person-follow:before { content: '\ea67'; }
.codicon-person-outline:before { content: '\ea67'; }
.codicon-person-filled:before { content: '\ea67'; }
.codicon-git-branch:before { content: '\ea68'; }
.codicon-git-branch-create:before { content: '\ea68'; }
.codicon-git-branch-delete:before { content: '\ea68'; }
.codicon-source-control:before { content: '\ea68'; }
.codicon-mirror:before { content: '\ea69'; }
.codicon-mirror-public:before { content: '\ea69'; }
.codicon-star:before { content: '\ea6a'; }
.codicon-star-add:before { content: '\ea6a'; }
.codicon-star-delete:before { content: '\ea6a'; }
.codicon-star-empty:before { content: '\ea6a'; }
.codicon-comment:before { content: '\ea6b'; }
.codicon-comment-add:before { content: '\ea6b'; }
.codicon-alert:before { content: '\ea6c'; }
.codicon-warning:before { content: '\ea6c'; }
.codicon-search:before { content: '\ea6d'; }
.codicon-search-save:before { content: '\ea6d'; }
.codicon-log-out:before { content: '\ea6e'; }
.codicon-sign-out:before { content: '\ea6e'; }
.codicon-log-in:before { content: '\ea6f'; }
.codicon-sign-in:before { content: '\ea6f'; }
.codicon-eye:before { content: '\ea70'; }
.codicon-eye-unwatch:before { content: '\ea70'; }
.codicon-eye-watch:before { content: '\ea70'; }
.codicon-circle-filled:before { content: '\ea71'; }
.codicon-primitive-dot:before { content: '\ea71'; }
.codicon-close-dirty:before { content: '\ea71'; }
.codicon-debug-breakpoint:before { content: '\ea71'; }
.codicon-debug-breakpoint-disabled:before { content: '\ea71'; }
.codicon-debug-hint:before { content: '\ea71'; }
.codicon-terminal-decoration-success:before { content: '\ea71'; }
.codicon-primitive-square:before { content: '\ea72'; }
.codicon-edit:before { content: '\ea73'; }
.codicon-pencil:before { content: '\ea73'; }
.codicon-info:before { content: '\ea74'; }
.codicon-issue-opened:before { content: '\ea74'; }
.codicon-gist-private:before { content: '\ea75'; }
.codicon-git-fork-private:before { content: '\ea75'; }
.codicon-lock:before { content: '\ea75'; }
.codicon-mirror-private:before { content: '\ea75'; }
.codicon-close:before { content: '\ea76'; }
.codicon-remove-close:before { content: '\ea76'; }
.codicon-x:before { content: '\ea76'; }
.codicon-repo-sync:before { content: '\ea77'; }
.codicon-sync:before { content: '\ea77'; }
.codicon-clone:before { content: '\ea78'; }
.codicon-desktop-download:before { content: '\ea78'; }
.codicon-beaker:before { content: '\ea79'; }
.codicon-microscope:before { content: '\ea79'; }
.codicon-vm:before { content: '\ea7a'; }
.codicon-device-desktop:before { content: '\ea7a'; }
.codicon-file:before { content: '\ea7b'; }
.codicon-file-text:before { content: '\ea7b'; }
.codicon-more:before { content: '\ea7c'; }
.codicon-ellipsis:before { content: '\ea7c'; }
.codicon-kebab-horizontal:before { content: '\ea7c'; }
.codicon-mail-reply:before { content: '\ea7d'; }
.codicon-reply:before { content: '\ea7d'; }
.codicon-organization:before { content: '\ea7e'; }
.codicon-organization-filled:before { content: '\ea7e'; }
.codicon-organization-outline:before { content: '\ea7e'; }
.codicon-new-file:before { content: '\ea7f'; }
.codicon-file-add:before { content: '\ea7f'; }
.codicon-new-folder:before { content: '\ea80'; }
.codicon-file-directory-create:before { content: '\ea80'; }
.codicon-trash:before { content: '\ea81'; }
.codicon-trashcan:before { content: '\ea81'; }
.codicon-history:before { content: '\ea82'; }
.codicon-clock:before { content: '\ea82'; }
.codicon-folder:before { content: '\ea83'; }
.codicon-file-directory:before { content: '\ea83'; }
.codicon-symbol-folder:before { content: '\ea83'; }
.codicon-logo-github:before { content: '\ea84'; }
.codicon-mark-github:before { content: '\ea84'; }
.codicon-github:before { content: '\ea84'; }
.codicon-terminal:before { content: '\ea85'; }
.codicon-console:before { content: '\ea85'; }
.codicon-repl:before { content: '\ea85'; }
.codicon-zap:before { content: '\ea86'; }
.codicon-symbol-event:before { content: '\ea86'; }
.codicon-error:before { content: '\ea87'; }
.codicon-stop:before { content: '\ea87'; }
.codicon-variable:before { content: '\ea88'; }
.codicon-symbol-variable:before { content: '\ea88'; }
.codicon-array:before { content: '\ea8a'; }
.codicon-symbol-array:before { content: '\ea8a'; }
.codicon-symbol-module:before { content: '\ea8b'; }
.codicon-symbol-package:before { content: '\ea8b'; }
.codicon-symbol-namespace:before { content: '\ea8b'; }
.codicon-symbol-object:before { content: '\ea8b'; }
.codicon-symbol-method:before { content: '\ea8c'; }
.codicon-symbol-function:before { content: '\ea8c'; }
.codicon-symbol-constructor:before { content: '\ea8c'; }
.codicon-symbol-boolean:before { content: '\ea8f'; }
.codicon-symbol-null:before { content: '\ea8f'; }
.codicon-symbol-numeric:before { content: '\ea90'; }
.codicon-symbol-number:before { content: '\ea90'; }
.codicon-symbol-structure:before { content: '\ea91'; }
.codicon-symbol-struct:before { content: '\ea91'; }
.codicon-symbol-parameter:before { content: '\ea92'; }
.codicon-symbol-type-parameter:before { content: '\ea92'; }
.codicon-symbol-key:before { content: '\ea93'; }
.codicon-symbol-text:before { content: '\ea93'; }
.codicon-symbol-reference:before { content: '\ea94'; }
.codicon-go-to-file:before { content: '\ea94'; }
.codicon-symbol-enum:before { content: '\ea95'; }
.codicon-symbol-value:before { content: '\ea95'; }
.codicon-symbol-ruler:before { content: '\ea96'; }
.codicon-symbol-unit:before { content: '\ea96'; }
.codicon-activate-breakpoints:before { content: '\ea97'; }
.codicon-archive:before { content: '\ea98'; }
.codicon-arrow-both:before { content: '\ea99'; }
.codicon-arrow-down:before { content: '\ea9a'; }
.codicon-arrow-left:before { content: '\ea9b'; }
.codicon-arrow-right:before { content: '\ea9c'; }
.codicon-arrow-small-down:before { content: '\ea9d'; }
.codicon-arrow-small-left:before { content: '\ea9e'; }
.codicon-arrow-small-right:before { content: '\ea9f'; }
.codicon-arrow-small-up:before { content: '\eaa0'; }
.codicon-arrow-up:before { content: '\eaa1'; }
.codicon-bell:before { content: '\eaa2'; }
.codicon-bold:before { content: '\eaa3'; }
.codicon-book:before { content: '\eaa4'; }
.codicon-bookmark:before { content: '\eaa5'; }
.codicon-debug-breakpoint-conditional-unverified:before { content: '\eaa6'; }
.codicon-debug-breakpoint-conditional:before { content: '\eaa7'; }
.codicon-debug-breakpoint-conditional-disabled:before { content: '\eaa7'; }
.codicon-debug-breakpoint-data-unverified:before { content: '\eaa8'; }
.codicon-debug-breakpoint-data:before { content: '\eaa9'; }
.codicon-debug-breakpoint-data-disabled:before { content: '\eaa9'; }
.codicon-debug-breakpoint-log-unverified:before { content: '\eaaa'; }
.codicon-debug-breakpoint-log:before { content: '\eaab'; }
.codicon-debug-breakpoint-log-disabled:before { content: '\eaab'; }
.codicon-briefcase:before { content: '\eaac'; }
.codicon-broadcast:before { content: '\eaad'; }
.codicon-browser:before { content: '\eaae'; }
.codicon-bug:before { content: '\eaaf'; }
.codicon-calendar:before { content: '\eab0'; }
.codicon-case-sensitive:before { content: '\eab1'; }
.codicon-check:before { content: '\eab2'; }
.codicon-checklist:before { content: '\eab3'; }
.codicon-chevron-down:before { content: '\eab4'; }
.codicon-chevron-left:before { content: '\eab5'; }
.codicon-chevron-right:before { content: '\eab6'; }
.codicon-chevron-up:before { content: '\eab7'; }
.codicon-chrome-close:before { content: '\eab8'; }
.codicon-chrome-maximize:before { content: '\eab9'; }
.codicon-chrome-minimize:before { content: '\eaba'; }
.codicon-chrome-restore:before { content: '\eabb'; }
.codicon-circle-outline:before { content: '\eabc'; }
.codicon-circle:before { content: '\eabc'; }
.codicon-debug-breakpoint-unverified:before { content: '\eabc'; }
.codicon-terminal-decoration-incomplete:before { content: '\eabc'; }
.codicon-circle-slash:before { content: '\eabd'; }
.codicon-circuit-board:before { content: '\eabe'; }
.codicon-clear-all:before { content: '\eabf'; }
.codicon-clippy:before { content: '\eac0'; }
.codicon-close-all:before { content: '\eac1'; }
.codicon-cloud-download:before { content: '\eac2'; }
.codicon-cloud-upload:before { content: '\eac3'; }
.codicon-code:before { content: '\eac4'; }
.codicon-collapse-all:before { content: '\eac5'; }
.codicon-color-mode:before { content: '\eac6'; }
.codicon-comment-discussion:before { content: '\eac7'; }
.codicon-credit-card:before { content: '\eac9'; }
.codicon-dash:before { content: '\eacc'; }
.codicon-dashboard:before { content: '\eacd'; }
.codicon-database:before { content: '\eace'; }
.codicon-debug-continue:before { content: '\eacf'; }
.codicon-debug-disconnect:before { content: '\ead0'; }
.codicon-debug-pause:before { content: '\ead1'; }
.codicon-debug-restart:before { content: '\ead2'; }
.codicon-debug-start:before { content: '\ead3'; }
.codicon-debug-step-into:before { content: '\ead4'; }
.codicon-debug-step-out:before { content: '\ead5'; }
.codicon-debug-step-over:before { content: '\ead6'; }
.codicon-debug-stop:before { content: '\ead7'; }
.codicon-debug:before { content: '\ead8'; }
.codicon-device-camera-video:before { content: '\ead9'; }
.codicon-device-camera:before { content: '\eada'; }
.codicon-device-mobile:before { content: '\eadb'; }
.codicon-diff-added:before { content: '\eadc'; }
.codicon-diff-ignored:before { content: '\eadd'; }
.codicon-diff-modified:before { content: '\eade'; }
.codicon-diff-removed:before { content: '\eadf'; }
.codicon-diff-renamed:before { content: '\eae0'; }
.codicon-diff:before { content: '\eae1'; }
.codicon-diff-sidebyside:before { content: '\eae1'; }
.codicon-discard:before { content: '\eae2'; }
.codicon-editor-layout:before { content: '\eae3'; }
.codicon-empty-window:before { content: '\eae4'; }
.codicon-exclude:before { content: '\eae5'; }
.codicon-extensions:before { content: '\eae6'; }
.codicon-eye-closed:before { content: '\eae7'; }
.codicon-file-binary:before { content: '\eae8'; }
.codicon-file-code:before { content: '\eae9'; }
.codicon-file-media:before { content: '\eaea'; }
.codicon-file-pdf:before { content: '\eaeb'; }
.codicon-file-submodule:before { content: '\eaec'; }
.codicon-file-symlink-directory:before { content: '\eaed'; }
.codicon-file-symlink-file:before { content: '\eaee'; }
.codicon-file-zip:before { content: '\eaef'; }
.codicon-files:before { content: '\eaf0'; }
.codicon-filter:before { content: '\eaf1'; }
.codicon-flame:before { content: '\eaf2'; }
.codicon-fold-down:before { content: '\eaf3'; }
.codicon-fold-up:before { content: '\eaf4'; }
.codicon-fold:before { content: '\eaf5'; }
.codicon-folder-active:before { content: '\eaf6'; }
.codicon-folder-opened:before { content: '\eaf7'; }
.codicon-gear:before { content: '\eaf8'; }
.codicon-gift:before { content: '\eaf9'; }
.codicon-gist-secret:before { content: '\eafa'; }
.codicon-gist:before { content: '\eafb'; }
.codicon-git-commit:before { content: '\eafc'; }
.codicon-git-compare:before { content: '\eafd'; }
.codicon-compare-changes:before { content: '\eafd'; }
.codicon-git-merge:before { content: '\eafe'; }
.codicon-github-action:before { content: '\eaff'; }
.codicon-github-alt:before { content: '\eb00'; }
.codicon-globe:before { content: '\eb01'; }
.codicon-grabber:before { content: '\eb02'; }
.codicon-graph:before { content: '\eb03'; }
.codicon-gripper:before { content: '\eb04'; }
.codicon-heart:before { content: '\eb05'; }
.codicon-home:before { content: '\eb06'; }
.codicon-horizontal-rule:before { content: '\eb07'; }
.codicon-hubot:before { content: '\eb08'; }
.codicon-inbox:before { content: '\eb09'; }
.codicon-issue-reopened:before { content: '\eb0b'; }
.codicon-issues:before { content: '\eb0c'; }
.codicon-italic:before { content: '\eb0d'; }
.codicon-jersey:before { content: '\eb0e'; }
.codicon-json:before { content: '\eb0f'; }
.codicon-kebab-vertical:before { content: '\eb10'; }
.codicon-key:before { content: '\eb11'; }
.codicon-law:before { content: '\eb12'; }
.codicon-lightbulb-autofix:before { content: '\eb13'; }
.codicon-link-external:before { content: '\eb14'; }
.codicon-link:before { content: '\eb15'; }
.codicon-list-ordered:before { content: '\eb16'; }
.codicon-list-unordered:before { content: '\eb17'; }
.codicon-live-share:before { content: '\eb18'; }
.codicon-loading:before { content: '\eb19'; }
.codicon-location:before { content: '\eb1a'; }
.codicon-mail-read:before { content: '\eb1b'; }
.codicon-mail:before { content: '\eb1c'; }
.codicon-markdown:before { content: '\eb1d'; }
.codicon-megaphone:before { content: '\eb1e'; }
.codicon-mention:before { content: '\eb1f'; }
.codicon-milestone:before { content: '\eb20'; }
.codicon-git-pull-request-milestone:before { content: '\eb20'; }
.codicon-mortar-board:before { content: '\eb21'; }
.codicon-move:before { content: '\eb22'; }
.codicon-multiple-windows:before { content: '\eb23'; }
.codicon-mute:before { content: '\eb24'; }
.codicon-no-newline:before { content: '\eb25'; }
.codicon-note:before { content: '\eb26'; }
.codicon-octoface:before { content: '\eb27'; }
.codicon-open-preview:before { content: '\eb28'; }
.codicon-package:before { content: '\eb29'; }
.codicon-paintcan:before { content: '\eb2a'; }
.codicon-pin:before { content: '\eb2b'; }
.codicon-play:before { content: '\eb2c'; }
.codicon-run:before { content: '\eb2c'; }
.codicon-plug:before { content: '\eb2d'; }
.codicon-preserve-case:before { content: '\eb2e'; }
.codicon-preview:before { content: '\eb2f'; }
.codicon-project:before { content: '\eb30'; }
.codicon-pulse:before { content: '\eb31'; }
.codicon-question:before { content: '\eb32'; }
.codicon-quote:before { content: '\eb33'; }
.codicon-radio-tower:before { content: '\eb34'; }
.codicon-reactions:before { content: '\eb35'; }
.codicon-references:before { content: '\eb36'; }
.codicon-refresh:before { content: '\eb37'; }
.codicon-regex:before { content: '\eb38'; }
.codicon-remote-explorer:before { content: '\eb39'; }
.codicon-remote:before { content: '\eb3a'; }
.codicon-remove:before { content: '\eb3b'; }
.codicon-replace-all:before { content: '\eb3c'; }
.codicon-replace:before { content: '\eb3d'; }
.codicon-repo-clone:before { content: '\eb3e'; }
.codicon-repo-force-push:before { content: '\eb3f'; }
.codicon-repo-pull:before { content: '\eb40'; }
.codicon-repo-push:before { content: '\eb41'; }
.codicon-report:before { content: '\eb42'; }
.codicon-request-changes:before { content: '\eb43'; }
.codicon-rocket:before { content: '\eb44'; }
.codicon-root-folder-opened:before { content: '\eb45'; }
.codicon-root-folder:before { content: '\eb46'; }
.codicon-rss:before { content: '\eb47'; }
.codicon-ruby:before { content: '\eb48'; }
.codicon-save-all:before { content: '\eb49'; }
.codicon-save-as:before { content: '\eb4a'; }
.codicon-save:before { content: '\eb4b'; }
.codicon-screen-full:before { content: '\eb4c'; }
.codicon-screen-normal:before { content: '\eb4d'; }
.codicon-search-stop:before { content: '\eb4e'; }
.codicon-server:before { content: '\eb50'; }
.codicon-settings-gear:before { content: '\eb51'; }
.codicon-settings:before { content: '\eb52'; }
.codicon-shield:before { content: '\eb53'; }
.codicon-smiley:before { content: '\eb54'; }
.codicon-sort-precedence:before { content: '\eb55'; }
.codicon-split-horizontal:before { content: '\eb56'; }
.codicon-split-vertical:before { content: '\eb57'; }
.codicon-squirrel:before { content: '\eb58'; }
.codicon-star-full:before { content: '\eb59'; }
.codicon-star-half:before { content: '\eb5a'; }
.codicon-symbol-class:before { content: '\eb5b'; }
.codicon-symbol-color:before { content: '\eb5c'; }
.codicon-symbol-constant:before { content: '\eb5d'; }
.codicon-symbol-enum-member:before { content: '\eb5e'; }
.codicon-symbol-field:before { content: '\eb5f'; }
.codicon-symbol-file:before { content: '\eb60'; }
.codicon-symbol-interface:before { content: '\eb61'; }
.codicon-symbol-keyword:before { content: '\eb62'; }
.codicon-symbol-misc:before { content: '\eb63'; }
.codicon-symbol-operator:before { content: '\eb64'; }
.codicon-symbol-property:before { content: '\eb65'; }
.codicon-wrench:before { content: '\eb65'; }
.codicon-wrench-subaction:before { content: '\eb65'; }
.codicon-symbol-snippet:before { content: '\eb66'; }
.codicon-tasklist:before { content: '\eb67'; }
.codicon-telescope:before { content: '\eb68'; }
.codicon-text-size:before { content: '\eb69'; }
.codicon-three-bars:before { content: '\eb6a'; }
.codicon-thumbsdown:before { content: '\eb6b'; }
.codicon-thumbsup:before { content: '\eb6c'; }
.codicon-tools:before { content: '\eb6d'; }
.codicon-triangle-down:before { content: '\eb6e'; }
.codicon-triangle-left:before { content: '\eb6f'; }
.codicon-triangle-right:before { content: '\eb70'; }
.codicon-triangle-up:before { content: '\eb71'; }
.codicon-twitter:before { content: '\eb72'; }
.codicon-unfold:before { content: '\eb73'; }
.codicon-unlock:before { content: '\eb74'; }
.codicon-unmute:before { content: '\eb75'; }
.codicon-unverified:before { content: '\eb76'; }
.codicon-verified:before { content: '\eb77'; }
.codicon-versions:before { content: '\eb78'; }
.codicon-vm-active:before { content: '\eb79'; }
.codicon-vm-outline:before { content: '\eb7a'; }
.codicon-vm-running:before { content: '\eb7b'; }
.codicon-watch:before { content: '\eb7c'; }
.codicon-whitespace:before { content: '\eb7d'; }
.codicon-whole-word:before { content: '\eb7e'; }
.codicon-window:before { content: '\eb7f'; }
.codicon-word-wrap:before { content: '\eb80'; }
.codicon-zoom-in:before { content: '\eb81'; }
.codicon-zoom-out:before { content: '\eb82'; }
.codicon-list-filter:before { content: '\eb83'; }
.codicon-list-flat:before { content: '\eb84'; }
.codicon-list-selection:before { content: '\eb85'; }
.codicon-selection:before { content: '\eb85'; }
.codicon-list-tree:before { content: '\eb86'; }
.codicon-debug-breakpoint-function-unverified:before { content: '\eb87'; }
.codicon-debug-breakpoint-function:before { content: '\eb88'; }
.codicon-debug-breakpoint-function-disabled:before { content: '\eb88'; }
.codicon-debug-stackframe-active:before { content: '\eb89'; }
.codicon-circle-small-filled:before { content: '\eb8a'; }
.codicon-debug-stackframe-dot:before { content: '\eb8a'; }
.codicon-terminal-decoration-mark:before { content: '\eb8a'; }
.codicon-debug-stackframe:before { content: '\eb8b'; }
.codicon-debug-stackframe-focused:before { content: '\eb8b'; }
.codicon-debug-breakpoint-unsupported:before { content: '\eb8c'; }
.codicon-symbol-string:before { content: '\eb8d'; }
.codicon-debug-reverse-continue:before { content: '\eb8e'; }
.codicon-debug-step-back:before { content: '\eb8f'; }
.codicon-debug-restart-frame:before { content: '\eb90'; }
.codicon-debug-alt:before { content: '\eb91'; }
.codicon-call-incoming:before { content: '\eb92'; }
.codicon-call-outgoing:before { content: '\eb93'; }
.codicon-menu:before { content: '\eb94'; }
.codicon-expand-all:before { content: '\eb95'; }
.codicon-feedback:before { content: '\eb96'; }
.codicon-git-pull-request-reviewer:before { content: '\eb96'; }
.codicon-group-by-ref-type:before { content: '\eb97'; }
.codicon-ungroup-by-ref-type:before { content: '\eb98'; }
.codicon-account:before { content: '\eb99'; }
.codicon-git-pull-request-assignee:before { content: '\eb99'; }
.codicon-bell-dot:before { content: '\eb9a'; }
.codicon-debug-console:before { content: '\eb9b'; }
.codicon-library:before { content: '\eb9c'; }
.codicon-output:before { content: '\eb9d'; }
.codicon-run-all:before { content: '\eb9e'; }
.codicon-sync-ignored:before { content: '\eb9f'; }
.codicon-pinned:before { content: '\eba0'; }
.codicon-github-inverted:before { content: '\eba1'; }
.codicon-server-process:before { content: '\eba2'; }
.codicon-server-environment:before { content: '\eba3'; }
.codicon-pass:before { content: '\eba4'; }
.codicon-issue-closed:before { content: '\eba4'; }
.codicon-stop-circle:before { content: '\eba5'; }
.codicon-play-circle:before { content: '\eba6'; }
.codicon-record:before { content: '\eba7'; }
.codicon-debug-alt-small:before { content: '\eba8'; }
.codicon-vm-connect:before { content: '\eba9'; }
.codicon-cloud:before { content: '\ebaa'; }
.codicon-merge:before { content: '\ebab'; }
.codicon-export:before { content: '\ebac'; }
.codicon-graph-left:before { content: '\ebad'; }
.codicon-magnet:before { content: '\ebae'; }
.codicon-notebook:before { content: '\ebaf'; }
.codicon-redo:before { content: '\ebb0'; }
.codicon-check-all:before { content: '\ebb1'; }
.codicon-pinned-dirty:before { content: '\ebb2'; }
.codicon-pass-filled:before { content: '\ebb3'; }
.codicon-circle-large-filled:before { content: '\ebb4'; }
.codicon-circle-large:before { content: '\ebb5'; }
.codicon-circle-large-outline:before { content: '\ebb5'; }
.codicon-combine:before { content: '\ebb6'; }
.codicon-gather:before { content: '\ebb6'; }
.codicon-table:before { content: '\ebb7'; }
.codicon-variable-group:before { content: '\ebb8'; }
.codicon-type-hierarchy:before { content: '\ebb9'; }
.codicon-type-hierarchy-sub:before { content: '\ebba'; }
.codicon-type-hierarchy-super:before { content: '\ebbb'; }
.codicon-git-pull-request-create:before { content: '\ebbc'; }
.codicon-run-above:before { content: '\ebbd'; }
.codicon-run-below:before { content: '\ebbe'; }
.codicon-notebook-template:before { content: '\ebbf'; }
.codicon-debug-rerun:before { content: '\ebc0'; }
.codicon-workspace-trusted:before { content: '\ebc1'; }
.codicon-workspace-untrusted:before { content: '\ebc2'; }
.codicon-workspace-unknown:before { content: '\ebc3'; }
.codicon-terminal-cmd:before { content: '\ebc4'; }
.codicon-terminal-debian:before { content: '\ebc5'; }
.codicon-terminal-linux:before { content: '\ebc6'; }
.codicon-terminal-powershell:before { content: '\ebc7'; }
.codicon-terminal-tmux:before { content: '\ebc8'; }
.codicon-terminal-ubuntu:before { content: '\ebc9'; }
.codicon-terminal-bash:before { content: '\ebca'; }
.codicon-arrow-swap:before { content: '\ebcb'; }
.codicon-copy:before { content: '\ebcc'; }
.codicon-person-add:before { content: '\ebcd'; }
.codicon-filter-filled:before { content: '\ebce'; }
.codicon-wand:before { content: '\ebcf'; }
.codicon-debug-line-by-line:before { content: '\ebd0'; }
.codicon-inspect:before { content: '\ebd1'; }
.codicon-layers:before { content: '\ebd2'; }
.codicon-layers-dot:before { content: '\ebd3'; }
.codicon-layers-active:before { content: '\ebd4'; }
.codicon-compass:before { content: '\ebd5'; }
.codicon-compass-dot:before { content: '\ebd6'; }
.codicon-compass-active:before { content: '\ebd7'; }
.codicon-azure:before { content: '\ebd8'; }
.codicon-issue-draft:before { content: '\ebd9'; }
.codicon-git-pull-request-closed:before { content: '\ebda'; }
.codicon-git-pull-request-draft:before { content: '\ebdb'; }
.codicon-debug-all:before { content: '\ebdc'; }
.codicon-debug-coverage:before { content: '\ebdd'; }
.codicon-run-errors:before { content: '\ebde'; }
.codicon-folder-library:before { content: '\ebdf'; }
.codicon-debug-continue-small:before { content: '\ebe0'; }
.codicon-beaker-stop:before { content: '\ebe1'; }
.codicon-graph-line:before { content: '\ebe2'; }
.codicon-graph-scatter:before { content: '\ebe3'; }
.codicon-pie-chart:before { content: '\ebe4'; }
.codicon-bracket:before { content: '\eb0f'; }
.codicon-bracket-dot:before { content: '\ebe5'; }
.codicon-bracket-error:before { content: '\ebe6'; }
.codicon-lock-small:before { content: '\ebe7'; }
.codicon-azure-devops:before { content: '\ebe8'; }
.codicon-verified-filled:before { content: '\ebe9'; }
.codicon-newline:before { content: '\ebea'; }
.codicon-layout:before { content: '\ebeb'; }
.codicon-layout-activitybar-left:before { content: '\ebec'; }
.codicon-layout-activitybar-right:before { content: '\ebed'; }
.codicon-layout-panel-left:before { content: '\ebee'; }
.codicon-layout-panel-center:before { content: '\ebef'; }
.codicon-layout-panel-justify:before { content: '\ebf0'; }
.codicon-layout-panel-right:before { content: '\ebf1'; }
.codicon-layout-panel:before { content: '\ebf2'; }
.codicon-layout-sidebar-left:before { content: '\ebf3'; }
.codicon-layout-sidebar-right:before { content: '\ebf4'; }
.codicon-layout-statusbar:before { content: '\ebf5'; }
.codicon-layout-menubar:before { content: '\ebf6'; }
.codicon-layout-centered:before { content: '\ebf7'; }
.codicon-target:before { content: '\ebf8'; }
.codicon-indent:before { content: '\ebf9'; }
.codicon-record-small:before { content: '\ebfa'; }
.codicon-error-small:before { content: '\ebfb'; }
.codicon-terminal-decoration-error:before { content: '\ebfb'; }
.codicon-arrow-circle-down:before { content: '\ebfc'; }
.codicon-arrow-circle-left:before { content: '\ebfd'; }
.codicon-arrow-circle-right:before { content: '\ebfe'; }
.codicon-arrow-circle-up:before { content: '\ebff'; }
.codicon-layout-sidebar-right-off:before { content: '\ec00'; }
.codicon-layout-panel-off:before { content: '\ec01'; }
.codicon-layout-sidebar-left-off:before { content: '\ec02'; }
.codicon-blank:before { content: '\ec03'; }
.codicon-heart-filled:before { content: '\ec04'; }
.codicon-map:before { content: '\ec05'; }
.codicon-map-horizontal:before { content: '\ec05'; }
.codicon-fold-horizontal:before { content: '\ec05'; }
.codicon-map-filled:before { content: '\ec06'; }
.codicon-map-horizontal-filled:before { content: '\ec06'; }
.codicon-fold-horizontal-filled:before { content: '\ec06'; }
.codicon-circle-small:before { content: '\ec07'; }
.codicon-bell-slash:before { content: '\ec08'; }
.codicon-bell-slash-dot:before { content: '\ec09'; }
.codicon-comment-unresolved:before { content: '\ec0a'; }
.codicon-git-pull-request-go-to-changes:before { content: '\ec0b'; }
.codicon-git-pull-request-new-changes:before { content: '\ec0c'; }
.codicon-search-fuzzy:before { content: '\ec0d'; }
.codicon-comment-draft:before { content: '\ec0e'; }
.codicon-send:before { content: '\ec0f'; }
.codicon-sparkle:before { content: '\ec10'; }
.codicon-insert:before { content: '\ec11'; }
.codicon-mic:before { content: '\ec12'; }
.codicon-thumbsdown-filled:before { content: '\ec13'; }
.codicon-thumbsup-filled:before { content: '\ec14'; }
.codicon-coffee:before { content: '\ec15'; }
.codicon-snake:before { content: '\ec16'; }
.codicon-game:before { content: '\ec17'; }
.codicon-vr:before { content: '\ec18'; }
.codicon-chip:before { content: '\ec19'; }
.codicon-piano:before { content: '\ec1a'; }
.codicon-music:before { content: '\ec1b'; }
.codicon-mic-filled:before { content: '\ec1c'; }
.codicon-repo-fetch:before { content: '\ec1d'; }
.codicon-copilot:before { content: '\ec1e'; }
.codicon-lightbulb-sparkle:before { content: '\ec1f'; }
.codicon-robot:before { content: '\ec20'; }
.codicon-sparkle-filled:before { content: '\ec21'; }
.codicon-diff-single:before { content: '\ec22'; }
.codicon-diff-multiple:before { content: '\ec23'; }
.codicon-surround-with:before { content: '\ec24'; }
.codicon-share:before { content: '\ec25'; }
.codicon-git-stash:before { content: '\ec26'; }
.codicon-git-stash-apply:before { content: '\ec27'; }
.codicon-git-stash-pop:before { content: '\ec28'; }
.codicon-vscode:before { content: '\ec29'; }
.codicon-vscode-insiders:before { content: '\ec2a'; }
.codicon-code-oss:before { content: '\ec2b'; }
.codicon-run-coverage:before { content: '\ec2c'; }
.codicon-run-all-coverage:before { content: '\ec2d'; }
.codicon-coverage:before { content: '\ec2e'; }
.codicon-github-project:before { content: '\ec2f'; }
.codicon-map-vertical:before { content: '\ec30'; }
.codicon-fold-vertical:before { content: '\ec30'; }
.codicon-map-vertical-filled:before { content: '\ec31'; }
.codicon-fold-vertical-filled:before { content: '\ec31'; }
.codicon-dialog-error:before { content: '\ea87'; }
.codicon-dialog-warning:before { content: '\ea6c'; }
.codicon-dialog-info:before { content: '\ea74'; }
.codicon-dialog-close:before { content: '\ea76'; }
.codicon-tree-item-expanded:before { content: '\eab4'; }
.codicon-tree-filter-on-type-on:before { content: '\eb83'; }
.codicon-tree-filter-on-type-off:before { content: '\eb85'; }
.codicon-tree-filter-clear:before { content: '\ea76'; }
.codicon-tree-item-loading:before { content: '\eb19'; }
.codicon-menu-selection:before { content: '\eab2'; }
.codicon-menu-submenu:before { content: '\eab6'; }
.codicon-menubar-more:before { content: '\ea7c'; }
.codicon-scrollbar-button-left:before { content: '\eb6f'; }
.codicon-scrollbar-button-right:before { content: '\eb70'; }
.codicon-scrollbar-button-up:before { content: '\eb71'; }
.codicon-scrollbar-button-down:before { content: '\eb6e'; }
.codicon-toolbar-more:before { content: '\ea7c'; }
.codicon-quick-input-back:before { content: '\ea9b'; }
.codicon-drop-down-button:before { content: '\eab4'; }
.codicon-symbol-customcolor:before { content: '\eb5c'; }
.codicon-workspace-unspecified:before { content: '\ebc3'; }
.codicon-git-fetch:before { content: '\ec1d'; }
.codicon-lightbulb-sparkle-autofix:before { content: '\ec1f'; }
.codicon-debug-breakpoint-pending:before { content: '\ebd9'; }
.codicon-widget-close:before { content: '\ea76'; }
.codicon-goto-previous-location:before { content: '\eaa1'; }
.codicon-goto-next-location:before { content: '\ea9a'; }
.codicon-diff-review-insert:before { content: '\ea60'; }
.codicon-diff-review-remove:before { content: '\eb3b'; }
.codicon-diff-review-close:before { content: '\ea76'; }
.codicon-parameter-hints-next:before { content: '\eab4'; }
.codicon-parameter-hints-previous:before { content: '\eab7'; }
.codicon-suggest-more-info:before { content: '\eab6'; }
.codicon-inline-suggestion-hints-next:before { content: '\eab6'; }
.codicon-inline-suggestion-hints-previous:before { content: '\eab5'; }
.codicon-diff-insert:before { content: '\ea60'; }
.codicon-diff-remove:before { content: '\eb3b'; }
.codicon-find-selection:before { content: '\eb85'; }
.codicon-find-collapsed:before { content: '\eab6'; }
.codicon-find-expanded:before { content: '\eab4'; }
.codicon-find-replace:before { content: '\eb3d'; }
.codicon-find-replace-all:before { content: '\eb3c'; }
.codicon-find-previous-match:before { content: '\eaa1'; }
.codicon-find-next-match:before { content: '\ea9a'; }
.codicon-folding-expanded:before { content: '\eab4'; }
.codicon-folding-collapsed:before { content: '\eab6'; }
.codicon-folding-manual-collapsed:before { content: '\eab6'; }
.codicon-folding-manual-expanded:before { content: '\eab4'; }
.codicon-marker-navigation-next:before { content: '\ea9a'; }
.codicon-marker-navigation-previous:before { content: '\eaa1'; }
.codicon-extensions-warning-message:before { content: '\ea6c'; }
.monaco-workbench .workbench-hover .hover-row:not(:first-child):not(:empty) { border-top: 1px solid rgba(200, 200, 200, 0.5); }
.monaco-workbench .workbench-hover hr { border-top: 1px solid rgba(200, 200, 200, 0.5); }
.monaco-editor .inputarea.ime-input { background-color: #fffffe; }
.monaco-editor .view-overlays .current-line-exact { border: 2px solid #eeeeee; }
.monaco-editor .margin-view-overlays .current-line-exact-margin { border: 2px solid #eeeeee; }
.monaco-editor .bracket-indent-guide.lvl-0 { --guide-color: rgba(4, 49, 250, 0.3); --guide-color-active: #0431fa; }
.monaco-editor .bracket-indent-guide.lvl-1 { --guide-color: rgba(49, 147, 49, 0.3); --guide-color-active: #319331; }
.monaco-editor .bracket-indent-guide.lvl-2 { --guide-color: rgba(123, 56, 20, 0.3); --guide-color-active: #7b3814; }
.monaco-editor .bracket-indent-guide.lvl-3 { --guide-color: rgba(4, 49, 250, 0.3); --guide-color-active: #0431fa; }
.monaco-editor .bracket-indent-guide.lvl-4 { --guide-color: rgba(49, 147, 49, 0.3); --guide-color-active: #319331; }
.monaco-editor .bracket-indent-guide.lvl-5 { --guide-color: rgba(123, 56, 20, 0.3); --guide-color-active: #7b3814; }
.monaco-editor .bracket-indent-guide.lvl-6 { --guide-color: rgba(4, 49, 250, 0.3); --guide-color-active: #0431fa; }
.monaco-editor .bracket-indent-guide.lvl-7 { --guide-color: rgba(49, 147, 49, 0.3); --guide-color-active: #319331; }
.monaco-editor .bracket-indent-guide.lvl-8 { --guide-color: rgba(123, 56, 20, 0.3); --guide-color-active: #7b3814; }
.monaco-editor .bracket-indent-guide.lvl-9 { --guide-color: rgba(4, 49, 250, 0.3); --guide-color-active: #0431fa; }
.monaco-editor .bracket-indent-guide.lvl-10 { --guide-color: rgba(49, 147, 49, 0.3); --guide-color-active: #319331; }
.monaco-editor .bracket-indent-guide.lvl-11 { --guide-color: rgba(123, 56, 20, 0.3); --guide-color-active: #7b3814; }
.monaco-editor .bracket-indent-guide.lvl-12 { --guide-color: rgba(4, 49, 250, 0.3); --guide-color-active: #0431fa; }
.monaco-editor .bracket-indent-guide.lvl-13 { --guide-color: rgba(49, 147, 49, 0.3); --guide-color-active: #319331; }
.monaco-editor .bracket-indent-guide.lvl-14 { --guide-color: rgba(123, 56, 20, 0.3); --guide-color-active: #7b3814; }
.monaco-editor .bracket-indent-guide.lvl-15 { --guide-color: rgba(4, 49, 250, 0.3); --guide-color-active: #0431fa; }
.monaco-editor .bracket-indent-guide.lvl-16 { --guide-color: rgba(49, 147, 49, 0.3); --guide-color-active: #319331; }
.monaco-editor .bracket-indent-guide.lvl-17 { --guide-color: rgba(123, 56, 20, 0.3); --guide-color-active: #7b3814; }
.monaco-editor .bracket-indent-guide.lvl-18 { --guide-color: rgba(4, 49, 250, 0.3); --guide-color-active: #0431fa; }
.monaco-editor .bracket-indent-guide.lvl-19 { --guide-color: rgba(49, 147, 49, 0.3); --guide-color-active: #319331; }
.monaco-editor .bracket-indent-guide.lvl-20 { --guide-color: rgba(123, 56, 20, 0.3); --guide-color-active: #7b3814; }
.monaco-editor .bracket-indent-guide.lvl-21 { --guide-color: rgba(4, 49, 250, 0.3); --guide-color-active: #0431fa; }
.monaco-editor .bracket-indent-guide.lvl-22 { --guide-color: rgba(49, 147, 49, 0.3); --guide-color-active: #319331; }
.monaco-editor .bracket-indent-guide.lvl-23 { --guide-color: rgba(123, 56, 20, 0.3); --guide-color-active: #7b3814; }
.monaco-editor .bracket-indent-guide.lvl-24 { --guide-color: rgba(4, 49, 250, 0.3); --guide-color-active: #0431fa; }
.monaco-editor .bracket-indent-guide.lvl-25 { --guide-color: rgba(49, 147, 49, 0.3); --guide-color-active: #319331; }
.monaco-editor .bracket-indent-guide.lvl-26 { --guide-color: rgba(123, 56, 20, 0.3); --guide-color-active: #7b3814; }
.monaco-editor .bracket-indent-guide.lvl-27 { --guide-color: rgba(4, 49, 250, 0.3); --guide-color-active: #0431fa; }
.monaco-editor .bracket-indent-guide.lvl-28 { --guide-color: rgba(49, 147, 49, 0.3); --guide-color-active: #319331; }
.monaco-editor .bracket-indent-guide.lvl-29 { --guide-color: rgba(123, 56, 20, 0.3); --guide-color-active: #7b3814; }
.monaco-editor .vertical { box-shadow: 1px 0 0 0 var(--guide-color) inset; }
.monaco-editor .horizontal-top { border-top: 1px solid var(--guide-color); }
.monaco-editor .horizontal-bottom { border-bottom: 1px solid var(--guide-color); }
.monaco-editor .vertical.indent-active { box-shadow: 1px 0 0 0 var(--guide-color-active) inset; }
.monaco-editor .horizontal-top.indent-active { border-top: 1px solid var(--guide-color-active); }
.monaco-editor .horizontal-bottom.indent-active { border-bottom: 1px solid var(--guide-color-active); }
.monaco-editor .lines-content .core-guide-indent.lvl-0 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-1 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-2 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-3 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-4 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-5 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-6 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-7 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-8 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-9 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-10 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-11 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-12 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-13 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-14 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-15 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-16 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-17 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-18 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-19 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-20 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-21 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-22 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-23 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-24 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-25 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-26 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-27 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-28 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-29 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent { box-shadow: 1px 0 0 0 var(--indent-color) inset; }
.monaco-editor .lines-content .core-guide-indent.indent-active { box-shadow: 1px 0 0 0 var(--indent-color-active) inset; }
.monaco-editor .line-numbers.dimmed-line-number { color: rgba(35, 120, 147, 0.4); }
.monaco-editor .cursors-layer .cursor { background-color: #000000; border-color: #000000; color: #ffffff; }
.monaco-editor .cursors-layer .cursor-primary { background-color: #000000; border-color: #000000; color: #ffffff; }
.monaco-editor .cursors-layer .cursor-secondary { background-color: #000000; border-color: #000000; color: #ffffff; }
.monaco-editor .unexpected-closing-bracket { color: rgba(255, 18, 18, 0.8); }
.monaco-editor .bracket-highlighting-0 { color: #0431fa; }
.monaco-editor .bracket-highlighting-1 { color: #319331; }
.monaco-editor .bracket-highlighting-2 { color: #7b3814; }
.monaco-editor .bracket-highlighting-3 { color: #0431fa; }
.monaco-editor .bracket-highlighting-4 { color: #319331; }
.monaco-editor .bracket-highlighting-5 { color: #7b3814; }
.monaco-editor .bracket-highlighting-6 { color: #0431fa; }
.monaco-editor .bracket-highlighting-7 { color: #319331; }
.monaco-editor .bracket-highlighting-8 { color: #7b3814; }
.monaco-editor .bracket-highlighting-9 { color: #0431fa; }
.monaco-editor .bracket-highlighting-10 { color: #319331; }
.monaco-editor .bracket-highlighting-11 { color: #7b3814; }
.monaco-editor .bracket-highlighting-12 { color: #0431fa; }
.monaco-editor .bracket-highlighting-13 { color: #319331; }
.monaco-editor .bracket-highlighting-14 { color: #7b3814; }
.monaco-editor .bracket-highlighting-15 { color: #0431fa; }
.monaco-editor .bracket-highlighting-16 { color: #319331; }
.monaco-editor .bracket-highlighting-17 { color: #7b3814; }
.monaco-editor .bracket-highlighting-18 { color: #0431fa; }
.monaco-editor .bracket-highlighting-19 { color: #319331; }
.monaco-editor .bracket-highlighting-20 { color: #7b3814; }
.monaco-editor .bracket-highlighting-21 { color: #0431fa; }
.monaco-editor .bracket-highlighting-22 { color: #319331; }
.monaco-editor .bracket-highlighting-23 { color: #7b3814; }
.monaco-editor .bracket-highlighting-24 { color: #0431fa; }
.monaco-editor .bracket-highlighting-25 { color: #319331; }
.monaco-editor .bracket-highlighting-26 { color: #7b3814; }
.monaco-editor .bracket-highlighting-27 { color: #0431fa; }
.monaco-editor .bracket-highlighting-28 { color: #319331; }
.monaco-editor .bracket-highlighting-29 { color: #7b3814; }
.monaco-editor .squiggly-error { background: url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%206%203'%20enable-background%3D'new%200%200%206%203'%20height%3D'3'%20width%3D'6'%3E%3Cg%20fill%3D'%23e51400'%3E%3Cpolygon%20points%3D'5.5%2C0%202.5%2C3%201.1%2C3%204.1%2C0'%2F%3E%3Cpolygon%20points%3D'4%2C0%206%2C2%206%2C0.6%205.4%2C0'%2F%3E%3Cpolygon%20points%3D'0%2C2%201%2C3%202.4%2C3%200%2C0.6'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") repeat-x bottom left; }
.monaco-editor .squiggly-warning { background: url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%206%203'%20enable-background%3D'new%200%200%206%203'%20height%3D'3'%20width%3D'6'%3E%3Cg%20fill%3D'%23bf8803'%3E%3Cpolygon%20points%3D'5.5%2C0%202.5%2C3%201.1%2C3%204.1%2C0'%2F%3E%3Cpolygon%20points%3D'4%2C0%206%2C2%206%2C0.6%205.4%2C0'%2F%3E%3Cpolygon%20points%3D'0%2C2%201%2C3%202.4%2C3%200%2C0.6'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") repeat-x bottom left; }
.monaco-editor .squiggly-info { background: url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%206%203'%20enable-background%3D'new%200%200%206%203'%20height%3D'3'%20width%3D'6'%3E%3Cg%20fill%3D'%231a85ff'%3E%3Cpolygon%20points%3D'5.5%2C0%202.5%2C3%201.1%2C3%204.1%2C0'%2F%3E%3Cpolygon%20points%3D'4%2C0%206%2C2%206%2C0.6%205.4%2C0'%2F%3E%3Cpolygon%20points%3D'0%2C2%201%2C3%202.4%2C3%200%2C0.6'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") repeat-x bottom left; }
.monaco-editor .squiggly-hint { background: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%223%22%20width%3D%2212%22%3E%3Cg%20fill%3D%22%236c6c6c%22%3E%3Ccircle%20cx%3D%221%22%20cy%3D%221%22%20r%3D%221%22%2F%3E%3Ccircle%20cx%3D%225%22%20cy%3D%221%22%20r%3D%221%22%2F%3E%3Ccircle%20cx%3D%229%22%20cy%3D%221%22%20r%3D%221%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") no-repeat bottom left; }
.monaco-editor.showUnused .squiggly-inline-unnecessary { opacity: 0.467; }
.monaco-editor .quickfix-edit-highlight { background-color: rgba(234, 92, 0, 0.33); }
.monaco-editor .selectionHighlight { background-color: rgba(173, 214, 255, 0.15); }
.monaco-editor .monaco-hover .hover-row:not(:first-child):not(:empty) { border-top: 1px solid rgba(200, 200, 200, 0.5); }
.monaco-editor .monaco-hover hr { border-top: 1px solid rgba(200, 200, 200, 0.5); }
.monaco-editor .monaco-hover hr { border-bottom: 0px solid rgba(200, 200, 200, 0.5); }
.monaco-editor, .monaco-diff-editor, .monaco-component { --vscode-foreground: #616161;
--vscode-disabledForeground: rgba(97, 97, 97, 0.5);
--vscode-errorForeground: #a1260d;
--vscode-descriptionForeground: #717171;
--vscode-icon-foreground: #424242;
--vscode-focusBorder: #0090f1;
--vscode-textLink-foreground: #006ab1;
--vscode-textLink-activeForeground: #006ab1;
--vscode-textSeparator-foreground: rgba(0, 0, 0, 0.18);
--vscode-textPreformat-foreground: #a31515;
--vscode-textPreformat-background: rgba(0, 0, 0, 0.1);
--vscode-textBlockQuote-background: #f2f2f2;
--vscode-textBlockQuote-border: rgba(0, 122, 204, 0.5);
--vscode-textCodeBlock-background: rgba(220, 220, 220, 0.4);
--vscode-sash-hoverBorder: #0090f1;
--vscode-badge-background: #c4c4c4;
--vscode-badge-foreground: #333333;
--vscode-scrollbar-shadow: #dddddd;
--vscode-scrollbarSlider-background: rgba(100, 100, 100, 0.4);
--vscode-scrollbarSlider-hoverBackground: rgba(100, 100, 100, 0.7);
--vscode-scrollbarSlider-activeBackground: rgba(0, 0, 0, 0.6);
--vscode-progressBar-background: #0e70c0;
--vscode-editor-background: #fffffe;
--vscode-editor-foreground: #000000;
--vscode-editorStickyScroll-background: #fffffe;
--vscode-editorStickyScrollHover-background: #f0f0f0;
--vscode-editorStickyScroll-shadow: #dddddd;
--vscode-editorWidget-background: #f3f3f3;
--vscode-editorWidget-foreground: #616161;
--vscode-editorWidget-border: #c8c8c8;
--vscode-editorError-foreground: #e51400;
--vscode-editorWarning-foreground: #bf8803;
--vscode-editorInfo-foreground: #1a85ff;
--vscode-editorHint-foreground: #6c6c6c;
--vscode-editorLink-activeForeground: #0000ff;
--vscode-editor-selectionBackground: #add6ff;
--vscode-editor-inactiveSelectionBackground: #e5ebf1;
--vscode-editor-selectionHighlightBackground: rgba(173, 214, 255, 0.3);
--vscode-editor-findMatchBackground: #a8ac94;
--vscode-editor-findMatchHighlightBackground: rgba(234, 92, 0, 0.33);
--vscode-editor-findRangeHighlightBackground: rgba(180, 180, 180, 0.3);
--vscode-editor-hoverHighlightBackground: rgba(173, 214, 255, 0.15);
--vscode-editorHoverWidget-background: #f3f3f3;
--vscode-editorHoverWidget-foreground: #616161;
--vscode-editorHoverWidget-border: #c8c8c8;
--vscode-editorHoverWidget-statusBarBackground: #e7e7e7;
--vscode-editorInlayHint-foreground: #969696;
--vscode-editorInlayHint-background: rgba(196, 196, 196, 0.1);
--vscode-editorInlayHint-typeForeground: #969696;
--vscode-editorInlayHint-typeBackground: rgba(196, 196, 196, 0.1);
--vscode-editorInlayHint-parameterForeground: #969696;
--vscode-editorInlayHint-parameterBackground: rgba(196, 196, 196, 0.1);
--vscode-editorLightBulb-foreground: #ddb100;
--vscode-editorLightBulbAutoFix-foreground: #007acc;
--vscode-editorLightBulbAi-foreground: #ddb100;
--vscode-editor-snippetTabstopHighlightBackground: rgba(10, 50, 100, 0.2);
--vscode-editor-snippetFinalTabstopHighlightBorder: rgba(10, 50, 100, 0.5);
--vscode-diffEditor-insertedTextBackground: rgba(156, 204, 44, 0.25);
--vscode-diffEditor-removedTextBackground: rgba(255, 0, 0, 0.2);
--vscode-diffEditor-insertedLineBackground: rgba(155, 185, 85, 0.2);
--vscode-diffEditor-removedLineBackground: rgba(255, 0, 0, 0.2);
--vscode-diffEditor-diagonalFill: rgba(34, 34, 34, 0.2);
--vscode-diffEditor-unchangedRegionForeground: #616161;
--vscode-diffEditor-unchangedCodeBackground: rgba(184, 184, 184, 0.16);
--vscode-widget-shadow: rgba(0, 0, 0, 0.16);
--vscode-toolbar-hoverBackground: rgba(184, 184, 184, 0.31);
--vscode-toolbar-activeBackground: rgba(166, 166, 166, 0.31);
--vscode-breadcrumb-foreground: rgba(97, 97, 97, 0.8);
--vscode-breadcrumb-background: #fffffe;
--vscode-breadcrumb-focusForeground: #4e4e4e;
--vscode-breadcrumb-activeSelectionForeground: #4e4e4e;
--vscode-breadcrumbPicker-background: #f3f3f3;
--vscode-merge-currentHeaderBackground: rgba(64, 200, 174, 0.5);
--vscode-merge-currentContentBackground: rgba(64, 200, 174, 0.2);
--vscode-merge-incomingHeaderBackground: rgba(64, 166, 255, 0.5);
--vscode-merge-incomingContentBackground: rgba(64, 166, 255, 0.2);
--vscode-merge-commonHeaderBackground: rgba(96, 96, 96, 0.4);
--vscode-merge-commonContentBackground: rgba(96, 96, 96, 0.16);
--vscode-editorOverviewRuler-currentContentForeground: rgba(64, 200, 174, 0.5);
--vscode-editorOverviewRuler-incomingContentForeground: rgba(64, 166, 255, 0.5);
--vscode-editorOverviewRuler-commonContentForeground: rgba(96, 96, 96, 0.4);
--vscode-editorOverviewRuler-findMatchForeground: rgba(209, 134, 22, 0.49);
--vscode-editorOverviewRuler-selectionHighlightForeground: rgba(160, 160, 160, 0.8);
--vscode-problemsErrorIcon-foreground: #e51400;
--vscode-problemsWarningIcon-foreground: #bf8803;
--vscode-problemsInfoIcon-foreground: #1a85ff;
--vscode-input-background: #ffffff;
--vscode-input-foreground: #616161;
--vscode-inputOption-activeBorder: #007acc;
--vscode-inputOption-hoverBackground: rgba(184, 184, 184, 0.31);
--vscode-inputOption-activeBackground: rgba(0, 144, 241, 0.2);
--vscode-inputOption-activeForeground: #000000;
--vscode-input-placeholderForeground: rgba(97, 97, 97, 0.5);
--vscode-inputValidation-infoBackground: #d6ecf2;
--vscode-inputValidation-infoBorder: #007acc;
--vscode-inputValidation-warningBackground: #f6f5d2;
--vscode-inputValidation-warningBorder: #b89500;
--vscode-inputValidation-errorBackground: #f2dede;
--vscode-inputValidation-errorBorder: #be1100;
--vscode-dropdown-background: #ffffff;
--vscode-dropdown-foreground: #616161;
--vscode-dropdown-border: #cecece;
--vscode-button-foreground: #ffffff;
--vscode-button-separator: rgba(255, 255, 255, 0.4);
--vscode-button-background: #007acc;
--vscode-button-hoverBackground: #0062a3;
--vscode-button-secondaryForeground: #ffffff;
--vscode-button-secondaryBackground: #5f6a79;
--vscode-button-secondaryHoverBackground: #4c5561;
--vscode-checkbox-background: #ffffff;
--vscode-checkbox-selectBackground: #f3f3f3;
--vscode-checkbox-foreground: #616161;
--vscode-checkbox-border: #cecece;
--vscode-checkbox-selectBorder: #424242;
--vscode-keybindingLabel-background: rgba(221, 221, 221, 0.4);
--vscode-keybindingLabel-foreground: #555555;
--vscode-keybindingLabel-border: rgba(204, 204, 204, 0.4);
--vscode-keybindingLabel-bottomBorder: rgba(187, 187, 187, 0.4);
--vscode-list-focusOutline: #0090f1;
--vscode-list-activeSelectionBackground: #0060c0;
--vscode-list-activeSelectionForeground: #ffffff;
--vscode-list-inactiveSelectionBackground: #e4e6f1;
--vscode-list-hoverBackground: #f0f0f0;
--vscode-list-dropBackground: #d6ebff;
--vscode-list-dropBetweenBackground: #424242;
--vscode-list-highlightForeground: #0066bf;
--vscode-list-focusHighlightForeground: #bbe7ff;
--vscode-list-invalidItemForeground: #b89500;
--vscode-list-errorForeground: #b01011;
--vscode-list-warningForeground: #855f00;
--vscode-listFilterWidget-background: #f3f3f3;
--vscode-listFilterWidget-outline: rgba(0, 0, 0, 0);
--vscode-listFilterWidget-noMatchesOutline: #be1100;
--vscode-listFilterWidget-shadow: rgba(0, 0, 0, 0.16);
--vscode-list-filterMatchBackground: rgba(234, 92, 0, 0.33);
--vscode-list-deemphasizedForeground: #8e8e90;
--vscode-tree-indentGuidesStroke: #a9a9a9;
--vscode-tree-inactiveIndentGuidesStroke: rgba(169, 169, 169, 0.4);
--vscode-tree-tableColumnsBorder: rgba(97, 97, 97, 0.13);
--vscode-tree-tableOddRowsBackground: rgba(97, 97, 97, 0.04);
--vscode-menu-foreground: #616161;
--vscode-menu-background: #ffffff;
--vscode-menu-selectionForeground: #ffffff;
--vscode-menu-selectionBackground: #0060c0;
--vscode-menu-separatorBackground: #d4d4d4;
--vscode-minimap-findMatchHighlight: #d18616;
--vscode-minimap-selectionOccurrenceHighlight: #c9c9c9;
--vscode-minimap-selectionHighlight: #add6ff;
--vscode-minimap-infoHighlight: #1a85ff;
--vscode-minimap-warningHighlight: #bf8803;
--vscode-minimap-errorHighlight: rgba(255, 18, 18, 0.7);
--vscode-minimap-foregroundOpacity: #000000;
--vscode-minimapSlider-background: rgba(100, 100, 100, 0.2);
--vscode-minimapSlider-hoverBackground: rgba(100, 100, 100, 0.35);
--vscode-minimapSlider-activeBackground: rgba(0, 0, 0, 0.3);
--vscode-charts-foreground: #616161;
--vscode-charts-lines: rgba(97, 97, 97, 0.5);
--vscode-charts-red: #e51400;
--vscode-charts-blue: #1a85ff;
--vscode-charts-yellow: #bf8803;
--vscode-charts-orange: #d18616;
--vscode-charts-green: #388a34;
--vscode-charts-purple: #652d90;
--vscode-quickInput-background: #f3f3f3;
--vscode-quickInput-foreground: #616161;
--vscode-quickInputTitle-background: rgba(0, 0, 0, 0.06);
--vscode-pickerGroup-foreground: #0066bf;
--vscode-pickerGroup-border: #cccedb;
--vscode-quickInputList-focusForeground: #ffffff;
--vscode-quickInputList-focusBackground: #0060c0;
--vscode-search-resultsInfoForeground: #616161;
--vscode-searchEditor-findMatchBackground: rgba(234, 92, 0, 0.22);
--vscode-multiDiffEditor-border: #cccccc;
--vscode-symbolIcon-arrayForeground: #616161;
--vscode-symbolIcon-booleanForeground: #616161;
--vscode-symbolIcon-classForeground: #d67e00;
--vscode-symbolIcon-colorForeground: #616161;
--vscode-symbolIcon-constantForeground: #616161;
--vscode-symbolIcon-constructorForeground: #652d90;
--vscode-symbolIcon-enumeratorForeground: #d67e00;
--vscode-symbolIcon-enumeratorMemberForeground: #007acc;
--vscode-symbolIcon-eventForeground: #d67e00;
--vscode-symbolIcon-fieldForeground: #007acc;
--vscode-symbolIcon-fileForeground: #616161;
--vscode-symbolIcon-folderForeground: #616161;
--vscode-symbolIcon-functionForeground: #652d90;
--vscode-symbolIcon-interfaceForeground: #007acc;
--vscode-symbolIcon-keyForeground: #616161;
--vscode-symbolIcon-keywordForeground: #616161;
--vscode-symbolIcon-methodForeground: #652d90;
--vscode-symbolIcon-moduleForeground: #616161;
--vscode-symbolIcon-namespaceForeground: #616161;
--vscode-symbolIcon-nullForeground: #616161;
--vscode-symbolIcon-numberForeground: #616161;
--vscode-symbolIcon-objectForeground: #616161;
--vscode-symbolIcon-operatorForeground: #616161;
--vscode-symbolIcon-packageForeground: #616161;
--vscode-symbolIcon-propertyForeground: #616161;
--vscode-symbolIcon-referenceForeground: #616161;
--vscode-symbolIcon-snippetForeground: #616161;
--vscode-symbolIcon-stringForeground: #616161;
--vscode-symbolIcon-structForeground: #616161;
--vscode-symbolIcon-textForeground: #616161;
--vscode-symbolIcon-typeParameterForeground: #616161;
--vscode-symbolIcon-unitForeground: #616161;
--vscode-symbolIcon-variableForeground: #007acc;
--vscode-actionBar-toggledBackground: rgba(0, 144, 241, 0.2);
--vscode-editor-lineHighlightBorder: #eeeeee;
--vscode-editor-rangeHighlightBackground: rgba(253, 255, 0, 0.2);
--vscode-editor-symbolHighlightBackground: rgba(234, 92, 0, 0.33);
--vscode-editorCursor-foreground: #000000;
--vscode-editorMultiCursor-primary-foreground: #000000;
--vscode-editorMultiCursor-secondary-foreground: #000000;
--vscode-editorWhitespace-foreground: rgba(51, 51, 51, 0.2);
--vscode-editorLineNumber-foreground: #237893;
--vscode-editorIndentGuide-background: rgba(51, 51, 51, 0.2);
--vscode-editorIndentGuide-activeBackground: rgba(51, 51, 51, 0.2);
--vscode-editorIndentGuide-background1: #d3d3d3;
--vscode-editorIndentGuide-background2: rgba(0, 0, 0, 0);
--vscode-editorIndentGuide-background3: rgba(0, 0, 0, 0);
--vscode-editorIndentGuide-background4: rgba(0, 0, 0, 0);
--vscode-editorIndentGuide-background5: rgba(0, 0, 0, 0);
--vscode-editorIndentGuide-background6: rgba(0, 0, 0, 0);
--vscode-editorIndentGuide-activeBackground1: #939393;
--vscode-editorIndentGuide-activeBackground2: rgba(0, 0, 0, 0);
--vscode-editorIndentGuide-activeBackground3: rgba(0, 0, 0, 0);
--vscode-editorIndentGuide-activeBackground4: rgba(0, 0, 0, 0);
--vscode-editorIndentGuide-activeBackground5: rgba(0, 0, 0, 0);
--vscode-editorIndentGuide-activeBackground6: rgba(0, 0, 0, 0);
--vscode-editorActiveLineNumber-foreground: #0b216f;
--vscode-editorLineNumber-activeForeground: #0b216f;
--vscode-editorRuler-foreground: #d3d3d3;
--vscode-editorCodeLens-foreground: #919191;
--vscode-editorBracketMatch-background: rgba(0, 100, 0, 0.1);
--vscode-editorBracketMatch-border: #b9b9b9;
--vscode-editorOverviewRuler-border: rgba(127, 127, 127, 0.3);
--vscode-editorGutter-background: #fffffe;
--vscode-editorUnnecessaryCode-opacity: rgba(0, 0, 0, 0.47);
--vscode-editorGhostText-foreground: rgba(0, 0, 0, 0.47);
--vscode-editorOverviewRuler-rangeHighlightForeground: rgba(0, 122, 204, 0.6);
--vscode-editorOverviewRuler-errorForeground: rgba(255, 18, 18, 0.7);
--vscode-editorOverviewRuler-warningForeground: #bf8803;
--vscode-editorOverviewRuler-infoForeground: #1a85ff;
--vscode-editorBracketHighlight-foreground1: #0431fa;
--vscode-editorBracketHighlight-foreground2: #319331;
--vscode-editorBracketHighlight-foreground3: #7b3814;
--vscode-editorBracketHighlight-foreground4: rgba(0, 0, 0, 0);
--vscode-editorBracketHighlight-foreground5: rgba(0, 0, 0, 0);
--vscode-editorBracketHighlight-foreground6: rgba(0, 0, 0, 0);
--vscode-editorBracketHighlight-unexpectedBracket-foreground: rgba(255, 18, 18, 0.8);
--vscode-editorBracketPairGuide-background1: rgba(0, 0, 0, 0);
--vscode-editorBracketPairGuide-background2: rgba(0, 0, 0, 0);
--vscode-editorBracketPairGuide-background3: rgba(0, 0, 0, 0);
--vscode-editorBracketPairGuide-background4: rgba(0, 0, 0, 0);
--vscode-editorBracketPairGuide-background5: rgba(0, 0, 0, 0);
--vscode-editorBracketPairGuide-background6: rgba(0, 0, 0, 0);
--vscode-editorBracketPairGuide-activeBackground1: rgba(0, 0, 0, 0);
--vscode-editorBracketPairGuide-activeBackground2: rgba(0, 0, 0, 0);
--vscode-editorBracketPairGuide-activeBackground3: rgba(0, 0, 0, 0);
--vscode-editorBracketPairGuide-activeBackground4: rgba(0, 0, 0, 0);
--vscode-editorBracketPairGuide-activeBackground5: rgba(0, 0, 0, 0);
--vscode-editorBracketPairGuide-activeBackground6: rgba(0, 0, 0, 0);
--vscode-editorUnicodeHighlight-border: #bf8803;
--vscode-editorOverviewRuler-bracketMatchForeground: #a0a0a0;
--vscode-editor-linkedEditingBackground: rgba(255, 0, 0, 0.3);
--vscode-editor-wordHighlightBackground: rgba(87, 87, 87, 0.25);
--vscode-editor-wordHighlightStrongBackground: rgba(14, 99, 156, 0.25);
--vscode-editor-wordHighlightTextBackground: rgba(87, 87, 87, 0.25);
--vscode-editorOverviewRuler-wordHighlightForeground: rgba(160, 160, 160, 0.8);
--vscode-editorOverviewRuler-wordHighlightStrongForeground: rgba(192, 160, 192, 0.8);
--vscode-editorOverviewRuler-wordHighlightTextForeground: rgba(160, 160, 160, 0.8);
--vscode-peekViewTitle-background: #f3f3f3;
--vscode-peekViewTitleLabel-foreground: #000000;
--vscode-peekViewTitleDescription-foreground: #616161;
--vscode-peekView-border: #1a85ff;
--vscode-peekViewResult-background: #f3f3f3;
--vscode-peekViewResult-lineForeground: #646465;
--vscode-peekViewResult-fileForeground: #1e1e1e;
--vscode-peekViewResult-selectionBackground: rgba(51, 153, 255, 0.2);
--vscode-peekViewResult-selectionForeground: #6c6c6c;
--vscode-peekViewEditor-background: #f2f8fc;
--vscode-peekViewEditorGutter-background: #f2f8fc;
--vscode-peekViewEditorStickyScroll-background: #f2f8fc;
--vscode-peekViewResult-matchHighlightBackground: rgba(234, 92, 0, 0.3);
--vscode-peekViewEditor-matchHighlightBackground: rgba(245, 216, 2, 0.87);
--vscode-editorMarkerNavigationError-background: #e51400;
--vscode-editorMarkerNavigationError-headerBackground: rgba(229, 20, 0, 0.1);
--vscode-editorMarkerNavigationWarning-background: #bf8803;
--vscode-editorMarkerNavigationWarning-headerBackground: rgba(191, 136, 3, 0.1);
--vscode-editorMarkerNavigationInfo-background: #1a85ff;
--vscode-editorMarkerNavigationInfo-headerBackground: rgba(26, 133, 255, 0.1);
--vscode-editorMarkerNavigation-background: #fffffe;
--vscode-editorHoverWidget-highlightForeground: #0066bf;
--vscode-editorSuggestWidget-background: #f3f3f3;
--vscode-editorSuggestWidget-border: #c8c8c8;
--vscode-editorSuggestWidget-foreground: #000000;
--vscode-editorSuggestWidget-selectedForeground: #ffffff;
--vscode-editorSuggestWidget-selectedBackground: #0060c0;
--vscode-editorSuggestWidget-highlightForeground: #0066bf;
--vscode-editorSuggestWidget-focusHighlightForeground: #bbe7ff;
--vscode-editorSuggestWidgetStatus-foreground: rgba(0, 0, 0, 0.5);
--vscode-diffEditor-move-border: rgba(139, 139, 139, 0.61);
--vscode-diffEditor-moveActive-border: #ffa500;
--vscode-diffEditor-unchangedRegionShadow: rgba(115, 115, 115, 0.75);
--vscode-editor-foldBackground: rgba(173, 214, 255, 0.3);
--vscode-editorGutter-foldingControlForeground: #424242; }

.mtk1 { color: #000000; }
.mtk2 { color: #fffffe; }
.mtk3 { color: #808080; }
.mtk4 { color: #ff0000; }
.mtk5 { color: #0451a5; }
.mtk6 { color: #0000ff; }
.mtk7 { color: #098658; }
.mtk8 { color: #008000; }
.mtk9 { color: #dd0000; }
.mtk10 { color: #383838; }
.mtk11 { color: #cd3131; }
.mtk12 { color: #863b00; }
.mtk13 { color: #af00db; }
.mtk14 { color: #800000; }
.mtk15 { color: #e00000; }
.mtk16 { color: #3030c0; }
.mtk17 { color: #666666; }
.mtk18 { color: #778899; }
.mtk19 { color: #c700c7; }
.mtk20 { color: #a31515; }
.mtk21 { color: #4f76ac; }
.mtk22 { color: #008080; }
.mtk23 { color: #001188; }
.mtk24 { color: #4864aa; }
.mtki { font-style: italic; }
.mtkb { font-weight: bold; }
.mtku { text-decoration: underline; text-underline-position: under; }
.mtks { text-decoration: line-through; }
.mtks.mtku { text-decoration: underline line-through; text-underline-position: under; }</style><script async="async" type="text/javascript" src="https://wokwi.com/cdn/monaco-editor/0.48.0/vs/basic-languages/python/python.js"></script><link rel="stylesheet" type="text/css" href="/_next/static/css/09e0055ef19aaf46.css"></head><body class="enable-motion"><div id="__next"><div class="MuiStack-root css-zf0iqh"><header><div class="header-small_toolbar__yvrzx" role="banner"><a class="header-small_logo__fLyJP" href="/"><svg width="80" height="24" viewBox="0 0 69.532 16.413"><g fill="#fff"><path d="M4.192 15.53c-.63-.737-.765-1.863-.32-2.684.405-.748.346-1.136-.583-3.84-.937-2.73-1.116-3.05-1.935-3.455-1.916-.949-1.765-3.452.242-4 1.892-.518 3.374 1.385 2.418 3.105-.416.75-.36 1.113.593 3.865.969 2.796 1.125 3.072 1.964 3.457 1.192.548 1.62 1.883.969 3.024-.65 1.14-2.566 1.442-3.348.528zm1.912-1.003c.465-.38.426-.796-.103-1.098-.238-.136-.545-.186-.681-.111-.423.23-.407 1.014.025 1.26.226.129.567.106.76-.05zM2.612 4.17c.346-.189.224-1.077-.18-1.308-.337-.192-.995.269-.98.687.013.386.809.812 1.16.621zM11.945 15c-.63-.737-.765-1.863-.32-2.684.405-.748.346-1.136-.583-3.84-.937-2.73-1.116-3.05-1.935-3.455-1.916-.949-1.765-3.452.242-4 1.892-.518 3.374 1.385 2.418 3.105-.416.75-.36 1.113.593 3.865.969 2.796 1.125 3.072 1.964 3.457 1.192.548 1.62 1.883.969 3.024-.65 1.14-2.566 1.442-3.348.528zm1.912-1.003c.465-.38.426-.796-.103-1.098-.238-.136-.545-.186-.681-.111-.423.23-.407 1.014.025 1.26.226.129.567.106.76-.05zM10.365 3.64c.346-.189.224-1.077-.18-1.308-.337-.192-.995.269-.98.687.013.386.809.812 1.16.621z"></path><path d="M4.543 16.22c-2.027-1.187-1.3-4.185 1.015-4.185.75 0 .816-.177 1.864-1.169s2.833-2.627 4.035-3.221c.324.459.571 1.614.607 1.748-.773 0-2.75 1.515-3.588 2.537-.81.989-.985 1.4-.928 2.188.052.73-.081 1.111-.542 1.54-.779.729-1.786.958-2.463.562zm1.56-1.695c.215-.56-.025-.902-.634-.902-.594 0-.896.408-.693.938.198.516 1.125.49 1.327-.036zM13.185 12.06s.283-.565 1.392-3.717c1.44-4.077 1.509-4.406 1.096-5.263-.887-1.84.835-3.684 2.691-2.88.694.3.931.585 1.236 1.49.332.983.303 1.19-.244 1.72-.342.331-.896.716-1.232.856-.47.196-.971 1.255-2.185 4.618-1.443 3.997-1.06 2.817-.67 3.541.961 1.79-.26.492-2.084-.365zm5.066-9.85c-.006-.6-.355-.829-.922-.605-.254.101-.485.309-.512.462-.085.474.537.951 1 .768.241-.095.437-.377.434-.624z"></path><g><path d="M26.397 15.57q-2.378.363-4.232-.922-1.97-1.37-2.308-3.953-.413-3.147.978-5.985 1.557-3.15 4.441-3.59 2.774-.424 4.3.717 1.592 1.186 1.988 4.205.413 3.147-.84 5.918-1.443 3.17-4.327 3.61zm-.876-12.586q-2.066.315-3.209 2.753-1.057 2.24-.735 4.695.23 1.756 1.58 2.672 1.292.861 2.995.601 2.05-.312 3.09-2.744.928-2.173.602-4.657-.285-2.173-1.303-2.918-.971-.715-3.02-.402zM35.637.98a.872.872 0 00-.652.275.947.947 0 00-.257.671c0 1.224-.039 3.081-.102 5.354.318-.509.773-.846 1.271-.896a2.28 2.28 0 01.467 0 63.88 63.88 0 01.082-1.684c.073-1.255.11-2.18.11-2.774a.93.93 0 00-.267-.67.853.853 0 00-.652-.276zm6.825.156c-.257 0-.49.12-.698.358l-2.636 3.06a52.882 52.882 0 01-1.944 2.099c.547.32.914.88 1.074 1.479.945-.925 1.887-1.847 2.771-2.816 1.58-1.752 2.37-2.83 2.37-3.234a.898.898 0 00-.284-.67.912.912 0 00-.653-.276zm-4.208 8.307c-.12.378-.352.707-.712.92a1.978 1.978 0 01-.754.26l2.33 2.345c1.721 1.635 3.047 2.453 3.978 2.453.264 0 .475-.117.634-.35.129-.19.193-.388.193-.597 0-.447-.242-.75-.726-.91a3.81 3.81 0 01-1.13-.605l-.964-.81a106.213 106.213 0 01-2.849-2.706zm-3.69.229a210.995 210.995 0 00-.093 5.105c0 .294.085.567.257.818.208.306.487.459.836.459.532 0 .8-.303.8-.91l.007-4.509c-.606-.039-1.208-.324-1.664-.783a3.926 3.926 0 01-.143-.18zm1.333-3.288c2.338-.235 3.256 3.024 1.645 3.98-.912.54-2.076.252-2.835-.512-.473-.56-.589-.946-.47-1.564.202-1.047.88-1.826 1.66-1.904zm-.262 2.289c.156.58.552.714 1.044.355.48-.35.484-.858.007-1.167-.464-.3-1.198.267-1.051.812zM57.077 15.93c-.282 0-.53-.08-.744-.239-.245-.184-.367-.41-.367-.68-.282-.74-.46-1.344-.533-1.81-.074-.465-.316-1.784-.726-3.958-.312-1.648-.52-2.97-.625-3.969-.545 2.021-1.13 3.733-1.754 5.135-.723 1.623-1.191 2.894-1.406 3.812.074.141.11.279.11.414 0 .275-.122.502-.367.68-.22.165-.471.248-.753.248-.827 0-1.24-.371-1.24-1.112l-.285-1.167-1.001-4.5c-.398-1.52-1.078-3.697-2.04-6.532a1.225 1.225 0 01-.064-.368c0-.569.322-.854.965-.854.398 0 .704.218.918.652.11.22.334.855.67 1.902.362 1.108.723 2.443 1.085 4.005l.89 4.06c.656-1.519 1.308-3.368 1.957-5.548.399-1.33.702-2.25.91-2.765.551-1.354 1.087-2.03 1.607-2.03.43 0 .732.217.91.652.22.527.444 1.782.67 3.766.123 1.005.331 2.211.625 3.62l.79 3.61c.82-1.972 1.847-4.64 3.077-8.001.068-.184.22-.763.46-1.737.177-.716.395-1.273.652-1.671.22-.337.508-.506.863-.506.619 0 1.643.43 1.643 1.043 0 .104-.813.286-1.009.794l-.367.993-.505 1.635-2.729 6.632c-.25.729-.683 1.788-1.295 3.178-.22.41-.551.616-.992.616z"></path></g><path d="M67.427 7.01a64.95 64.95 0 00-.211 5.107c0 .43.012.959.037 1.59.024.63.036 1.16.036 1.589-.623 1.156-1.85.737-2.112-.056.165-2.14.17-1.952.165-3.003 0-1.415.086-3.182.257-5.3.955-2.293 2.369-1.893 2.369-1.893.038.758-.579 1.553-.54 1.966zM67.077.33c2.337-.235 3.256 3.024 1.645 3.98-.912.54-2.076.252-2.835-.512-.473-.56-.589-.945-.47-1.564.201-1.047.88-1.826 1.66-1.904zm-.262 2.289c.156.58.551.714 1.043.355.48-.35.484-.858.007-1.167-.463-.3-1.198.267-1.05.812z"></path></g></svg></a><div class="project-page_topButtons__E_rbw"><div role="group" class="MuiButtonGroup-root MuiButtonGroup-contained css-5kthed"><button class="MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeSmall MuiButton-containedSizeSmall Mui-disabled MuiButtonGroup-grouped MuiButtonGroup-groupedHorizontal MuiButtonGroup-groupedContained MuiButtonGroup-groupedContainedHorizontal MuiButtonGroup-groupedContainedPrimary MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeSmall MuiButton-containedSizeSmall MuiButtonGroup-grouped MuiButtonGroup-groupedHorizontal MuiButtonGroup-groupedContained MuiButtonGroup-groupedContainedHorizontal MuiButtonGroup-groupedContainedPrimary MuiButtonGroup-firstButton css-126e75q" tabindex="-1" type="button" disabled=""><span class="MuiButton-startIcon MuiButton-iconSizeSmall css-u0g51i"><svg viewBox="0 0 24 24" role="presentation" style="width: 1.5rem; height: 1.5rem;"><path d="M15,9H5V5H15M12,19A3,3 0 0,1 9,16A3,3 0 0,1 12,13A3,3 0 0,1 15,16A3,3 0 0,1 12,19M17,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V7L17,3Z" style="fill: currentcolor;"></path></svg></span><span class="MuiBox-root css-9hblc8">Save</span></button><button class="MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeSmall MuiButton-containedSizeSmall MuiButtonGroup-grouped MuiButtonGroup-groupedHorizontal MuiButtonGroup-groupedContained MuiButtonGroup-groupedContainedHorizontal MuiButtonGroup-groupedContainedPrimary MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeSmall MuiButton-containedSizeSmall MuiButtonGroup-lastButton css-1vv51b1" tabindex="0" type="button"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-vubbuv" focusable="false" aria-hidden="true" viewBox="0 0 24 24" data-testid="ArrowDropDownIcon"><path d="m7 10 5 5 5-5z"></path></svg><span class="MuiTouchRipple-root css-w0pj6f"></span></button></div><button class="MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeSmall MuiButton-containedSizeSmall MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeSmall MuiButton-containedSizeSmall project-page_button__5z1or css-9q40pm" tabindex="0" type="button"><span class="MuiButton-startIcon MuiButton-iconSizeSmall css-u0g51i"><svg viewBox="0 0 24 24" role="presentation" style="width: 1.5rem; height: 1.5rem;"><path d="M21,12L14,5V9C7,10 4,15 3,20C5.5,16.5 9,14.9 14,14.9V19L21,12Z" style="fill: currentcolor;"></path></svg></span>Share<span class="MuiTouchRipple-root css-w0pj6f"></span></button><button class="MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeLarge css-6ci2yv" tabindex="0" type="button" aria-label="Like this project"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-vubbuv" focusable="false" aria-hidden="true" viewBox="0 0 24 24" data-testid="FavoriteIcon"><path d="m12 21.35-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"></path></svg><span class="MuiTouchRipple-root css-w0pj6f"></span></button></div><div class="header-small_spacer___h_xx"></div><nav class="header-small_menu__hiyiT"><a href="https://docs.wokwi.com/?utm_source=wokwi" target="_blank">Docs</a></nav><button class="MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeSmall MuiButton-containedSizeSmall MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeSmall MuiButton-containedSizeSmall css-126e75q" tabindex="0" type="button"><span class="user-menu_altContent__kVmnu"><span class="user-menu_alt1__5Xyya">Sign in</span><span class="user-menu_alt2___1kYx">Sign up</span></span><span class="MuiTouchRipple-root css-w0pj6f"></span></button></div></header><main class="project-page_main__KMKhI"><div class="workbench-desktop_container__LDB8z"><div class="sc-kPTPQs iPTNAK SplitPane vertical workbench-desktop_splitPane__nOV1_"><div class="sc-bgqQcB cqSVCo Pane vertical workbench-desktop_splitPane__nOV1_" style="flex-basis: 400px;"><div class="sc-ewnqHT ikqMiO" style="background-color: black;"></div><div class="sc-gTRrQi bMOrrd" style="min-width: 50px;"><div class="workbench-desktop_editor__AmDGz"><div class="tabs_tabs__0p32m"><button class="tabs_tab__iUAy8 tabs_active__IguNq">main.py</button><button class="tabs_tab__iUAy8">diagram.json</button><button class="tabs_tab__iUAy8">ssd1306.py</button><button class="tabs_dropdown__6PGPX"><svg viewBox="0 0 24 24" role="presentation" style="width: 20px; height: 20px;"><path d="M7,10L12,15L17,10H7Z" style="fill: currentcolor;"></path></svg></button></div><div class="code-editor_editorContainer__hSbk1" style=""><section class="code-editor_wrapper__S_Mle" style="display: flex; position: relative; text-align: initial; width: 100%; height: 100%;"><div data-keybinding-context="1" data-mode-id="python" style="width: 100%; --vscode-editorCodeLens-lineHeight: 16px; --vscode-editorCodeLens-fontSize: 12px; --vscode-editorCodeLens-fontFeatureSettings: &quot;liga&quot; off, &quot;calt&quot; off;"><div class="monaco-editor no-user-select  showUnused showDeprecated vs focused" role="code" data-uri="vfs:main.py" style="width: 400px; height: 531px;"><div data-mprt="3" class="overflow-guard" style="width: 400px; height: 531px;"><div class="margin" role="presentation" aria-hidden="true" style="position: absolute; transform: translate3d(0px, 0px, 0px); contain: strict; top: 0px; height: 1652px; width: 85px;"><div class="glyph-margin" style="left: 0px; width: 19px; height: 1652px;"></div><div class="margin-view-zones" role="presentation" aria-hidden="true" style="position: absolute;"></div><div class="margin-view-overlays focused" role="presentation" aria-hidden="true" style="position: absolute; font-family: Consolas, &quot;Courier New&quot;, monospace; font-weight: normal; font-size: 14px; font-feature-settings: &quot;liga&quot; 0, &quot;calt&quot; 0; font-variation-settings: normal; line-height: 19px; letter-spacing: 0px; width: 85px; height: 1652px;"><div style="top:0px;height:19px;"><div class="current-line current-line-margin-both" style="width:85px"></div><div class="line-numbers active-line-number" style="left:19px;width:40px;">1</div></div><div style="top:19px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">2</div></div><div style="top:38px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">3</div></div><div style="top:57px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">4</div></div><div style="top:76px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">5</div></div><div style="top:95px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">6</div></div><div style="top:114px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">7</div></div><div style="top:133px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">8</div></div><div style="top:152px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">9</div></div><div style="top:171px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">10</div></div><div style="top:190px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">11</div></div><div style="top:209px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">12</div></div><div style="top:228px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">13</div></div><div style="top:247px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">14</div></div><div style="top:266px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">15</div></div><div style="top:285px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">16</div></div><div style="top:304px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">17</div></div><div style="top:323px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">18</div></div><div style="top:342px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">19</div></div><div style="top:361px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">20</div></div><div style="top:380px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">21</div></div><div style="top:399px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">22</div></div><div style="top:418px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">23</div></div><div style="top:437px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">24</div></div><div style="top:456px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">25</div></div><div style="top:475px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">26</div></div><div style="top:494px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">27</div></div><div style="top:513px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">28</div></div></div><div class="glyph-margin-widgets" style="position: absolute; top: 0px;"></div></div><div class="monaco-scrollable-element editor-scrollable vs" role="presentation" data-mprt="6" style="position: absolute; overflow: hidden; left: 85px; height: 531px; width: 315px;"><div class="lines-content monaco-editor-background" style="position: absolute; overflow: hidden; width: 1.67772e+07px; height: 1.67772e+07px; transform: translate3d(0px, 0px, 0px); contain: strict; top: 0px; left: 0px;"><div class="view-overlays focused" role="presentation" aria-hidden="true" style="position: absolute; font-family: Consolas, &quot;Courier New&quot;, monospace; font-weight: normal; font-size: 14px; font-feature-settings: &quot;liga&quot; 0, &quot;calt&quot; 0; font-variation-settings: normal; line-height: 19px; letter-spacing: 0px; height: 0px; width: 502px;"><div style="top:0px;height:19px;"><div class="current-line current-line-exact" style="width:502px;"></div><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:19px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:38px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:57px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:76px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:95px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:114px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:133px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:152px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:171px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:190px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:209px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:228px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:247px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:266px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:285px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:304px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:323px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:342px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:361px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:380px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:399px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:418px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:437px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:456px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:475px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:494px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:513px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div></div><div role="presentation" aria-hidden="true" class="view-rulers"></div><div class="view-zones" role="presentation" aria-hidden="true" style="position: absolute;"></div><div class="view-lines monaco-mouse-cursor-text" role="presentation" aria-hidden="true" data-mprt="8" style="position: absolute; font-family: Consolas, &quot;Courier New&quot;, monospace; font-weight: normal; font-size: 14px; font-feature-settings: &quot;liga&quot; 0, &quot;calt&quot; 0; font-variation-settings: normal; line-height: 19px; letter-spacing: 0px; width: 502px; height: 1652px;"><div style="top:0px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://github.com/Baongtvcine/Salamhucine/discuss</span><span class="mtk1 detected-link">ions/</span><span class="mtk7 detected-link">1</span></span></div><div style="top:19px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://github.com/Baongtvcine/Salamhucine/discuss</span><span class="mtk1 detected-link">ions/</span><span class="mtk7 detected-link">2</span></span></div><div style="top:38px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://github.com/Baongtvcine/Salamhucine/discuss</span><span class="mtk1 detected-link">ions/</span><span class="mtk7 detected-link">3</span></span></div><div style="top:57px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://github.com/Baongtvcine/Salamhucine/discuss</span><span class="mtk1 detected-link">ions/</span><span class="mtk7 detected-link">4</span></span></div><div style="top:76px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://github.com/Baongtvcine/Salamhucine/discuss</span><span class="mtk1 detected-link">ions/</span><span class="mtk7 detected-link">5</span></span></div><div style="top:95px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://github.com/Baongtvcine/Salamhucine/discuss</span><span class="mtk1 detected-link">ions/</span><span class="mtk7 detected-link">6</span></span></div><div style="top:114px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://github.com/Baongtvcine/Salamhucine/discuss</span><span class="mtk1 detected-link">ions/</span><span class="mtk7 detected-link">7</span></span></div><div style="top:133px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://github.com/Baongtvcine/Salamhucine/discuss</span><span class="mtk1 detected-link">ions/</span><span class="mtk7 detected-link">8</span></span></div><div style="top:152px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://github.com/Baongtvcine/Salamhucine/discuss</span><span class="mtk1 detected-link">ions/</span><span class="mtk7 detected-link">9</span></span></div><div style="top:171px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://github.com/Baongtvcine/Salamhucine/discuss</span><span class="mtk1 detected-link">ions/</span><span class="mtk7 detected-link">10</span></span></div><div style="top:190px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://github.com/Baongtvcine/Salamhucine/discuss</span><span class="mtk1 detected-link">ions/</span><span class="mtk7 detected-link">11</span></span></div><div style="top:209px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://github.com/Baongtvcine/Salamhucine/discuss</span><span class="mtk1 detected-link">ions/</span><span class="mtk7 detected-link">12</span></span></div><div style="top:228px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://github.com/Baongtvcine/Salamhucine/discuss</span><span class="mtk1 detected-link">ions/</span><span class="mtk7 detected-link">13</span></span></div><div style="top:247px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://github.com/Baongtvcine/Salamhucine/discuss</span><span class="mtk1 detected-link">ions/</span><span class="mtk7 detected-link">14</span></span></div><div style="top:266px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://github.com/Baongtvcine/Salamhucine/discuss</span><span class="mtk1 detected-link">ions/</span><span class="mtk7 detected-link">15</span></span></div><div style="top:285px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://github.com/Baongtvcine/Salamhucine/discuss</span><span class="mtk1 detected-link">ions/</span><span class="mtk7 detected-link">16</span></span></div><div style="top:304px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://github.com/Baongtvcine/Salamhucine/discuss</span><span class="mtk1 detected-link">ions/</span><span class="mtk7 detected-link">17</span></span></div><div style="top:323px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://github.com/Baongtvcine/Salamhucine/discuss</span><span class="mtk1 detected-link">ions/</span><span class="mtk7 detected-link">18</span></span></div><div style="top:342px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://github.com/Baongtvcine/Salamhucine/discuss</span><span class="mtk1 detected-link">ions/</span><span class="mtk7 detected-link">19</span></span></div><div style="top:361px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://github.com/Baongtvcine/Salamhucine/discuss</span><span class="mtk1 detected-link">ions/</span><span class="mtk7 detected-link">20</span></span></div><div style="top:380px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://github.com/Baongtvcine/Salamhucine/discuss</span><span class="mtk1 detected-link">ions/</span><span class="mtk7 detected-link">21</span></span></div><div style="top:399px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://github.com/Baongtvcine/Salamhucine/discuss</span><span class="mtk1 detected-link">ions/</span><span class="mtk7 detected-link">22</span></span></div><div style="top:418px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://github.com/Baongtvcine/Salamhucine/discuss</span><span class="mtk1 detected-link">ions/</span><span class="mtk7 detected-link">23</span></span></div><div style="top:437px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://github.com/Baongtvcine/Salamhucine/discuss</span><span class="mtk1 detected-link">ions/</span><span class="mtk7 detected-link">24</span></span></div><div style="top:456px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://github.com/Baongtvcine/Salamhucine/discuss</span><span class="mtk1 detected-link">ions/</span><span class="mtk7 detected-link">25</span></span></div><div style="top:475px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://github.com/Baongtvcine/Salamhucine/discuss</span><span class="mtk1 detected-link">ions/</span><span class="mtk7 detected-link">26</span></span></div><div style="top:494px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://github.com/Baongtvcine/Salamhucine/discuss</span><span class="mtk1 detected-link">ions/</span><span class="mtk7 detected-link">27</span></span></div><div style="top:513px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://github.com/Baongtvcine/Salamhucine/discuss</span><span class="mtk1 detected-link">ions/</span><span class="mtk7 detected-link">28</span></span></div></div><div data-mprt="1" class="contentWidgets" style="position: absolute; top: 0px;"></div><div role="presentation" aria-hidden="true" class="cursors-layer cursor-line-style cursor-solid"><div class="cursor  monaco-mouse-cursor-text " style="height: 19px; top: 0px; left: 0px; font-family: Consolas, &quot;Courier New&quot;, monospace; font-weight: normal; font-size: 14px; font-feature-settings: &quot;liga&quot; 0, &quot;calt&quot; 0; font-variation-settings: normal; line-height: 19px; letter-spacing: 0px; display: block; visibility: inherit; padding-left: 0px; width: 2px;"></div></div></div><div role="presentation" aria-hidden="true" class="invisible scrollbar horizontal fade" style="position: absolute; width: 301px; height: 12px; left: 0px; bottom: 0px;"><div class="slider" style="position: absolute; top: 0px; left: 0px; height: 12px; transform: translate3d(0px, 0px, 0px); contain: strict; width: 188px;"></div></div><canvas class="decorationsOverviewRuler" aria-hidden="true" width="14" height="531" style="position: absolute; transform: translate3d(0px, 0px, 0px); contain: strict; top: 0px; right: 0px; width: 14px; height: 531px; display: block;"></canvas><div role="presentation" aria-hidden="true" class="invisible scrollbar vertical fade" style="position: absolute; width: 14px; height: 531px; right: 0px; top: 0px;"><div class="slider" style="position: absolute; top: 0px; left: 0px; width: 14px; transform: translate3d(0px, 0px, 0px); contain: strict; height: 170px;"></div></div></div><div role="presentation" aria-hidden="true" style="width: 400px;"></div><textarea data-mprt="7" class="inputarea monaco-mouse-cursor-text" wrap="off" autocorrect="off" autocapitalize="off" autocomplete="off" spellcheck="false" aria-label="Editor content;Press Alt+F1 for Accessibility Options." aria-required="false" tabindex="0" role="textbox" aria-roledescription="editor" aria-multiline="true" aria-autocomplete="both" style="tab-size: 32px; font-family: Consolas, &quot;Courier New&quot;, monospace; font-weight: normal; font-size: 14px; font-feature-settings: &quot;liga&quot; 0, &quot;calt&quot; 0; font-variation-settings: normal; line-height: 19px; letter-spacing: 0px; top: 0px; left: 85px; width: 1px; height: 1px;"></textarea><div style="position: absolute; top: 0px; left: 0px; width: 0px; height: 0px;" class="monaco-editor-background textAreaCover margin"></div><div data-mprt="4" class="overlayWidgets" style="width: 400px;"><div class="sticky-widget" widgetid="editor.contrib.stickyScrollWidget" style="position: absolute; width: 386px; display: none;"><div class="sticky-widget-line-numbers" role="none" style="width: 85px;"></div><div class="sticky-widget-lines-scrollable" style="--vscode-editorStickyScroll-scrollableWidth: 488px;"><div class="sticky-widget-lines" role="list" style="left: 0px;"></div></div></div></div><div data-mprt="9" class="minimap slider-mouseover" role="presentation" aria-hidden="true" style="position: absolute; left: 0px; width: 0px; height: 531px;"><div class="minimap-shadow-hidden" style="height: 531px;"></div><canvas width="0" height="531" style="position: absolute; left: 0px; width: 0px; height: 531px;"></canvas><canvas class="minimap-decorations-layer" width="0" height="531" style="position: absolute; left: 0px; width: 0px; height: 531px;"></canvas><div class="minimap-slider" style="position: absolute; transform: translate3d(0px, 0px, 0px); contain: strict; width: 0px;"><div class="minimap-slider-horizontal" style="position: absolute; width: 0px; height: 0px;"></div></div></div><div role="presentation" aria-hidden="true" class="blockDecorations-container"></div></div><div data-mprt="2" class="overflowingContentWidgets"></div><div data-mprt="5" class="overflowingOverlayWidgets"></div></div><div class="context-view" aria-hidden="true" style="display: none;"></div></div></section></div></div></div></div><div style="position: relative;"><div role="presentation" class="sc-iVCKna jILvIB Resizer vertical workbench-desktop_splitPane__nOV1_" style="width: 1rem;"><div class="sc-dicizt knbFHj"><div></div><div class="sc-fFGjHI gbpnKg" style="transform: scale(0); visibility: hidden; flex: 0 0 0px; position: relative;"><button>➡</button></div><div></div></div></div><div class="sc-gxYJeL NntKf" style="opacity: 1; width: 1px; background-color: rgba(120, 120, 120, 0.3); transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;"></div><div class="sc-gxYJeL NntKf" style="opacity: 0; visibility: hidden; width: 4px; background: rgb(227, 242, 253); margin-left: -2px;"></div></div><div class="sc-bgqQcB cqSVCo Pane vertical workbench-desktop_splitPane__nOV1_" style="flex-basis: 400px;"><div class="sc-ewnqHT ikqMiO" style="background-color: black;"></div><div class="sc-gTRrQi bMOrrd" style="min-width: 50px;"><div class="workbench-desktop_preview__AdZiG"><div class="tabs_tabs__0p32m"><button class="tabs_tab__iUAy8 tabs_active__IguNq">Simulation</button></div><div class="simulation_container___BvyD"><div></div><div class="simulation_simulationControls__Jqtsp"><div class="MuiBox-root css-1ynyhby"><button class="MuiButtonBase-root MuiFab-root MuiFab-circular MuiFab-sizeSmall MuiFab-default MuiFab-root MuiFab-circular MuiFab-sizeSmall MuiFab-default css-1yeoas6" tabindex="0" type="button" aria-label="Start the simulation"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-vubbuv" focusable="false" aria-hidden="true" viewBox="0 0 24 24" data-testid="PlayArrowIcon"><path d="M8 5v14l11-7z"></path></svg><span class="MuiTouchRipple-root css-w0pj6f"></span></button></div><div class="MuiBox-root css-1tanlhh"><button class="MuiButtonBase-root MuiFab-root MuiFab-circular MuiFab-sizeSmall MuiFab-default MuiFab-root MuiFab-circular MuiFab-sizeSmall MuiFab-default css-7zja2y" tabindex="0" type="button" aria-label="Add a new part"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-vubbuv" focusable="false" aria-hidden="true" viewBox="0 0 24 24" data-testid="AddIcon"><path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path></svg><span class="MuiTouchRipple-root css-w0pj6f"></span></button></div><div class="MuiBox-root css-1tanlhh"><button class="MuiButtonBase-root MuiFab-root MuiFab-circular MuiFab-sizeSmall MuiFab-default MuiFab-root MuiFab-circular MuiFab-sizeSmall MuiFab-default css-1ohvc2h" tabindex="0" type="button" aria-label="Zoom, grid, and more"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-vubbuv" focusable="false" aria-hidden="true" viewBox="0 0 24 24" data-testid="MoreVertIcon"><path d="M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"></path></svg><span class="MuiTouchRipple-root css-w0pj6f"></span></button></div></div><div class="diagram-editor_viewer__mFJaI"><div tabindex="0" style="cursor: pointer; flex: 1 1 0%;"><div style="transform-origin: 0px 0px 0px; transform: matrix(0.984848, 0, 0, 0.984848, 169.47, 155.299);"><div class="react-draggable" style="transform: translate(0px, 0px);"><div class="diagram-part_diagramItem__IbJC1 diagram-part_selectable__qT1rF diagram-part_editMode__6lC9N" id="esp" data-draggable="true" wokwi-controller="board-esp32-devkit-c-v4" style="top: 9.6px; left: -100.76px; transform: rotate(0deg); text-rendering: geometricprecision; background-image: url(&quot;https://wokwi.github.io/wokwi-boards/esp32-devkit-c-v4/board.svg?v=3&quot;); width: 27.9mm; height: 56.628mm; user-select: none;"><svg width="27.9mm" height="56.628mm" style="position: absolute; top: 0px; left: 0px;"><defs><filter id="ledFilter" x="-0.8" y="-0.8" height="5.2" width="5.8"><feGaussianBlur stdDeviation="2"></feGaussianBlur></filter></defs><circle cx="6.09mm" cy="42.07mm" opacity="0" r="4" fill="red" filter="url(#ledFilter)"></circle></svg></div></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 159.2px; left: -3.9978px;"><span>esp:0</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 168.8px; left: -3.9978px;"><span>esp:2</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 149.6px; left: -3.9978px;"><span>esp:4</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 120.8px; left: -3.9978px;"><span>esp:5</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 149.6px; left: -100.149px;"><span>esp:12</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 168.8px; left: -100.149px;"><span>esp:13</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 140px; left: -100.149px;"><span>esp:14</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 178.4px; left: -3.9978px;"><span>esp:15</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 140px; left: -3.9978px;"><span>esp:16</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 130.4px; left: -3.9978px;"><span>esp:17</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 111.2px; left: -3.9978px;"><span>esp:18</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 101.6px; left: -3.9978px;"><span>esp:19</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 82.4px; left: -3.9978px;"><span>esp:21</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 53.6px; left: -3.9978px;"><span>esp:22</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 44px; left: -3.9978px;"><span>esp:23</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 111.2px; left: -100.149px;"><span>esp:25</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 120.8px; left: -100.149px;"><span>esp:26</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 130.4px; left: -100.149px;"><span>esp:27</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 92px; left: -100.149px;"><span>esp:32</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 101.6px; left: -100.149px;"><span>esp:33</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 72.8px; left: -100.149px;"><span>esp:34</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 82.4px; left: -100.149px;"><span>esp:35</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 34.4px; left: -100.149px;"><span>esp:3V3</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 44px; left: -100.149px;"><span>esp:EN</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 53.6px; left: -100.149px;"><span>esp:VP</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 63.2px; left: -100.149px;"><span>esp:VN</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 159.2px; left: -100.149px;"><span>esp:GND.1</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 178.4px; left: -100.149px;"><span>esp:D2</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 188px; left: -100.149px;"><span>esp:D3</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 197.6px; left: -100.149px;"><span>esp:CMD</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 207.2px; left: -100.149px;"><span>esp:5V</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 34.4px; left: -3.9978px;"><span>esp:GND.2</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 63.2px; left: -3.9978px;"><span>esp:TX</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 72.8px; left: -3.9978px;"><span>esp:RX</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 92px; left: -3.9978px;"><span>esp:GND.3</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 188px; left: -3.9978px;"><span>esp:D1</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 197.6px; left: -3.9978px;"><span>esp:D0</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 207.2px; left: -3.9978px;"><span>esp:CLK</span></div><div class="react-draggable" style="transform: translate(0px, 0px);"><div class="diagram-part_diagramItem__IbJC1 diagram-part_selectable__qT1rF diagram-part_editMode__6lC9N" id="oled1" data-draggable="true" wokwi-controller="board-ssd1306" style="top: 99.14px; left: 57.83px; transform: rotate(0deg); text-rendering: geometricprecision; background-image: url(&quot;https://wokwi.github.io/wokwi-boards/ssd1306/board.svg?v=3&quot;); width: 27.7mm; height: 22.6mm; user-select: none;"><svg width="27.7mm" height="22.6mm" style="position: absolute; top: 0px; left: 0px;"><defs><filter id="ledFilter" x="-0.8" y="-0.8" height="5.2" width="5.8"><feGaussianBlur stdDeviation="2"></feGaussianBlur></filter></defs></svg><canvas width="128" height="64" class="custom-board-view_pixelated__7Uq_2" style="position: absolute; background: black; left: 1.46mm; top: 5.27mm; width: 24.8mm; height: 12.4mm;"></canvas></div></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 101.603px; left: 92.0032px;"><span>oled1:GND</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 101.603px; left: 101.452px;"><span>oled1:VCC</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 101.603px; left: 110.901px;"><span>oled1:SCL</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 101.603px; left: 120.728px;"><span>oled1:SDA</span></div><svg class="diagram-editor_connections__K6X2M diagram-editor_editMode__SqnZq" fill="none" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" viewBox="-114.15 -18 256.88 141.6" width="256.88" height="141.6" style="left: -114.15px; top: -18px;"><g><path d="M114.9,105.6L114.9,61.6A4,4,-90,0,0,110.9,57.6L0,57.599999999999994" class="diagram-wires_outline__33OH_ diagram-wires_editMode__SHY0G"></path><path stroke="green" d="M114.9,105.6L114.9,61.6A4,4,-90,0,0,110.9,57.6L0,57.599999999999994"></path></g><g><path d="M124.73,105.6L124.73,90.4A4,4,-90,0,0,120.73,86.4L0,86.39999999999999" class="diagram-wires_outline__33OH_ diagram-wires_editMode__SHY0G"></path><path stroke="blue" d="M124.73,105.6L124.73,90.4A4,4,-90,0,0,120.73,86.4L0,86.39999999999999"></path></g><g><path d="M96,105.6L96,42.4A4,4,-90,0,0,92,38.4L0,38.39999999999999" class="diagram-wires_outline__33OH_ diagram-wires_editMode__SHY0G"></path><path stroke="black" d="M96,105.6L96,42.4A4,4,-90,0,0,92,38.4L0,38.39999999999999"></path></g><g><path d="M105.45,105.6L105.45,76.804A4,4,179.8880943229338,0,1,105.45,76.796L105.592,4.008A4,4,-89.8880943229338,0,0,101.592,0L-92.15,0A4,4,-90,0,0,-96.15,4L-96.14999999999999,38.4" class="diagram-wires_outline__33OH_ diagram-wires_editMode__SHY0G"></path><path stroke="red" d="M105.45,105.6L105.45,76.804A4,4,179.8880943229338,0,1,105.45,76.796L105.592,4.008A4,4,-89.8880943229338,0,0,101.592,0L-92.15,0A4,4,-90,0,0,-96.15,4L-96.14999999999999,38.4"></path></g></svg></div></div></div></div><style>
        .markdown-body {
          background: #eee;
          color: black;
          overflow: auto; /* Enable scrolling */
          padding: 1.5em;
          min-height: 100%;
        }
        .markdown-body.dark {
          background: #111;
          color: inherit;
        }
        .markdown-body.dark a {
          color: #88f;
        }
        .markdown-body.dark pre {
          background: #333;
        }

        .markdown-body::-webkit-scrollbar {
          height: 16px;
          width: 16px;
        }

        .markdown-body::-webkit-scrollbar-thumb,
        .markdown-body::-webkit-scrollbar-track {
          border: 4px solid transparent;
          border-radius: 8px;
          background-clip: padding-box;
        }

        .markdown-body::-webkit-scrollbar-thumb {
          min-height: 40px;
        }
        .markdown-body.dark::-webkit-scrollbar-thumb {
          background-color: #3d3a3a;
        }

        .markdown-body::-webkit-scrollbar-track {
          margin-bottom: 8px;
        }
        .markdown-body.dark::-webkit-scrollbar-track {
          background-color: #2a2a2a;
        }

        .markdown-body.dark table {
          color: black;
        }
      </style></div></div></div></div></div></main></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"p":{"name":"esp32-micropython-ssd1306 Copy","id":"415889950183848961","files":[{"name":"main.py","content":"https://github.com/Baongtvcine/Salamhucine/discussions/1\nhttps://github.com/Baongtvcine/Salamhucine/discussions/2\nhttps://github.com/Baongtvcine/Salamhucine/discussions/3\nhttps://github.com/Baongtvcine/Salamhucine/discussions/4\nhttps://github.com/Baongtvcine/Salamhucine/discussions/5\nhttps://github.com/Baongtvcine/Salamhucine/discussions/6\nhttps://github.com/Baongtvcine/Salamhucine/discussions/7\nhttps://github.com/Baongtvcine/Salamhucine/discussions/8\nhttps://github.com/Baongtvcine/Salamhucine/discussions/9\nhttps://github.com/Baongtvcine/Salamhucine/discussions/10\nhttps://github.com/Baongtvcine/Salamhucine/discussions/11\nhttps://github.com/Baongtvcine/Salamhucine/discussions/12\nhttps://github.com/Baongtvcine/Salamhucine/discussions/13\nhttps://github.com/Baongtvcine/Salamhucine/discussions/14\nhttps://github.com/Baongtvcine/Salamhucine/discussions/15\nhttps://github.com/Baongtvcine/Salamhucine/discussions/16\nhttps://github.com/Baongtvcine/Salamhucine/discussions/17\nhttps://github.com/Baongtvcine/Salamhucine/discussions/18\nhttps://github.com/Baongtvcine/Salamhucine/discussions/19\nhttps://github.com/Baongtvcine/Salamhucine/discussions/20\nhttps://github.com/Baongtvcine/Salamhucine/discussions/21\nhttps://github.com/Baongtvcine/Salamhucine/discussions/22\nhttps://github.com/Baongtvcine/Salamhucine/discussions/23\nhttps://github.com/Baongtvcine/Salamhucine/discussions/24\nhttps://github.com/Baongtvcine/Salamhucine/discussions/25\nhttps://github.com/Baongtvcine/Salamhucine/discussions/26\nhttps://github.com/Baongtvcine/Salamhucine/discussions/27\nhttps://github.com/Baongtvcine/Salamhucine/discussions/28\nhttps://github.com/Baongtvcine/Salamhucine/discussions/29\nhttps://github.com/Baongtvcine/Salamhucine/discussions/30\nhttps://github.com/Baongtvcine/Salamhucine/discussions/31\nhttps://github.com/Baongtvcine/Salamhucine/discussions/32\nhttps://github.com/Baongtvcine/Salamhucine/discussions/33\nhttps://github.com/Baongtvcine/Salamhucine/discussions/34\nhttps://github.com/Baongtvcine/Salamhucine/discussions/35\nhttps://github.com/Baongtvcine/Salamhucine/discussions/36\nhttps://github.com/Baongtvcine/Salamhucine/discussions/37\nhttps://github.com/Baongtvcine/Salamhucine/discussions/38\nhttps://github.com/Baongtvcine/Salamhucine/discussions/39\nhttps://github.com/Baongtvcine/Salamhucine/discussions/40\nhttps://github.com/Baongtvcine/Salamhucine/discussions/41\nhttps://github.com/Baongtvcine/Salamhucine/discussions/42\nhttps://github.com/Baongtvcine/Salamhucine/discussions/43\nhttps://github.com/Baongtvcine/Salamhucine/discussions/44\nhttps://github.com/Baongtvcine/Salamhucine/discussions/45\nhttps://github.com/Baongtvcine/Salamhucine/discussions/46\nhttps://github.com/Baongtvcine/Salamhucine/discussions/47\nhttps://github.com/Baongtvcine/Salamhucine/discussions/48\nhttps://github.com/Baongtvcine/Salamhucine/discussions/49\nhttps://github.com/Baongtvcine/Salamhucine/discussions/50\nhttps://github.com/Baongtvcine/Salamhucine/discussions/51\nhttps://github.com/Baongtvcine/Salamhucine/discussions/52\nhttps://github.com/Baongtvcine/Salamhucine/discussions/53\nhttps://github.com/Baongtvcine/Salamhucine/discussions/54\nhttps://github.com/Baongtvcine/Salamhucine/discussions/55\nhttps://github.com/Baongtvcine/Salamhucine/discussions/56\nhttps://github.com/Baongtvcine/Salamhucine/discussions/57\nhttps://github.com/Baongtvcine/Salamhucine/discussions/58\nhttps://github.com/Baongtvcine/Salamhucine/discussions/59\nhttps://github.com/Baongtvcine/Salamhucine/discussions/60"},{"name":"diagram.json","content":"{\n  \"version\": 1,\n  \"author\": \"Uri Shaked\",\n  \"editor\": \"wokwi\",\n  \"parts\": [\n    {\n      \"type\": \"board-esp32-devkit-c-v4\",\n      \"id\": \"esp\",\n      \"top\": 9.6,\n      \"left\": -100.76,\n      \"attrs\": { \"env\": \"micropython-20231005-v1.21.0\" }\n    },\n    { \"type\": \"board-ssd1306\", \"id\": \"oled1\", \"top\": 99.14, \"left\": 57.83, \"attrs\": {} }\n  ],\n  \"connections\": [\n    [ \"esp:TX\", \"$serialMonitor:RX\", \"\", [] ],\n    [ \"esp:RX\", \"$serialMonitor:TX\", \"\", [] ],\n    [ \"oled1:SCL\", \"esp:22\", \"green\", [ \"v0\" ] ],\n    [ \"oled1:SDA\", \"esp:21\", \"blue\", [ \"v-19.2\", \"h-124.73\" ] ],\n    [ \"oled1:GND\", \"esp:GND.2\", \"black\", [ \"v-67.2\", \"h-96\" ] ],\n    [ \"oled1:VCC\", \"esp:3V3\", \"red\", [ \"v-28.8\", \"h0.15\", \"v-76.8\", \"h-201.75\" ] ]\n  ],\n  \"dependencies\": {}\n}"},{"name":"ssd1306.py","content":"#MicroPython SSD1306 OLED driver, I2C and SPI interfaces created by Adafruit\r\n\r\nimport time\r\nimport framebuf\r\n\r\n# register definitions\r\nSET_CONTRAST        = const(0x81)\r\nSET_ENTIRE_ON       = const(0xa4)\r\nSET_NORM_INV        = const(0xa6)\r\nSET_DISP            = const(0xae)\r\nSET_MEM_ADDR        = const(0x20)\r\nSET_COL_ADDR        = const(0x21)\r\nSET_PAGE_ADDR       = const(0x22)\r\nSET_DISP_START_LINE = const(0x40)\r\nSET_SEG_REMAP       = const(0xa0)\r\nSET_MUX_RATIO       = const(0xa8)\r\nSET_COM_OUT_DIR     = const(0xc0)\r\nSET_DISP_OFFSET     = const(0xd3)\r\nSET_COM_PIN_CFG     = const(0xda)\r\nSET_DISP_CLK_DIV    = const(0xd5)\r\nSET_PRECHARGE       = const(0xd9)\r\nSET_VCOM_DESEL      = const(0xdb)\r\nSET_CHARGE_PUMP     = const(0x8d)\r\n\r\n\r\nclass SSD1306:\r\n    def __init__(self, width, height, external_vcc):\r\n        self.width = width\r\n        self.height = height\r\n        self.external_vcc = external_vcc\r\n        self.pages = self.height // 8\r\n        # Note the subclass must initialize self.framebuf to a framebuffer.\r\n        # This is necessary because the underlying data buffer is different\r\n        # between I2C and SPI implementations (I2C needs an extra byte).\r\n        self.poweron()\r\n        self.init_display()\r\n\r\n    def init_display(self):\r\n        for cmd in (\r\n            SET_DISP | 0x00, # off\r\n            # address setting\r\n            SET_MEM_ADDR, 0x00, # horizontal\r\n            # resolution and layout\r\n            SET_DISP_START_LINE | 0x00,\r\n            SET_SEG_REMAP | 0x01, # column addr 127 mapped to SEG0\r\n            SET_MUX_RATIO, self.height - 1,\r\n            SET_COM_OUT_DIR | 0x08, # scan from COM[N] to COM0\r\n            SET_DISP_OFFSET, 0x00,\r\n            SET_COM_PIN_CFG, 0x02 if self.height == 32 else 0x12,\r\n            # timing and driving scheme\r\n            SET_DISP_CLK_DIV, 0x80,\r\n            SET_PRECHARGE, 0x22 if self.external_vcc else 0xf1,\r\n            SET_VCOM_DESEL, 0x30, # 0.83*Vcc\r\n            # display\r\n            SET_CONTRAST, 0xff, # maximum\r\n            SET_ENTIRE_ON, # output follows RAM contents\r\n            SET_NORM_INV, # not inverted\r\n            # charge pump\r\n            SET_CHARGE_PUMP, 0x10 if self.external_vcc else 0x14,\r\n            SET_DISP | 0x01): # on\r\n            self.write_cmd(cmd)\r\n        self.fill(0)\r\n        self.show()\r\n\r\n    def poweroff(self):\r\n        self.write_cmd(SET_DISP | 0x00)\r\n\r\n    def contrast(self, contrast):\r\n        self.write_cmd(SET_CONTRAST)\r\n        self.write_cmd(contrast)\r\n\r\n    def invert(self, invert):\r\n        self.write_cmd(SET_NORM_INV | (invert \u0026 1))\r\n\r\n    def show(self):\r\n        x0 = 0\r\n        x1 = self.width - 1\r\n        if self.width == 64:\r\n            # displays with width of 64 pixels are shifted by 32\r\n            x0 += 32\r\n            x1 += 32\r\n        self.write_cmd(SET_COL_ADDR)\r\n        self.write_cmd(x0)\r\n        self.write_cmd(x1)\r\n        self.write_cmd(SET_PAGE_ADDR)\r\n        self.write_cmd(0)\r\n        self.write_cmd(self.pages - 1)\r\n        self.write_framebuf()\r\n\r\n    def fill(self, col):\r\n        self.framebuf.fill(col)\r\n\r\n    def pixel(self, x, y, col):\r\n        self.framebuf.pixel(x, y, col)\r\n\r\n    def scroll(self, dx, dy):\r\n        self.framebuf.scroll(dx, dy)\r\n\r\n    def text(self, string, x, y, col=1):\r\n        self.framebuf.text(string, x, y, col)\r\n\r\n\r\nclass SSD1306_I2C(SSD1306):\r\n    def __init__(self, width, height, i2c, addr=0x3c, external_vcc=False):\r\n        self.i2c = i2c\r\n        self.addr = addr\r\n        self.temp = bytearray(2)\r\n        # Add an extra byte to the data buffer to hold an I2C data/command byte\r\n        # to use hardware-compatible I2C transactions.  A memoryview of the\r\n        # buffer is used to mask this byte from the framebuffer operations\r\n        # (without a major memory hit as memoryview doesn't copy to a separate\r\n        # buffer).\r\n        self.buffer = bytearray(((height // 8) * width) + 1)\r\n        self.buffer[0] = 0x40  # Set first byte of data buffer to Co=0, D/C=1\r\n        self.framebuf = framebuf.FrameBuffer1(memoryview(self.buffer)[1:], width, height)\r\n        super().__init__(width, height, external_vcc)\r\n\r\n    def write_cmd(self, cmd):\r\n        self.temp[0] = 0x80 # Co=1, D/C#=0\r\n        self.temp[1] = cmd\r\n        self.i2c.writeto(self.addr, self.temp)\r\n\r\n    def write_framebuf(self):\r\n        # Blast out the frame buffer using a single I2C transaction to support\r\n        # hardware I2C interfaces.\r\n        self.i2c.writeto(self.addr, self.buffer)\r\n\r\n    def poweron(self):\r\n        pass\r\n\r\n\r\nclass SSD1306_SPI(SSD1306):\r\n    def __init__(self, width, height, spi, dc, res, cs, external_vcc=False):\r\n        self.rate = 10 * 1024 * 1024\r\n        dc.init(dc.OUT, value=0)\r\n        res.init(res.OUT, value=0)\r\n        cs.init(cs.OUT, value=1)\r\n        self.spi = spi\r\n        self.dc = dc\r\n        self.res = res\r\n        self.cs = cs\r\n        self.buffer = bytearray((height // 8) * width)\r\n        self.framebuf = framebuf.FrameBuffer1(self.buffer, width, height)\r\n        super().__init__(width, height, external_vcc)\r\n\r\n    def write_cmd(self, cmd):\r\n        self.spi.init(baudrate=self.rate, polarity=0, phase=0)\r\n        self.cs.high()\r\n        self.dc.low()\r\n        self.cs.low()\r\n        self.spi.write(bytearray([cmd]))\r\n        self.cs.high()\r\n\r\n    def write_framebuf(self):\r\n        self.spi.init(baudrate=self.rate, polarity=0, phase=0)\r\n        self.cs.high()\r\n        self.dc.high()\r\n        self.cs.low()\r\n        self.spi.write(self.buffer)\r\n        self.cs.high()\r\n\r\n    def poweron(self):\r\n        self.res.high()\r\n        time.sleep_ms(1)\r\n        self.res.low()\r\n        time.sleep_ms(10)\r\n        self.res.high()\r\n"}],"serverFiles":[],"owner":"411908379453834241","locked":false,"unlisted":false,"updated":1732882413925,"hearts":0,"userLiked":false}},"__N_SSP":true},"page":"/projects/[projectId]","query":{"projectId":"415889950183848961"},"buildId":"Jgf9C4Fm-yuItJy5IN1PL","isFallback":false,"isExperimentalCompile":false,"gssp":true,"scriptLoader":[]}</script><script defer="" src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{&quot;rayId&quot;:&quot;8ea28a098f7a6663&quot;,&quot;version&quot;:&quot;2024.10.5&quot;,&quot;serverTiming&quot;:{&quot;name&quot;:{&quot;cfExtPri&quot;:true,&quot;cfL4&quot;:true,&quot;cfSpeedBrain&quot;:true,&quot;cfCacheStatus&quot;:true}},&quot;token&quot;:&quot;c99f757ebc0f4b1faa48d9a5210dd113&quot;,&quot;b&quot;:1}" crossorigin="anonymous"></script>
<script src="https://wokwi.com/cdn/monaco-editor/0.48.0/vs/loader.js"></script><script src="https://www.googletagmanager.com/gtag/js?id=UA-150413053-5" data-nscript="afterInteractive"></script><script id="google-analytics" data-nscript="afterInteractive">
          window.dataLayer = window.dataLayer || [];
          function gtag(){window.dataLayer.push(arguments);}
          gtag('js', new Date());

          gtag('config', 'UA-150413053-5');
        </script><next-route-announcer><p aria-live="assertive" id="__next-route-announcer__" role="alert" style="border: 0px; clip: rect(0px, 0px, 0px, 0px); height: 1px; margin: -1px; overflow: hidden; padding: 0px; position: absolute; top: 0px; width: 1px; white-space: nowrap; overflow-wrap: normal;"></p></next-route-announcer><div class="context-view" aria-hidden="true" style="display: none;"></div><div class="monaco-aria-container"><div class="monaco-alert" role="alert" aria-atomic="true"></div><div class="monaco-alert" role="alert" aria-atomic="true"></div><div class="monaco-status" aria-live="polite" aria-atomic="true"></div><div class="monaco-status" aria-live="polite" aria-atomic="true"></div></div><script src="/_next/static/chunks/1354-dde8698882d588ba.js"></script><script src="/_next/static/chunks/pages/index-e6b2ed21e312ddf4.js"></script></body></html>